PlaylistItems: list

यह एपीआई अनुरोध के पैरामीटर से मेल खाने वाले, प्लेलिस्ट के आइटम का कलेक्शन दिखाता है. आपके पास किसी तय प्लेलिस्ट में मौजूद सभी आइटम को वापस पाने या उनके यूनीक आईडी के हिसाब से, एक या उससे ज़्यादा आइटम को वापस पाने का विकल्प होता है.

कोटा पर असर: इस तरीके को कॉल करने पर, कोटा की एक यूनिट का खर्च आता है.

इस्तेमाल के सामान्य उदाहरण

अनुरोध

एचटीटीपी अनुरोध

GET https://www.googleapis.com/youtube/v3/playlistItems

पैरामीटर

यहां दी गई टेबल में, उन पैरामीटर की सूची दी गई है जिन्हें इस क्वेरी के साथ इस्तेमाल किया जा सकता है. यहां दिए गए सभी पैरामीटर, क्वेरी पैरामीटर हैं.

पैरामीटर
ज़रूरी पैरामीटर
part string
part पैरामीटर, playlistItem संसाधन की एक या उससे ज़्यादा प्रॉपर्टी की कॉमा लगाकर अलग की गई लिस्ट तय करता है. एपीआई से मिली जानकारी में ये प्रॉपर्टी शामिल होंगी.

अगर पैरामीटर, ऐसी प्रॉपर्टी की पहचान करता है जिसमें चाइल्ड प्रॉपर्टी शामिल हैं, तो जवाब में चाइल्ड प्रॉपर्टी भी शामिल होंगी. उदाहरण के लिए, playlistItem संसाधन में, snippet प्रॉपर्टी में कई फ़ील्ड शामिल होते हैं. इनमें title, description, position, और resourceId प्रॉपर्टी शामिल हैं. ऐसे में, अगर आपने part=snippet सेट किया है, तो एपीआई से मिली जानकारी में ये सभी प्रॉपर्टी शामिल होंगी.

यहां दी गई सूची में, part के उन नामों के बारे में बताया गया है जिन्हें पैरामीटर वैल्यू में शामिल किया जा सकता है:
  • contentDetails
  • id
  • snippet
  • status
फ़िल्टर (इनमें से कोई एक पैरामीटर तय करें)
id string
`id` पैरामीटर, प्लेलिस्ट के एक या उससे ज़्यादा यूनीक आइटम आईडी की कॉमा लगाकर अलग की गई लिस्ट तय करता है.
playlistId string
playlistId पैरामीटर, उस प्लेलिस्ट का यूनीक आईडी तय करता है जिसके लिए आपको प्लेलिस्ट के आइटम वापस पाने हैं. ध्यान दें कि यह एक वैकल्पिक पैरामीटर है. हालांकि, प्लेलिस्ट के आइटम वापस पाने के हर अनुरोध में, id पैरामीटर या playlistId पैरामीटर के लिए कोई वैल्यू तय करनी होगी.
वैकल्पिक पैरामीटर
maxResults unsigned integer
maxResults पैरामीटर, नतीजों के सेट में वापस दिखाए जाने वाले आइटम की ज़्यादा से ज़्यादा संख्या तय करता है. 0 से 50 तक की वैल्यू मान्य हैं. डिफ़ॉल्ट वैल्यू 5 है.
onBehalfOfContentOwner string
इस पैरामीटर का इस्तेमाल, सिर्फ़ अनुमति वाले अनुरोध में किया जा सकता है. ध्यान दें: यह पैरामीटर, सिर्फ़ YouTube के कॉन्टेंट पार्टनर के लिए है.

onBehalfOfContentOwner पैरामीटर से पता चलता है कि अनुरोध की अनुमति के क्रेडेंशियल, YouTube सीएमएस के ऐसे उपयोगकर्ता की पहचान करते हैं जो पैरामीटर वैल्यू में तय किए गए कॉन्टेंट के मालिक की ओर से काम कर रहा है. यह पैरामीटर, YouTube के उन कॉन्टेंट पार्टनर के लिए है जो YouTube के कई अलग-अलग चैनलों के मालिक हैं और उन्हें मैनेज करते हैं. इससे, कॉन्टेंट के मालिक एक बार पुष्टि करके, अपने सभी वीडियो और चैनल के डेटा को ऐक्सेस कर सकते हैं. इसके लिए, उन्हें हर चैनल के लिए अनुमति के क्रेडेंशियल देने की ज़रूरत नहीं होती. उपयोगकर्ता जिस CMS खाते से पुष्टि करता है वह, तय किए गए YouTube के कॉन्टेंट के मालिक से लिंक होना चाहिए.
pageToken string
The pageToken पैरामीटर, नतीजों के सेट में मौजूद किसी खास पेज की पहचान करता है. इस पेज को वापस दिखाया जाना चाहिए. एपीआई से मिली जानकारी में, nextPageToken और prevPageToken प्रॉपर्टी, उन अन्य पेजों की पहचान करती हैं जिन्हें वापस पाया जा सकता है.
videoId string
videoId पैरामीटर से पता चलता है कि अनुरोध में, सिर्फ़ वे प्लेलिस्ट आइटम वापस दिखाए जाने चाहिए जिनमें तय किया गया वीडियो शामिल है.

