PlaylistItems: list

API istek parametreleriyle eşleşen oynatma listesi öğelerinin bir koleksiyonunu döndürür. Belirli bir oynatma listesindeki oynatma listesi öğelerinin tümünü alabilir veya benzersiz kimliklerine göre bir ya da daha fazla oynatma listesi öğesi alabilirsiniz.

Kota etkisi: Bu yönteme yapılan bir çağrının 1 birim kota maliyeti olur.

Yaygın kullanım alanları

İstek

HTTP isteği

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

Parametreler

Aşağıdaki tabloda, bu sorgunun desteklediği parametreler listelenmiştir. Listelenen parametrelerin tümü sorgu parametreleridir.

Parametreler
Gerekli parametreler
part string
part parametresi, API yanıtının içereceği bir veya daha fazla playlistItem kaynak özelliğinin virgülle ayrılmış listesini belirtir.

Parametre alt özellikler içeren bir özelliği tanımlarsa alt özellikler yanıta dahil edilir. Örneğin bir playlistItem kaynağında snippet özelliği title, description, position ve resourceId mülklerinin de bulunduğu çok sayıda alan içerir. Bu nedenle, part=snippet öğesini ayarlarsanız API yanıtı bu özelliklerin tümünü içerir.

Aşağıdaki listede parametre değerine ekleyebileceğiniz part adları yer almaktadır:
  • contentDetails
  • id
  • snippet
  • status
Filtreler (aşağıdaki parametrelerden tam olarak birini belirtin)
id string
id parametresi, bir veya daha fazla benzersiz oynatma listesi öğe kimliğinin virgülle ayrılmış listesini belirtir.
playlistId string
playlistId parametresi, oynatma listesi öğelerini almak istediğiniz oynatma listesinin benzersiz kimliğini belirtir. Bu, isteğe bağlı bir parametre olsa da, oynatma listesi öğelerini almaya yönelik her istekte id parametresi veya playlistId parametresi için bir değer belirtilmesi gerektiğini unutmayın.
İsteğe bağlı parametreler
maxResults unsigned integer
maxResults parametresi, sonuç kümesinde döndürülmesi gereken maksimum öğe sayısını belirtir. Kabul edilebilir değerler 0 ile 50 arasındadır (bu değerler dahil). Varsayılan değer 5 değeridir.
onBehalfOfContentOwner string
Bu parametre yalnızca doğru şekilde yetkilendirilmiş bir istekte kullanılabilir. Not: Bu parametre yalnızca YouTube içerik iş ortaklarına yöneliktir.

onBehalfOfContentOwner parametresi, isteğin yetkilendirme kimlik bilgilerinin parametre değerinde belirtilen içerik sahibi adına hareket eden bir YouTube CMS kullanıcısını tanımladığını gösterir. Bu parametre, birçok farklı YouTube kanalına sahip olan ve bunları yöneten YouTube içerik iş ortakları için tasarlanmıştır. İçerik sahiplerinin, her kanal için kimlik doğrulama bilgileri sağlamak zorunda kalmadan bir kez kimlik doğrulaması yaparak tüm video ve kanal verilerine erişmelerine olanak tanır. Kullanıcının kimlik doğrulaması yaptığı CMS hesabı, belirtilen YouTube içerik sahibine bağlanmalıdır.
pageToken string
pageToken parametresi, sonuç kümesinde döndürülmesi gereken belirli bir sayfayı tanımlar. Bir API yanıtında nextPageToken ve prevPageToken özellikleri, alınabilecek diğer sayfaları tanımlar.
videoId string
videoId parametresi, isteğin yalnızca belirtilen videoyu içeren oynatma listesi öğelerini döndürmesi gerektiğini belirtir.

İstek içeriği

Bu yöntemi çağırırken istek gövdesi sağlamayın.

Yanıt

Başarılı olursa bu yöntem aşağıdaki yapıya sahip bir yanıt gövdesi döndürür:

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

