API isteği parametreleriyle eşleşen oynatma listesi öğelerinin bir koleksiyonunu döndürür. Belirli bir oynatma listesindeki tüm oynatma listesi öğelerini veya benzersiz kimliklerine göre bir ya da daha fazla oynatma listesi öğesini alabilirsiniz.
Kota etkisi: Bu yönteme yapılan bir çağrının kota maliyeti 1 birimdir.
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 tüm parametreler sorgu parametreleridir.
| Parametreler | ||
|---|---|---|
| Gerekli parametreler | ||
part |
stringpart 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 özellikleri olan bir özelliği tanımlıyorsa alt özellikler yanıta dahil edilir. Örneğin, bir playlistItem kaynağında snippet özelliği, title, description, position ve resourceId özellikleri de dahil olmak üzere çok sayıda alan içerir. Bu nedenle, part=snippet değerini 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:
|
|
| Filtreler (Aşağıdaki parametrelerden tam olarak birini belirtin) | ||
id |
stringid parametresi, bir veya daha fazla benzersiz oynatma listesi öğesi kimliğinin virgülle ayrılmış listesini belirtir. |
|
playlistId |
stringplaylistId parametresi, oynatma listesi öğelerini almak istediğiniz oynatma listesinin benzersiz kimliğini belirtir. Bu parametre isteğe bağlı olsa da oynatma listesi öğelerini almak için yapılan her istekte id veya playlistId parametresinin değeri belirtilmelidir. |
|
| İsteğe bağlı parametreler | ||
maxResults |
unsigned integermaxResults parametresi, sonuç kümesinde döndürülmesi gereken maksimum öğe sayısını belirtir. Kabul edilen değerler 0 ile 50 arasındadır (bu değerler dahil). Varsayılan değer: 5. |
|
onBehalfOfContentOwner |
stringBu parametre yalnızca uygun şekilde yetkilendirilmiş bir istekte kullanılabilir. Not: Bu parametre yalnızca YouTube içerik iş ortakları için tasarlanmıştır. onBehalfOfContentOwner parametresi, isteğin yetkilendirme kimlik bilgilerinin, parametre değerinde belirtilen içerik sahibi adına işlem yapan bir YouTube İYS kullanıcısını tanımladığını gösterir. Bu parametre, birçok farklı YouTube kanalının sahibi olan ve bunları yöneten YouTube içerik iş ortakları için tasarlanmıştır. İçerik sahipleri, bu özellik sayesinde bir kez kimlik doğrulama yaparak tüm video ve kanal verilerine erişebilir. Her kanal için ayrı ayrı kimlik doğrulama bilgileri sağlamaları gerekmez. Kullanıcının kimlik doğrulaması için kullandığı CMS hesabı, belirtilen YouTube içerik sahibine bağlı olmalıdır. |
|
pageToken |
stringpageToken parametresi, sonuç kümesinde döndürülmesi gereken belirli bir sayfayı tanımlar. API yanıtında nextPageToken ve prevPageToken özellikleri, alınabilecek diğer sayfaları tanımlar. |
|
videoId |
stringvideoId parametresi, isteğin yalnızca belirtilen videoyu içeren oynatma listesi öğelerini döndürmesi gerektiğini belirtir. |
|
İstek metni
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 |
stringAPI kaynağının türünü tanımlar. Değer youtube#playlistItemListResponse olacak. |
etag |
etagBu kaynağın ETag'i. |
nextPageToken |
stringSonuç kümesindeki sonraki sayfayı almak için pageToken parametresinin değeri olarak kullanılabilecek jeton. |
prevPageToken |
stringSonuç kümesinde önceki sayfayı almak için pageToken parametresinin değeri olarak kullanılabilen jeton. |
pageInfo |
objectpageInfo nesnesi, sonuç kümesi için sayfalama bilgilerini kapsar. |
pageInfo.totalResults |
integerSonuç kümesindeki toplam sonuç sayısı. |
pageInfo.resultsPerPage |
integerAPI yanıtına dahil edilen sonuç 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 kapsamayabilir. Desteklenen dillerin listesi için istemci kitaplıkları belgelerine bakın.
Go
Bu kod örneği, istekle ilişkili kanala yüklenen videoların listesini almak için API'ninplaylistItems.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 olarak 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'ninplaylistItems.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 olarak 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'ninplaylistItems.list yöntemini çağırır. Kod ayrıca, kanalın yüklenen videolarını tanımlayan oynatma listesi kimliğini almak için channels.list parametresi true olarak ayarlanmış mine 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 bir çağrıya yanıt olarak döndürebileceği hata mesajları belirtilmektedir. Daha fazla bilgi için lütfen hata mesajı belgelerine bakın.
| Hata türü | Hata ayrıntısı | Açıklama |
|---|---|---|
forbidden (403) |
playlistItemsNotAccessible |
İstek, belirtilen oynatma listesini almak için uygun şekilde yetkilendirilmemiş. |
forbidden (403) |
watchHistoryNotAccessible |
İzleme geçmişi verileri API aracılığıyla 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, bir videoyu "Daha sonra izle" oynatma listenize ekleyemezsiniz. |
Deneyin.
Bu API'yi çağırmak ve API isteği ile yanıtını görmek için APIs Explorer kullanın.