अनुरोध का मुख्य भाग

इस तरीके को कॉल करते समय, अनुरोध का मुख्य भाग न दें.

जवाब

अगर अनुरोध सही से काम करता है, तो यह तरीका, जवाब का मुख्य भाग दिखाता है. इसमें यह स्ट्रक्चर शामिल होता है:

{
  "kind": "youtube#playlistItemListResponse",
  "etag": etag,
  "nextPageToken": string,
  "prevPageToken": string,
  "pageInfo": {
    "totalResults": integer,
    "resultsPerPage": integer
  },
  "items": [
    playlistItem Resource
  ]
}

प्रॉपर्टी

यहां दी गई टेबल में, इस संसाधन में दिखने वाली प्रॉपर्टी के बारे में बताया गया है:

प्रॉपर्टी
kind string
इससे, एपीआई संसाधन के टाइप की पहचान होती है. इसकी वैल्यू youtube#playlistItemListResponse होगी.
etag etag
यह इस संसाधन का Etag है.
nextPageToken string
यह टोकन, नतीजों के सेट में मौजूद अगले पेज को वापस पाने के लिए, pageToken पैरामीटर की वैल्यू के तौर पर इस्तेमाल किया जा सकता है.
prevPageToken string
यह टोकन, नतीजों के सेट में मौजूद पिछले पेज को वापस पाने के लिए, pageToken पैरामीटर की वैल्यू के तौर पर इस्तेमाल किया जा सकता है.
pageInfo object
pageInfo ऑब्जेक्ट, नतीजों के सेट के लिए पेजिंग की जानकारी को एनकैप्सुलेट करता है.
pageInfo.totalResults integer
नतीजों के सेट में, नतीजों की कुल संख्या.
pageInfo.resultsPerPage integer
एपीआई से मिली जानकारी में शामिल नतीजों की संख्या.
items[] list
प्लेलिस्ट के उन आइटम की सूची जो अनुरोध की शर्तों के मुताबिक हैं.

उदाहरण

ध्यान दें: ऐसा हो सकता है कि यहां दिए गए कोड सैंपल में, इसके साथ काम करने वाली सभी प्रोग्रामिंग लैंग्वेज न दिखाई गई हों. इसके साथ काम करने वाली भाषाओं की सूची के लिए, क्लाइंट लाइब्रेरी का दस्तावेज़ देखें.

Go

इस कोड सैंपल में, एपीआई के 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

यहां दिए गए कोड सैंपल में, एपीआई के 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

इस सैंपल में, एपीआई के 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

गड़बड़ियां

यहां दी गई टेबल में, गड़बड़ी के उन मैसेज की पहचान की गई है जो इस तरीके को कॉल करने पर, एपीआई के जवाब में दिख सकते हैं. ज़्यादा जानकारी के लिए, गड़बड़ी के मैसेज का दस्तावेज़ देखें.

गड़बड़ी का टाइप गड़बड़ी की जानकारी ब्यौरा
forbidden (403) playlistItemsNotAccessible अनुरोध के पास, तय की गई प्लेलिस्ट को वापस पाने की अनुमति नहीं है.
forbidden (403) watchHistoryNotAccessible एपीआई के ज़रिए, देखने के इतिहास का डेटा वापस नहीं पाया जा सकता.
forbidden (403) watchLaterNotAccessible एपीआई के ज़रिए, "बाद में देखें" प्लेलिस्ट में मौजूद आइटम वापस नहीं पाए जा सकते.
notFound (404) playlistNotFound अनुरोध के playlistId पैरामीटर से तय की गई प्लेलिस्ट नहीं मिली.
notFound (404) videoNotFound अनुरोध के videoId पैरामीटर से तय किया गया वीडियो नहीं मिला.
required (400) playlistIdRequired सदस्यता के अनुरोध में, ज़रूरी playlistId प्रॉपर्टी के लिए कोई वैल्यू तय नहीं की गई है.
invalidValue (400) playlistOperationUnsupported एपीआई, तय की गई प्लेलिस्ट में वीडियो की सूची दिखाने की सुविधा नहीं देता. उदाहरण के लिए, 'बाद में देखें' प्लेलिस्ट में मौजूद वीडियो की सूची नहीं दिखाई जा सकती.

इसे आज़माएं!

इस एपीआई को कॉल करने और एपीआई अनुरोध और जवाब को देखने के लिए, APIs Explorer का इस्तेमाल करें.