Data API কোড স্নিপেট

নির্দেশাবলী

ইন্টার‌্যাক্টিভ কোড স্নিপেট টুলের সাহায্যে আপনি সহজেই API অনুরোধ পরীক্ষা করতে এবং সেইসব অনুরোধের জন্য নির্দিষ্ট কোড স্যাম্পেল তৈরি করতে পারবেন। যেকোনও প্রদত্ত পদ্ধতির জন্য, টুলটি এক বা একাধিক ব্যবহারের ক্ষেত্রের জন্য কোড স্নিপেট দেখায় এবং প্রতিটি ব্যবহারের ক্ষেত্র সেই পদ্ধতি কল করার একটি সাধারণ উপায় বর্ণনা করে। যেমন, আপনি channels.list পদ্ধতি কল করে কোনও নির্দিষ্ট চ্যানেল বা বর্তমান ব্যবহারকারীর চ্যানেল সম্পর্কে ডেটা পেতে পারেন।

API সংক্রান্ত অনুরোধ কার্যকর করুন

অনুরোধ প্যারামিটারের তালিকার পাশে থাকা এক্সিকিউট করুন বোতামে ক্লিক করে আপনি অনুরোধ এক্সিকিউট করতে পারবেন। আপনার হয়ে API অনুরোধ জমা দেওয়ার জন্য আপনি আগে অ্যাপ্লিকেশনকে অনুমোদন না দিয়ে থাকলে, আপনাকে তা করতে বলা হবে। অতিরিক্ত সতর্কতা হিসেবে, আপনার অনুরোধ যদি কোনও রাইট অপারেশন পারফর্ম করে – আপনার চ্যানেলের সাথে যুক্ত রিসোর্স যোগ করা, আপডেট করা বা মুছে দেওয়া – তাহলে এটি আসলে এক্সিকিউট করার আগে আপনাকে কনফার্ম করতে বলা হবে যে আপনি অনুরোধটি এক্সিকিউট করতে চান।

কোড স্নিপেট ও সম্পূর্ণ স্যাম্পেল টগল করুন

প্রতিটি ব্যবহারের ক্ষেত্রে, টুলটি একটি কোড স্নিপেট দেখায় যা কল করা নির্দিষ্ট মেথডের জন্য নির্দিষ্ট কোড শনাক্ত করে। প্রতিটি স্নিপেট, API অনুরোধে ব্যবহৃত প্যারামিটার ও প্রপার্টি ভ্যালুর পাশাপাশি কল করা পদ্ধতিও শনাক্ত করে।

এছাড়াও, টুলটি একটি সম্পূর্ণ কোড স্যাম্পেল দেখায় যা সেই কোড স্নিপেটকে একটি টেমপ্লেটে রাখে যা API অনুরোধ অনুমোদন এবং API অনুরোধ তৈরি করার জন্য বয়লারপ্লেট ফাংশন সংজ্ঞায়িত করে। স্নিপেট ও সম্পূর্ণ স্যাম্পেলের মধ্যে পাল্টাতে, স্যাম্পেলের উপরে থাকা স্লাইডার ব্যবহার করতে পারবেন:

স্থানীয়ভাবে সম্পূর্ণ কোড স্যাম্পেল রান করুন

সম্পূর্ণ কোডের নমুনা কপি করে লোকাল ডিভাইসে চালানোর জন্য ডিজাইন করা হয়েছে। সম্পূর্ণ কোড স্যাম্পেল চালানোর জন্য নিম্নলিখিত পূর্বশর্ত ও সেট-আপ করার ধাপগুলি লক্ষ্য করুন:

Java

পূর্বশর্ত

  • Java 1.7 বা তার পরবর্তী ভার্সন
  • Gradle 2.3 বা তার পরবর্তী ভার্সন