Özellikler

Aşağıdaki tabloda bu kaynakta görünen özellikler tanımlanmaktadır:

Özellikler
kind string
API kaynağının türünü tanımlar. Değer youtube#playlistItemListResponse olur.
etag etag
Bu kaynağın Etag'i.
nextPageToken string
Sonuç grubundaki bir sonraki sayfayı almak için pageToken parametresinin değeri olarak kullanılabilecek jeton.
prevPageToken string
Sonuç grubundaki önceki sayfayı almak için pageToken parametresinin değeri olarak kullanılabilecek jeton.
pageInfo object
pageInfo nesnesi, sonuç kümesiyle ilgili sayfalama bilgilerini içerir.
pageInfo.totalResults integer
Sonuç kümesindeki toplam sonuç sayısı.
pageInfo.resultsPerPage integer
API yanıtına dahil edilen sonuçların sayısı.
items[] list
İstek ölçütleriyle eşleşen oynatma listesi öğelerinin listesi.

Örnekler

Not: Aşağıdaki kod örnekleri, desteklenen tüm programlama dillerini temsil etmeyebilir. Desteklenen dillerin listesi için istemci kitaplıkları dokümanlarına bakın.

Go

Bu kod örneği, istekle ilişkili kanala yüklenen videoların listesini almak için API'nin playlistItems.list yöntemini çağırır. Kod, kanalın yüklediği videoları tanımlayan oynatma listesi kimliğini almak için mine parametresi true değerine ayarlanmış channels.list yöntemini de çağırır.

Bu örnekte Go istemci kitaplığı kullanılmaktadır.

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

Aşağıdaki kod örneği, istekle ilişkili kanala yüklenen videoların listesini almak için API'nin playlistItems.list yöntemini çağırır. Kod, kanalın yüklediği videoları tanımlayan oynatma listesi kimliğini almak için mine parametresi true değerine ayarlanmış channels.list yöntemini de çağırır.

Bu örnekte .NET istemci kitaplığı kullanılmaktadır.

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

Bu örnek, istekle ilişkili kanala yüklenen videoların listesini almak için API'nin playlistItems.list yöntemini çağırır. Kod, kanalın yüklenen videolarını tanımlayan oynatma listesi kimliğini almak için mine parametresi true değerine ayarlanmış channels.list yöntemini de çağırır.

Bu örnekte Ruby istemci kitaplığı kullanılmaktadır.

#!/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

Hatalar

Aşağıdaki tabloda, API'nin bu yönteme yapılan çağrıya yanıt olarak döndürebileceği hata mesajları tanımlanmaktadır. Daha fazla bilgi için lütfen hata mesajı dokümanlarına bakın.

Hata türü Hata ayrıntısı Açıklama
forbidden (403) playlistItemsNotAccessible Bu isteğin, belirtilen oynatma listesini almak için gerektiği gibi yetkisi yok.
forbidden (403) watchHistoryNotAccessible İzleme geçmişi verileri API üzerinden alınamaz.
forbidden (403) watchLaterNotAccessible "Daha sonra izle" oynatma listelerindeki öğeler API aracılığıyla alınamaz.
notFound (404) playlistNotFound İsteğin playlistId parametresiyle tanımlanan oynatma listesi bulunamıyor.
notFound (404) videoNotFound İsteğin videoId parametresiyle tanımlanan video bulunamıyor.
required (400) playlistIdRequired Abone olma isteği, gerekli playlistId özelliği için bir değer belirtmiyor.
invalidValue (400) playlistOperationUnsupported API, belirtilen oynatma listesindeki videoları listeleme özelliğini desteklemiyor. Örneğin, daha sonra izle oynatma listenizdeki bir videoyu listeleyemezsiniz.

Deneyin.

Bu API'yi çağırmak ve API isteğini ve yanıtını görmek için APIs Explorer kullanın.