PlaylistItems: list

Возвращает коллекцию элементов плейлиста, соответствующих параметрам запроса API. Вы можете получить все элементы списка воспроизведения в указанном списке воспроизведения или получить один или несколько элементов списка воспроизведения по их уникальным идентификаторам.

Влияние квоты: вызов этого метода имеет стоимость квоты , равную 1 единице.

Общие варианты использования

Запрос

HTTP-запрос

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

Параметры

В следующей таблице перечислены параметры, которые поддерживает этот запрос. Все перечисленные параметры являются параметрами запроса.

Параметры
Обязательные параметры
part string
Параметр part указывает разделенный запятыми список одного или нескольких свойств ресурсов playlistItem , которые будут включены в ответ API.

Если параметр определяет свойство, которое содержит дочерние свойства, дочерние свойства будут включены в ответ. Например, в ресурсе playlistItem свойство snippet содержит множество полей, включая свойства title , description , position и resourceId . Таким образом, если вы установите part=snippet , ответ API будет содержать все эти свойства.

Следующий список содержит имена part , которые можно включить в значение параметра:
  • contentDetails
  • id
  • snippet
  • status
Фильтры (укажите ровно один из следующих параметров)
id string
Параметр id указывает разделенный запятыми список из одного или нескольких уникальных идентификаторов элементов списка воспроизведения.
playlistId string
Параметр playlistId указывает уникальный идентификатор списка воспроизведения, для которого вы хотите получить элементы списка воспроизведения. Обратите внимание, что хотя это необязательный параметр, каждый запрос на получение элементов списка воспроизведения должен указывать значение либо для параметра id , либо для параметра playlistId .
Дополнительные параметры
maxResults unsigned integer
Параметр maxResults указывает максимальное количество элементов, которые должны быть возвращены в результирующем наборе. Допустимые значения: от 0 до 50 включительно. Значение по умолчанию — 5 .
onBehalfOfContentOwner string
Этот параметр можно использовать только в правильно авторизованном запросе . Примечание. Этот параметр предназначен исключительно для контент-партнеров YouTube.

Параметр onBehalfOfContentOwner указывает, что учетные данные авторизации запроса идентифицируют пользователя CMS YouTube, который действует от имени владельца контента, указанного в значении параметра. Этот параметр предназначен для контент-партнеров YouTube, которые владеют множеством различных каналов YouTube и управляют ими. Это позволяет владельцам контента пройти аутентификацию один раз и получить доступ ко всем своим видео и данным канала без необходимости предоставлять учетные данные для аутентификации для каждого отдельного канала. Учетная запись CMS, с помощью которой пользователь проходит аутентификацию, должна быть связана с указанным владельцем контента YouTube.
pageToken string
Параметр pageToken определяет конкретную страницу в наборе результатов, которая должна быть возвращена. В ответе API свойства nextPageToken и prevPageToken определяют другие страницы, которые можно получить.
videoId string
Параметр videoId указывает, что запрос должен возвращать только те элементы плейлиста, которые содержат указанное видео.

Тело запроса

Не указывайте тело запроса при вызове этого метода.

Ответ

В случае успеха этот метод возвращает тело ответа со следующей структурой:

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

Характеристики

В следующей таблице определены свойства, которые появляются в этом ресурсе:

Характеристики
kind string
Идентифицирует тип ресурса API. Значение будет youtube#playlistItemListResponse .
etag etag
Etag этого ресурса.
nextPageToken string
Маркер, который можно использовать в качестве значения параметра pageToken для получения следующей страницы в результирующем наборе.
prevPageToken string
Маркер, который можно использовать в качестве значения параметра pageToken для получения предыдущей страницы в результирующем наборе.
pageInfo object
Объект pageInfo инкапсулирует информацию о подкачке для результирующего набора.
pageInfo. totalResults integer
Общее количество результатов в результирующем наборе.
pageInfo. resultsPerPage integer
Количество результатов, включенных в ответ API.
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()
		}
	}
}

.СЕТЬ

В следующем примере кода вызывается метод 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;
        }
      }
    }
  }
}

Рубин

В этом образце вызывается метод 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 не поддерживает возможность добавления видео в указанный плейлист. Например, вы не можете добавить видео в плейлист «Посмотреть позже».

Попробуй это!

Используйте APIs Explorer , чтобы вызвать этот API и просмотреть запрос и ответ API.