আপনার প্রোজেক্ট সেট-আপ করুন এবং কোড স্যাম্পেল রান করান

  1. Cloud console-এ একটি প্রোজেক্ট তৈরি করুন এবং ওয়েব অ্যাপ্লিকেশনের জন্য ক্রেডেনশিয়াল সেট-আপ করুন। প্রয়োজন অনুযায়ী অনুমোদিত রিডাইরেক্ট URI সেট করুন।

  2. আপনার প্রোজেক্ট তৈরি করার জন্য API Java Quickstart Guide-এ দেওয়া নির্দেশাবলী অনুসরণ করুন, তবে ডিফল্ট build.gradle ফাইলের কন্টেন্ট নিম্নলিখিত কোড দিয়ে পরিবর্তন করুন:

    apply plugin: 'java'
    apply plugin: 'application'
    
    mainClassName = 'ApiExample'
    sourceCompatibility = 1.7
    targetCompatibility = 1.7
    version = '1.0'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile 'com.google.api-client:google-api-client:1.22.0'
        compile 'com.google.oauth-client:google-oauth-client-jetty:1.22.0'
        compile 'com.google.apis:google-api-services-youtube:v3-rev182-1.22.0'
        compile group: 'com.google.code.gson', name: 'gson', version: '1.7.2'
        compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.4.4'
    }
    
    compileJava {
        options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
    }
  3. আপনার ওয়ার্কিং ডিরেক্টরি থেকে, আপনার ক্রেডেনশিয়ালের সাথে যুক্ত client_secrets.json ফাইলটি src/main/resources/client_secret.json-এ সেভ করুন।

  4. আপনার ওয়ার্কিং ডিরেক্টরি থেকে, সম্পূর্ণ কোড স্যাম্পেল src/main/java/ApiExample.java-এ কপি করুন। (প্রতিটি স্যাম্পেলে ক্লাসের নাম হল ApiExample যাতে বিভিন্ন স্যাম্পেল চালানোর জন্য আপনাকে build.gradle ফাইলটি পরিবর্তন করতে না হয়।)

  5. কমান্ড লাইন থেকে স্যাম্পেল রান করুন:

    gradle -q run
  6. বেশিরভাগ স্যাম্পেল STDOUT-এ কিছু প্রিন্ট করে। এছাড়াও, আপনি YouTube ওয়েবসাইটে গিয়ে ডেটা লেখার অনুরোধের প্রভাব দেখতে পারেন, যেমন প্লেলিস্ট বা চ্যানেল বিভাগ তৈরি করার অনুরোধ।

