API অনুরোধের প্যারামিটারের সাথে মেলে এমন প্লেলিস্ট আইটেমের সংগ্রহ প্রদান করে। আপনি নির্দিষ্ট প্লেলিস্টের সব আইটেম রিট্রিভ করতে পারবেন অথবা অনন্য আইডি ব্যবহার করে এক বা একাধিক প্লেলিস্ট আইটেম রিট্রিভ করতে পারবেন।
কোটার উপর প্রভাব: এই পদ্ধতিতে কল করলে ১ ইউনিট কোটা খরচ হয়।
সাধারণ ব্যবহারিক প্রয়োগ
অনুরোধ করুন
HTTP অনুরোধ
GET https://www.googleapis.com/youtube/v3/playlistItems
প্যারামিটারগুলি
এই কোয়েরিতে যেসব প্যারামিটার কাজ করে তা নিম্নলিখিত সারণীতে দেওয়া হল। তালিকায় থাকা সব প্যারামিটারই হল কোয়েরি প্যারামিটার।
| প্যারামিটারগুলি | ||
|---|---|---|
| প্রয়োজনীয় প্যারামিটার | ||
part |
stringpart প্যারামিটার এক বা একাধিক playlistItem রিসোর্স প্রপার্টির কমা দ্বারা আলাদা করা তালিকা নির্দিষ্ট করে যা API রেসপন্সে অন্তর্ভুক্ত করা হবে।প্যারামিটারটি যদি এমন কোনও প্রপার্টি শনাক্ত করে যাতে চাইল্ড প্রপার্টি আছে, তাহলে চাইল্ড প্রপার্টিগুলি রেসপন্সে অন্তর্ভুক্ত করা হবে। যেমন, playlistItem রিসোর্সে, snippet প্রপার্টিতে title, description, position ও resourceId প্রপার্টি সহ অসংখ্য ফিল্ড থাকে। যেমন, আপনি part=snippet সেট করলে, API রেসপন্সে এইসব প্রপার্টি থাকবে।প্যারামিটারের মানে আপনি অন্তর্ভুক্ত করতে পারবেন এমন part নাম নিম্নলিখিত তালিকায় রয়েছে:
|
|
| ফিল্টার (নিম্নলিখিত প্যারামিটারগুলির মধ্যে ঠিক একটি নির্দিষ্ট করুন) | ||
id |
stringid প্যারামিটারটি এক বা একাধিক অনন্য প্লেলিস্ট আইটেম আইডির কমা-সেপারেটেড তালিকা নির্দিষ্ট করে। |
|
playlistId |
stringplaylistId প্যারামিটারটি সেই প্লেলিস্টের অনন্য আইডি নির্দিষ্ট করে যার জন্য আপনি প্লেলিস্ট আইটেমগুলি পুনরুদ্ধার করতে চান। মনে রাখবেন, এটি একটি ঐচ্ছিক প্যারামিটার হলেও, প্লেলিস্ট আইটেম ফিরিয়ে আনার প্রতিটি অনুরোধে id প্যারামিটার বা playlistId প্যারামিটারের জন্য একটি মান নির্দিষ্ট করতে হবে। |
|
| ঐচ্ছিক প্যারামিটার | ||
maxResults |
unsigned integermaxResults প্যারামিটারটি ফলাফলের সেটে সর্বাধিক কতগুলি আইটেম রিটার্ন করা উচিত তা নির্দিষ্ট করে। 0 থেকে 50 পর্যন্ত ভ্যালু ব্যবহার করা যাবে। ডিফল্ট মান হল 5। |
|
onBehalfOfContentOwner |
stringএই প্যারামিটার শুধুমাত্র সঠিকভাবে অনুমোদিত অনুরোধে ব্যবহার করা যেতে পারে। মনে রাখবেন: এই প্যারামিটারটি শুধুমাত্র YouTube কন্টেন্ট পার্টনারদের জন্য তৈরি করা হয়েছে। onBehalfOfContentOwner প্যারামিটারটি ইঙ্গিত করে যে অনুরোধের অনুমোদনের ক্রেডেনশিয়াল একটি YouTube CMS ব্যবহারকারীকে শনাক্ত করে যিনি প্যারামিটার ভ্যালুতে নির্দিষ্ট করা কন্টেন্টের মালিকের হয়ে কাজ করছেন। এই প্যারামিটারটি YouTube কন্টেন্ট পার্টনারদের জন্য তৈরি করা হয়েছে যারা একাধিক YouTube চ্যানেলের মালিকানা ও ম্যানেজমেন্ট করেন। এটি কন্টেন্টের মালিকদের একবার যাচাই করিয়ে নিয়ে তাদের সব ভিডিও ও চ্যানেল ডেটা অ্যাক্সেস করতে দেয়। এর জন্য প্রতিটি আলাদা আলাদা চ্যানেলের জন্য যাচাইকরণের ক্রেডেনশিয়াল দিতে হয় না। ব্যবহারকারী যে CMS অ্যাকাউন্ট দিয়ে যাচাইকরণ করবেন সেটি অবশ্যই নির্দিষ্ট YouTube কন্টেন্ট মালিকের সাথে লিঙ্ক করা থাকতে হবে। |
|
pageToken |
stringpageToken প্যারামিটারটি ফলাফল সেটের একটি নির্দিষ্ট পৃষ্ঠা শনাক্ত করে যা ফেরত দেওয়া উচিত। API উত্তরের মধ্যে, nextPageToken এবং prevPageToken প্রপার্টি, অন্যান্য যেসব পৃষ্ঠা রিট্রিভ করা যেতে পারে সেগুলিকে শনাক্ত করে। |
|
videoId |
stringvideoId প্যারামিটার নির্দিষ্ট করে যে অনুরোধে শুধুমাত্র সেইসব প্লেলিস্ট আইটেম রিটার্ন করা উচিত যেগুলিতে নির্দিষ্ট ভিডিও আছে। |
|
অনুরোধের বডি
এই মেথড কল করার সময় কোনও অনুরোধ বডি প্রদান করবেন না।
রেসপন্স
সফল হলে, এই পদ্ধতিটি নিম্নলিখিত স্ট্রাকচার সহ একটি রেসপন্স বডি প্রদান করে:
{
"kind": "youtube#playlistItemListResponse",
"etag": etag,
"nextPageToken": string,
"prevPageToken": string,
"pageInfo": {
"totalResults": integer,
"resultsPerPage": integer
},
"items": [
playlistItem Resource
]
}প্রপার্টি
নিম্নলিখিত সারণীতে এই রিসোর্সে দেখানো প্রপার্টিগুলি সংজ্ঞায়িত করা হয়েছে:
| প্রপার্টি | |
|---|---|
kind |
stringAPI রিসোর্সের ধরন শনাক্ত করে। ভ্যালু youtube#playlistItemListResponse হবে। |
etag |
etagএই রিসোর্সের Etag. |
nextPageToken |
stringফলাফলের সেটে পরবর্তী পৃষ্ঠাটি পেতে pageToken প্যারামিটারের ভ্যালু হিসেবে ব্যবহার করা যেতে পারে এমন টোকেন। |
prevPageToken |
stringফলাফলের সেটে আগের পৃষ্ঠাটি পেতে pageToken প্যারামিটারের ভ্যালু হিসেবে ব্যবহার করা যেতে পারে এমন টোকেন। |
pageInfo |
objectpageInfo অবজেক্টটি ফলাফল সেটের জন্য পেজিং তথ্য এনক্যাপসুলেট করে। |
pageInfo.totalResults |
integerফলাফলের সেটে মোট ফলাফলের সংখ্যা। |
pageInfo.resultsPerPage |
integerAPI রেসপন্সে অন্তর্ভুক্ত ফলাফলের সংখ্যা। |
items[] |
listঅনুরোধের মাপকাঠি পূরণ করে এমন প্লেলিস্ট আইটেমের তালিকা। |
উদাহরণ
মনে রাখবেন: নিম্নলিখিত কোডের স্যাম্পেল সব কার্যকরী প্রোগ্রামিং ল্যাঙ্গুয়েজের বর্ণনা নাও করতে পারে। কোন কোন ভাষায় কাজ করে তার তালিকা পেতে ক্লায়েন্ট লাইব্রেরি ডকুমেন্টেশন দেখুন।
খুলুন
এই কোড স্যাম্পেল API-এরplaylistItems.list পদ্ধতিকে কল করে যাতে অনুরোধের সাথে যুক্ত চ্যানেলে আপলোড করা ভিডিওর তালিকা
ফেরত পাওয়া যায়। এছাড়াও, কোডটি channels.list
মেথডকে কল করে, যেখানে mine প্যারামিটারটি true হিসেবে সেট করা থাকে। এর ফলে, চ্যানেলের আপলোড করা ভিডিও শনাক্তকারী
প্লেলিস্ট আইডি পাওয়া যায়।
এই উদাহরণে Go ক্লায়েন্ট লাইব্রেরি ব্যবহার করা হয়।
package main import ( "fmt" "log" "google.golang.org/api/youtube/v3" ) // Retrieve playlistItems in the specified playlist func playlistItemsList(service *youtube.Service, part string, playlistId string, pageToken string) *youtube.PlaylistItemListResponse { call := service.PlaylistItems.List(part) call = call.PlaylistId(playlistId) if pageToken != "" { call = call.PageToken(pageToken) } response, err := call.Do() handleError(err, "") return response } // Retrieve resource for the authenticated user's channel func channelsListMine(service *youtube.Service, part string) *youtube.ChannelListResponse { call := service.Channels.List(part) call = call.Mine(true) response, err := call.Do() handleError(err, "") return response } func main() { client := getClient(youtube.YoutubeReadonlyScope) service, err := youtube.New(client) if err != nil { log.Fatalf("Error creating YouTube client: %v", err) } response := channelsListMine(service, "contentDetails") for _, channel := range response.Items { playlistId := channel.ContentDetails.RelatedPlaylists.Uploads // Print the playlist ID for the list of uploaded videos. fmt.Printf("Videos in list %s\r\n", playlistId) nextPageToken := "" for { // Retrieve next set of items in the playlist. playlistResponse := playlistItemsList(service, "snippet", playlistId, nextPageToken) for _, playlistItem := range playlistResponse.Items { title := playlistItem.Snippet.Title videoId := playlistItem.Snippet.ResourceId.VideoId fmt.Printf("%v, (%v)\r\n", title, videoId) } // Set the token to retrieve the next page of results // or exit the loop if all results have been retrieved. nextPageToken = playlistResponse.NextPageToken if nextPageToken == "" { break } fmt.Println() } } }
.NET
নিম্নলিখিত কোড স্যাম্পেল, অনুরোধের সাথে যুক্ত চ্যানেলে আপলোড করা ভিডিওর তালিকা ফিরিয়ে আনতে, API-এরplaylistItems.list পদ্ধতিকে কল করে। এছাড়াও, কোডটি channels.list মেথডকে কল করে, যার মধ্যে
mine প্যারামিটারটি true হিসেবে সেট করা থাকে। এটি চ্যানেলের আপলোড করা
ভিডিও শনাক্তকারী প্লেলিস্ট আইডিকে রিট্রিভ করে।
এই উদাহরণে .NET ক্লায়েন্ট লাইব্রেরি ব্যবহার করা হয়েছে।
using System; using System.IO; using System.Reflection; using System.Threading; using System.Threading.Tasks; using Google.Apis.Auth.OAuth2; using Google.Apis.Services; using Google.Apis.Upload; using Google.Apis.Util.Store; using Google.Apis.YouTube.v3; using Google.Apis.YouTube.v3.Data; namespace Google.Apis.YouTube.Samples { /// <summary> /// YouTube Data API v3 sample: retrieve my uploads. /// Relies on the Google APIs Client Library for .NET, v1.7.0 or higher. /// See https://developers.google.com/api-client-library/dotnet/get_started /// </summary> internal class MyUploads { [STAThread] static void Main(string[] args) { Console.WriteLine("YouTube Data API: My Uploads"); Console.WriteLine("============================"); try { new MyUploads().Run().Wait(); } catch (AggregateException ex) { foreach (var e in ex.InnerExceptions) { Console.WriteLine("Error: " + e.Message); } } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } private async Task Run() { UserCredential credential; using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read)) { credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, // This OAuth 2.0 access scope allows for read-only access to the authenticated // user's account, but not other types of account access. new[] { YouTubeService.Scope.YoutubeReadonly }, "user", CancellationToken.None, new FileDataStore(this.GetType().ToString()) ); } var youtubeService = new YouTubeService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = this.GetType().ToString() }); var channelsListRequest = youtubeService.Channels.List("contentDetails"); channelsListRequest.Mine = true; // Retrieve the contentDetails part of the channel resource for the authenticated user's channel. var channelsListResponse = await channelsListRequest.ExecuteAsync(); foreach (var channel in channelsListResponse.Items) { // From the API response, extract the playlist ID that identifies the list // of videos uploaded to the authenticated user's channel. var uploadsListId = channel.ContentDetails.RelatedPlaylists.Uploads; Console.WriteLine("Videos in list {0}", uploadsListId); var nextPageToken = ""; while (nextPageToken != null) { var playlistItemsListRequest = youtubeService.PlaylistItems.List("snippet"); playlistItemsListRequest.PlaylistId = uploadsListId; playlistItemsListRequest.MaxResults = 50; playlistItemsListRequest.PageToken = nextPageToken; // Retrieve the list of videos uploaded to the authenticated user's channel. var playlistItemsListResponse = await playlistItemsListRequest.ExecuteAsync(); foreach (var playlistItem in playlistItemsListResponse.Items) { // Print information about each video. Console.WriteLine("{0} ({1})", playlistItem.Snippet.Title, playlistItem.Snippet.ResourceId.VideoId); } nextPageToken = playlistItemsListResponse.NextPageToken; } } } } }
Ruby
এই স্যাম্পেলটি API-এরplaylistItems.list পদ্ধতিকে কল করে যাতে অনুরোধের সাথে যুক্ত চ্যানেলে আপলোড করা ভিডিওর তালিকা ফিরিয়ে আনা যায়। এছাড়াও, কোডটি channels.list মেথডকে কল করে এবং চ্যানেলের
আপলোড করা ভিডিও শনাক্তকারী প্লেলিস্ট আইডি পেতে mine প্যারামিটারকে true হিসেবে সেট করে।
এই উদাহরণে Ruby ক্লায়েন্ট লাইব্রেরি ব্যবহার করা হয়েছে।
#!/usr/bin/ruby require 'rubygems' gem 'google-api-client', '>0.7' require 'google/api_client' require 'google/api_client/client_secrets' require 'google/api_client/auth/file_storage' require 'google/api_client/auth/installed_app' # This OAuth 2.0 access scope allows for read-only access to the authenticated # user's account, but not other types of account access. YOUTUBE_READONLY_SCOPE = 'https://www.googleapis.com/auth/youtube.readonly' YOUTUBE_API_SERVICE_NAME = 'youtube' YOUTUBE_API_VERSION = 'v3' def get_authenticated_service client = Google::APIClient.new( :application_name => $PROGRAM_NAME, :application_version => '1.0.0' ) youtube = client.discovered_api(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION) file_storage = Google::APIClient::FileStorage.new("#{$PROGRAM_NAME}-oauth2.json") if file_storage.authorization.nil? client_secrets = Google::APIClient::ClientSecrets.load flow = Google::APIClient::InstalledAppFlow.new( :client_id => client_secrets.client_id, :client_secret => client_secrets.client_secret, :scope => [YOUTUBE_READONLY_SCOPE] ) client.authorization = flow.authorize(file_storage) else client.authorization = file_storage.authorization end return client, youtube end def main client, youtube = get_authenticated_service begin # Retrieve the "contentDetails" part of the channel resource for the # authenticated user's channel. channels_response = client.execute!( :api_method => youtube.channels.list, :parameters => { :mine => true, :part => 'contentDetails' } ) channels_response.data.items.each do |channel| # From the API response, extract the playlist ID that identifies the list # of videos uploaded to the authenticated user's channel. uploads_list_id = channel['contentDetails']['relatedPlaylists']['uploads'] # Retrieve the list of videos uploaded to the authenticated user's channel. next_page_token = '' until next_page_token.nil? playlistitems_response = client.execute!( :api_method => youtube.playlist_items.list, :parameters => { :playlistId => uploads_list_id, :part => 'snippet', :maxResults => 50, :pageToken => next_page_token } ) puts "Videos in list #{uploads_list_id}" # Print information about each video. playlistitems_response.data.items.each do |playlist_item| title = playlist_item['snippet']['title'] video_id = playlist_item['snippet']['resourceId']['videoId'] puts "#{title} (#{video_id})" end next_page_token = playlistitems_response.next_page_token end puts end rescue Google::APIClient::TransmissionError => e puts e.result.body end end main
সমস্যা
এই পদ্ধতিতে কল করার উত্তরে API যেসব সমস্যার মেসেজ রিটার্ন করতে পারে, তা নিম্নলিখিত সারণীতে শনাক্ত করা হয়েছে। আরও বিবরণের জন্য সমস্যার মেসেজ সংক্রান্ত ডকুমেন্টেশন দেখুন।
| সমস্যার ধরন | সমস্যার বিবরণ | বিবরণ |
|---|---|---|
forbidden (403) |
playlistItemsNotAccessible |
নির্দিষ্ট প্লেলিস্ট ফিরিয়ে আনার জন্য অনুরোধটি সঠিকভাবে অনুমোদিত নয়। |
forbidden (403) |
watchHistoryNotAccessible |
API-এর মাধ্যমে দেখার ইতিহাস সংক্রান্ত ডেটা ফিরিয়ে আনা যাবে না। |
forbidden (403) |
watchLaterNotAccessible |
"পরে দেখুন" প্লেলিস্টে থাকা আইটেম API-এর মাধ্যমে ফিরিয়ে আনা যাবে না। |
notFound (404) |
playlistNotFound |
অনুরোধের playlistId প্যারামিটার দিয়ে শনাক্ত করা প্লেলিস্ট খুঁজে পাওয়া যায়নি। |
notFound (404) |
videoNotFound |
অনুরোধের videoId প্যারামিটার দিয়ে শনাক্ত করা ভিডিওটি খুঁজে পাওয়া যায়নি। |
required (400) |
playlistIdRequired |
সাবস্ক্রাইব করার অনুরোধে প্রয়োজনীয় playlistId প্রপার্টির কোনও ভ্যালু উল্লেখ করা হয়নি। |
invalidValue (400) |
playlistOperationUnsupported |
API-তে নির্দিষ্ট প্লেলিস্টে ভিডিওর তালিকা দেখানোর সুবিধা নেই। যেমন, আপনি 'পরে দেখুন' প্লেলিস্টে কোনও ভিডিও তালিকাভুক্ত করতে পারবেন না। |
এটি ব্যবহার করে দেখুন!
এই API কল করতে এবং API অনুরোধ ও উত্তর দেখতে APIs Explorer ব্যবহার করুন।