জাভাস্ক্রিপ্ট
  1. Cloud Console-এ একটি প্রোজেক্ট তৈরি করুন এবং ওয়েব অ্যাপ্লিকেশনের জন্য ক্রেডেনশিয়াল সেট-আপ করুন। অনুমোদিত জাভাস্ক্রিপ্ট অরিজিন সেট করুন যাতে আপনি যে URL থেকে অনুরোধ পাঠাবেন সেটি শনাক্ত করা যায় (যেমন, http://localhost)।

  2. সম্পূর্ণ কোড স্যাম্পেলটি আপনার ওয়েব সার্ভার (যেমন, /var/www/html/example.html) অ্যাক্সেস করতে পারে এমন একটি লোকাল ফাইলে কপি করুন।

  3. কোড স্যাম্পেলে সেই লাইনটি খুঁজুন যা অনুরোধের জন্য ব্যবহার করা ক্লায়েন্ট আইডি সেট করে এবং আপনার ক্রেডেনশিয়ালের জন্য ক্লায়েন্ট আইডি দিয়ে ভ্যালুটি পরিবর্তন করুন:

    gapi.client.init({
        'clientId': 'REPLACE_ME',
  4. আপনার ব্রাউজারে ফাইলটি খুলুন (যেমন http://localhost/example.html)। ডিবাগিং কনসোল আছে এমন ব্রাউজার ব্যবহার করার সাজেশন দেওয়া হয়, যেমন Google Chrome।

  5. প্রয়োজন হলে অনুরোধ অনুমোদন করুন। অনুরোধটি অনুমোদিত হলে, ডিবাগিং কনসোলে JSON অবজেক্ট হিসেবে অনুরোধের API রেসপন্স দেখানো উচিত।

Node.js

পূর্বশর্ত

  • Node.js ইনস্টল করা থাকতে হবে।
  • npm প্যাকেজ ম্যানেজমেন্ট টুল (Node.js-এর সাথে আসে)।
  • Node.js-এর জন্য Google APIs ক্লায়েন্ট লাইব্রেরি:
    npm install googleapis --save
  • ইন্টারনেট ও ওয়েব ব্রাউজারে অ্যাক্সেস।
  • একটি Google অ্যাকাউন্ট।

আপনার প্রোজেক্ট সেট-আপ করা ও কোড স্যাম্পেল রান করা

  1. Cloud Console-এ একটি প্রোজেক্ট তৈরি করুন এবং Google Cloud Console-এ OAuth 2.0 ক্রেডেনশিয়াল সেট-আপ করুন। আপনার ক্রেডেনশিয়াল সেট-আপ করার সময়, অ্যাপ্লিকেশন ধরন অন্যান্য হিসেবে সেট করুন।

  2. আপনার ক্রেডেনশিয়ালের সাথে যুক্ত client_secret.json ফাইলটি একটি লোকাল ফাইলে সেভ করুন।

  3. client_secret.json ফাইলের মতো একই ডিরেক্টরিতে থাকা কোনও লোকাল ফাইলে সম্পূর্ণ কোড স্যাম্পেল কপি করুন (অথবা সেই ফাইলের লোকেশন সঠিকভাবে শনাক্ত করতে স্যাম্পেলটি পরিবর্তন করুন।

  4. কমান্ড লাইন থেকে স্যাম্পেল রান করুন:

    node sample.js
  5. বেশিরভাগ স্যাম্পেল STDOUT-এ কিছু প্রিন্ট করে অথবা ওয়েব অ্যাপ্লিকেশনের উদাহরণের ক্ষেত্রে, আপনি যে ওয়েবপেজ দেখছেন সেখানে প্রিন্ট করে। এছাড়াও, আপনি YouTube ওয়েবসাইট চেক করে দেখতে পারেন যে ডেটা লেখার অনুরোধের কী প্রভাব পড়ে, যেমন প্লেলিস্ট বা চ্যানেল বিভাগ তৈরি করার অনুরোধ।

Python

পূর্বশর্ত

  • Python 2.6 বা তার পরবর্তী ভার্সন
  • pip প্যাকেজ ম্যানেজমেন্ট টুল
  • Python-এর জন্য Google API ক্লায়েন্ট লাইব্রেরি:
    pip install --upgrade google-api-python-client
  • ব্যবহারকারীর অনুমোদনের জন্য google-auth, google-auth-oauthlib এবং google-auth-httplib2.
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
  • Flask Python ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক (আপনি যদি ওয়েব সার্ভার অ্যাপ্লিকেশনের জন্য Python স্যাম্পেল রান করেন)।
    pip install --upgrade flask
  • অনুরোধ HTTP লাইব্রেরি।
    pip install --upgrade requests

আপনার প্রোজেক্ট সেট-আপ করুন এবং কোড স্যাম্পেল রান করান

  1. Cloud console-এ একটি প্রোজেক্ট তৈরি করুন এবং Google Cloud console-এ OAuth 2.0 ক্রেডেনশিয়াল সেট-আপ করুন। আপনার ক্রেডেনশিয়াল সেট-আপ করার সময়, Flask Python ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক ব্যবহার করে এমন স্যাম্পেলের জন্য অ্যাপ্লিকেশনের ধরন ওয়েব অ্যাপ্লিকেশন হিসেবে সেট করুন এবং সেই ক্রেডেনশিয়ালের জন্য অনুমোদিত রিডাইরেক্ট URI সেট করুন। অন্যথায়, অ্যাপ্লিকেশনের ধরন অন্যান্য হিসেবে সেট করুন।

  2. আপনার ক্রেডেনশিয়ালের সাথে যুক্ত client_secret.json ফাইলটি একটি লোকাল ফাইলে সেভ করুন।

  3. client_secret.json ফাইলের মতো একই ডিরেক্টরিতে থাকা কোনও লোকাল ফাইলে সম্পূর্ণ কোড স্যাম্পেল কপি করুন (অথবা সেই ফাইলের লোকেশন সঠিকভাবে শনাক্ত করতে স্যাম্পেলটি পরিবর্তন করুন।

  4. কমান্ড লাইন থেকে স্যাম্পেল রান করুন:

    python sample.py
    ওয়েব সার্ভার অ্যাপ্লিকেশন উদাহরণের জন্য নোট:

    আপনি ওয়েব সার্ভার অ্যাপ্লিকেশনের জন্য Python স্যাম্পেল রান করলে, স্ক্রিপ্ট রান করার ফলে একটি লোকাল ওয়েব সার্ভার শুরু হয়। API অনুরোধ কার্যকর করতে, আপনাকে ব্রাউজারে পরিবেশিত ওয়েব পেজে যেতে হবে। যেমন, Flask ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক ব্যবহার করে এমন Python স্যাম্পেলে এই ধরনের লাইন থাকে:

    app.run('localhost', 8080, debug=True)

    এই কোড http://localhost:8080-এ লোকাল ওয়েব সার্ভার চালু করে। তবে, আপনি ব্রাউজারে http://localhost:8080-এ নেভিগেট না করা পর্যন্ত স্ক্রিপ্টটি API অনুরোধ কার্যকর করার চেষ্টা করে না। (আপনার স্থানীয় সার্ভারের URL-ও আপনার অনুমোদনের ক্রেডেনশিয়ালের জন্য অনুমোদিত রিডাইরেক্ট URI হিসেবে সেট করতে হবে।)
  5. বেশিরভাগ স্যাম্পেল STDOUT প্রিন্ট করে অথবা ওয়েব অ্যাপ্লিকেশন সংক্রান্ত উদাহরণের ক্ষেত্রে, আপনি যে ওয়েবপেজ দেখছেন সেখানে প্রিন্ট করে। এছাড়াও, আপনি YouTube ওয়েবসাইটে গিয়ে ডেটা লেখার অনুরোধের প্রভাব দেখতে পারেন, যেমন প্লেলিস্ট বা চ্যানেল বিভাগ তৈরি করার অনুরোধ।

ফিলিপিনো পেসো (PHP)

পূর্বশর্ত

  • কমান্ড-লাইন ইন্টারফেস (CLI) এবং JSON এক্সটেনশন ইনস্টল করা সহ PHP 5.4 বা তার পরবর্তী ভার্সন।
  • Composer ডিপেন্ডেন্সি ম্যানেজমেন্ট টুল।
  • PHP-এর জন্য Google API ক্লায়েন্ট লাইব্রেরি:
    php composer.phar require google/apiclient:^2.0

আপনার প্রোজেক্ট সেট-আপ করা ও কোড স্যাম্পেল রান করা

  1. Cloud Console-এ একটি প্রোজেক্ট তৈরি করুন এবং Google Cloud Console-এ OAuth 2.0 ক্রেডেনশিয়াল সেট-আপ করুন। আপনার ক্রেডেনশিয়াল সেট-আপ করার সময়, অ্যাপ্লিকেশন ধরন অন্যান্য হিসেবে সেট করুন।

  2. আপনার ক্রেডেনশিয়ালের সাথে যুক্ত client_secret.json ফাইলটি একটি লোকাল ফাইলে সেভ করুন।

  3. client_secret.json ফাইলের মতো একই ডিরেক্টরিতে থাকা কোনও লোকাল ফাইলে সম্পূর্ণ কোড স্যাম্পেল কপি করুন (অথবা সেই ফাইলের লোকেশন সঠিকভাবে শনাক্ত করতে স্যাম্পেলটি পরিবর্তন করুন।

  4. কমান্ড লাইন থেকে স্যাম্পেল রান করুন:

    php sample.php
  5. বেশিরভাগ স্যাম্পেল STDOUT প্রিন্ট করে অথবা ওয়েব অ্যাপ্লিকেশন সংক্রান্ত উদাহরণের ক্ষেত্রে, আপনি যে ওয়েবপেজ দেখছেন সেখানে প্রিন্ট করে। এছাড়াও, আপনি YouTube ওয়েবসাইটে গিয়ে ডেটা লেখার অনুরোধের প্রভাব দেখতে পারেন, যেমন প্লেলিস্ট বা চ্যানেল বিভাগ তৈরি করার অনুরোধ।

Ruby

পূর্বশর্ত

  • Ruby 2.0 বা তার পরবর্তী যেকোনও ভার্সন
  • Ruby-এর জন্য Google API ক্লায়েন্ট লাইব্রেরি:
    gem install google-api-client

আপনার প্রোজেক্ট সেট-আপ করুন এবং কোড স্যাম্পেল রান করান

  1. Cloud Console-এ একটি প্রোজেক্ট তৈরি করুন এবং Google Cloud Console-এ OAuth 2.0 ক্রেডেনশিয়াল সেট-আপ করুন। আপনার ক্রেডেনশিয়াল সেট-আপ করার সময়, অ্যাপ্লিকেশনের ধরন অন্যান্য হিসেবে সেট করুন।

  2. আপনার ক্রেডেনশিয়ালের সাথে যুক্ত client_secret.json ফাইলটি একটি লোকাল ফাইলে সেভ করুন।

  3. client_secret.json ফাইলের মতো একই ডিরেক্টরিতে থাকা কোনও লোকাল ফাইলে সম্পূর্ণ কোড স্যাম্পেল কপি করুন (অথবা সেই ফাইলের লোকেশন সঠিকভাবে শনাক্ত করতে স্যাম্পেলটি পরিবর্তন করুন।

  4. কমান্ড লাইন থেকে স্যাম্পেল রান করুন:

    ruby sample.rb
  5. বেশিরভাগ স্যাম্পেল STDOUT-এ কিছু প্রিন্ট করে অথবা ওয়েব অ্যাপ্লিকেশনের উদাহরণের ক্ষেত্রে, আপনি যে ওয়েবপেজ দেখছেন সেখানে প্রিন্ট করে। এছাড়াও, আপনি YouTube ওয়েবসাইটে গিয়ে ডেটা লেখার অনুরোধের প্রভাব দেখতে পারেন, যেমন প্লেলিস্ট বা চ্যানেল বিভাগ তৈরি করার অনুরোধ।

Apps স্ক্রিপ্ট
YouTube ফিচার চালু করতে উন্নত Google পরিষেবা চালু করার জন্য নির্দেশাবলী অনুসরণ করুন।
শুরু করুন
  1. Cloud Console-এ একটি প্রোজেক্ট তৈরি করুন এবং Google Cloud Console-এ OAuth 2.0 ক্রেডেনশিয়াল সেট-আপ করুন। আপনার ক্রেডেনশিয়াল সেট-আপ করার সময়, অ্যাপ্লিকেশন ধরন অন্যান্য হিসেবে সেট করুন।

  2. আপনার ক্রেডেনশিয়ালের সাথে যুক্ত client_secret.json ফাইলটি একটি লোকাল ফাইলে সেভ করুন।

  3. client_secret.json ফাইলের মতো একই ডিরেক্টরিতে থাকা কোনও লোকাল ফাইলে সম্পূর্ণ কোড স্যাম্পেল কপি করুন (অথবা সেই ফাইলের লোকেশন সঠিকভাবে শনাক্ত করতে স্যাম্পেলটি পরিবর্তন করুন।

  4. কমান্ড লাইন থেকে স্যাম্পেল রান করুন:

    go run sample.go
  5. বেশিরভাগ স্যাম্পেল STDOUT-এ কিছু প্রিন্ট করে অথবা ওয়েব অ্যাপ্লিকেশনের উদাহরণের ক্ষেত্রে, আপনি যে ওয়েবপেজ দেখছেন সেখানে প্রিন্ট করে। এছাড়াও, আপনি YouTube ওয়েবসাইটে গিয়ে ডেটা লেখার অনুরোধের প্রভাব দেখতে পারেন, যেমন প্লেলিস্ট বা চ্যানেল বিভাগ তৈরি করার অনুরোধ।

বয়লারপ্লেট ফাংশন ব্যবহার করা

উপরে উল্লেখ করা হয়েছে যে, সম্পূর্ণ কোড স্যাম্পেল API অনুরোধ অনুমোদন ও কনস্ট্রাক্ট করার জন্য বয়লারপ্লেট কোড ব্যবহার করে। যেমন, Python স্যাম্পেলে build_resource ফাংশন একটি ডিকশনারি ব্যবহার করে যা রিসোর্স প্রপার্টিকে তাদের ভ্যালুতে ম্যাপ করে এমন একটি রিসোর্স তৈরি করে যা যোগ বা আপডেট করা যেতে পারে। জাভাস্ক্রিপ্ট, PHP, Ruby, Go এবং অ্যাপ স্ক্রিপ্টের জন্য একই ধরনের ফাংশন প্রদান করা হয়।

যেমন, নিচের ট্যাবগুলি দেখায় যে কীভাবে রিসোর্স তৈরি করার জন্য বয়লারপ্লেট ফাংশনগুলিকে একটি playlist রিসোর্স তৈরি করতে বলা হবে। মনে রাখবেন, কী ধরনের রিসোর্স তৈরি করা হচ্ছে তা বয়লারপ্লেট ফাংশনকে জানতে হয় না।

জাভাস্ক্রিপ্ট
function createResource(properties) {
  var resource = {};
  var normalizedProps = properties;
  for (var p in properties) {
    var value = properties[p];
    if (p && p.substr(-2, 2) == '[]') {
      var adjustedName = p.replace('[]', '');
      if (value) {
        normalizedProps[adjustedName] = value.split(',');
      }
      delete normalizedProps[p];
    }
  }
  for (var p in normalizedProps) {
    // Leave properties that don't have values out of inserted resource.
    if (normalizedProps.hasOwnProperty(p) && normalizedProps[p]) {
      var propArray = p.split('.');
      var ref = resource;
      for (var pa = 0; pa < propArray.length; pa++) {
        var key = propArray[pa];
        if (pa == propArray.length - 1) {
          ref[key] = normalizedProps[p];
        } else {
          ref = ref[key] = ref[key] || {};
        }
      }
    };
  }
  return resource;
}
var resource = createResource({
    'snippet.title': 'Sample playlist ',
    'snippet.description': 'This is a sample playlist description.',
    'snippet.tags[]': 'JavaScript code, interactive',
    'snippet.defaultLanguage': '',
    'status.privacyStatus': 'private'
}
Python
# Build a resource based on a list of properties given as key-value pairs.
# Leave properties with empty values out of the inserted resource.
def build_resource(properties):
  resource = {}
  for p in properties:
    # Given a key like "snippet.title", split into "snippet" and "title", where
    # "snippet" will be an object and "title" will be a property in that object.
    prop_array = p.split('.')
    ref = resource
    for pa in range(0, len(prop_array)):
      is_array = False
      key = prop_array[pa]
      # Convert a name like "snippet.tags[]" to snippet.tags, but handle
      # the value as an array.
      if key[-2:] == '[]':
        key = key[0:len(key)-2:]
        is_array = True
      if pa == (len(prop_array) - 1):
        # Leave properties without values out of inserted resource.
        if properties[p]:
          if is_array:
            ref[key] = properties[p].split(',')
          else:
            ref[key] = properties[p]
      elif key not in ref:
        # For example, the property is "snippet.title", but the resource does
        # not yet have a "snippet" object. Create the snippet object here.
        # Setting "ref = ref[key]" means that in the next time through the
        # "for pa in range ..." loop, we will be setting a property in the
        # resource's "snippet" object.
        ref[key] = {}
        ref = ref[key]
      else:
        # For example, the property is "snippet.description", and the resource
        # already has a "snippet" object.
        ref = ref[key]
  return resource

resource = build_resource({
    'snippet.title': 'Sample playlist ',
    'snippet.description': 'This is a sample playlist description.',
    'snippet.tags[]': 'Python code, interactive',
    'snippet.defaultLanguage': '',
    'status.privacyStatus': 'private'}
  
PHP
// Add a property to the resource.
function addPropertyToResource(&$ref, $property, $value) {
    $keys = explode(".", $property);
    $is_array = false;
    foreach ($keys as $key) {
        // Convert a name like "snippet.tags[]" to "snippet.tags" and
        // set a boolean variable to handle the value like an array.
        if (substr($key, -2) == "[]") {
            $key = substr($key, 0, -2);
            $is_array = true;
        }
        $ref = &$ref[$key];
    }

    // Set the property value. Make sure array values are handled properly.
    if ($is_array && $value) {
        $ref = $value;
        $ref = explode(",", $value);
    } elseif ($is_array) {
        $ref = array();
    } else {
        $ref = $value;
    }
}

// Build a resource based on a list of properties given as key-value pairs.
function createResource($properties) {
    $resource = array();
    foreach ($properties as $prop => $value) {
        if ($value) {
            addPropertyToResource($resource, $prop, $value);
        }
    }
    return $resource;
}

$propertyObject = createResource(array(
    'snippet.title' => 'Sample playlist ',
    'snippet.description' => 'This is a sample playlist description.',
    'snippet.tags[]' => 'Python code, interactive',
    'snippet.defaultLanguage' => '',
    'status.privacyStatus' => 'private'));
Ruby
# Build a resource based on a list of properties given as key-value pairs.
def create_resource(properties)
  resource = {}
  properties.each do |prop, value|
    ref = resource
    prop_array = prop.to_s.split(".")
    for p in 0..(prop_array.size - 1)
      is_array = false
      key = prop_array[p]
      if key[-2,2] == "[]"
        key = key[0...-2]
        is_array = true
      end
      if p == (prop_array.size - 1)
        if is_array
          if value == ""
            ref[key.to_sym] = []
          else
            ref[key.to_sym] = value.split(",")
          end
        elsif value != ""
          ref[key.to_sym] = value
        end
      elsif ref.include?(key.to_sym)
        ref = ref[key.to_sym]
      else
        ref[key.to_sym] = {}
        ref = ref[key.to_sym]
      end
    end
  end
  return resource
end

resource = create_resource({
    'snippet.title': 'Sample playlist ',
    'snippet.description': 'This is a sample playlist description.',
    'snippet.tags[]': 'Ruby code, interactive',
    'snippet.default_language': '',
    'status.privacy_status': 'private'})
Apps Script
// Build an object from an object containing properties as key-value pairs
function createResource(properties) {
  var res = {};
  var normalizedProps = {};
  for (var p in properties) {
    var value = properties[p];
    if (p.substr(-2, 2) == '[]' && value) {
      var adjustedName = p.replace('[]', '');
      normalizedProps[adjustedName] = value.split(',');
    } else {
      normalizedProps[p] = value;
    }
  }
  for (var p in normalizedProps) {
    if (normalizedProps.hasOwnProperty(p) && normalizedProps[p]) {
      var propArray = p.split('.');
      var ref = res;
      for (var pa = 0; pa < propArray.length; pa++) {
        var key = propArray[pa];
        if (pa == propArray.length - 1) {
          ref[key] = normalizedProps[p];
        } else {
          ref = ref[key] = ref[key] || {};
        }
      }
    };
  }
  return res;
}

var resource = createResource({
    'snippet.title': 'Sample playlist ',
    'snippet.description': 'This is a sample playlist description.',
    'snippet.tags[]': 'Apps Script code, interactive',
    'snippet.defaultLanguage': '',
    'status.privacyStatus': 'private'
});
শুরু করুন
func addPropertyToResource(ref map[string]interface{}, keys []string, value string, count int) map[string]interface{} {
        for k := count; k < (len(keys) - 1); k++ {
                switch val := ref[keys[k]].(type) {
                case map[string]interface{}:
                        ref[keys[k]] = addPropertyToResource(val, keys, value, (k + 1))
                case nil:
                        next := make(map[string]interface{})
                        ref[keys[k]] = addPropertyToResource(next, keys, value, (k + 1))
                }
        }
        // Only include properties that have values.
        if (count == len(keys) - 1 && value != "") {
                valueKey := keys[len(keys)-1]
                if valueKey[len(valueKey)-2:] == "[]" {
                        ref[valueKey[0:len(valueKey)-2]] = strings.Split(value, ",")
                } else if len(valueKey) > 4 && valueKey[len(valueKey)-4:] == "|int" {
                        ref[valueKey[0:len(valueKey)-4]], _ = strconv.Atoi(value)
                } else if value == "true" {
                        ref[valueKey] = true
                } else if value == "false" {
                        ref[valueKey] = false
                } else {
                        ref[valueKey] = value
                }
        }
        return ref
}

func createResource(properties map[string]string) string {
        resource := make(map[string]interface{})
        for key, value := range properties {
                keys := strings.Split(key, ".")
                ref := addPropertyToResource(resource, keys, value, 0)
                resource = ref
        }
        propJson, err := json.Marshal(resource)
        if err != nil {
               log.Fatal("cannot encode to JSON ", err)
        }
        return string(propJson)
}

func main() {
        properties := (map[string]string{
                 "snippet.title": "Sample playlist ",
                 "snippet.description": "This is a sample playlist description.",
                 "snippet.tags[]": "Go code, interactive",
                 "snippet.defaultLanguage": "",
                 "status.privacyStatus": "private",
        })
        res := createResource(properties)

আগে থেকে থাকা রিসোর্স লোড করুন

আগে থেকে থাকা রিসোর্স আপডেট করার অনুরোধ পরীক্ষা করতে, আপনি আপডেট ফর্মে সেই রিসোর্সের বর্তমান প্রপার্টি মান লোড করতে পারেন। যেমন, কোনও ভিডিওর মেটাডেটা আপডেট করতে, id প্রপার্টি ফিল্ডে ভিডিও আইডি লিখুন এবং রিসোর্স লোড করুন বোতামে ক্লিক করুন। বর্তমান প্রপার্টির ভ্যালু ফর্মে লোড হয় এবং আপনি শুধু সেইসব ভ্যালু আপডেট করতে পারবেন যেগুলি পরিবর্তন করতে চান।