PlaylistItems: list

Trả về một tập hợp các mục trong danh sách phát khớp với các tham số trong yêu cầu API. Bạn có thể truy xuất tất cả mục trong danh sách phát trong một danh sách phát đã chỉ định hoặc truy xuất một hoặc nhiều mục trong danh sách phát theo mã nhận dạng duy nhất của các mục đó.

Tác động đến hạn mức: Một lệnh gọi đến phương thức này có chi phí hạn mức là 1 đơn vị.

Các trường hợp sử dụng phổ biến

Yêu cầu

Yêu cầu HTTP

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

Thông số

Bảng sau đây liệt kê các tham số mà truy vấn này hỗ trợ. Tất cả tham số được liệt kê đều là tham số truy vấn.

Thông số
Tham số bắt buộc
part string
Tham số part chỉ định một danh sách được phân tách bằng dấu phẩy gồm một hoặc nhiều thuộc tính của tài nguyên playlistItem mà phản hồi của API sẽ bao gồm.

Nếu tham số này xác định một thuộc tính chứa các thuộc tính con, thì các thuộc tính con đó sẽ được đưa vào phản hồi. Ví dụ: trong tài nguyên playlistItem, thuộc tính snippet chứa nhiều trường, bao gồm các thuộc tính title, description, position và resourceId. Do đó, nếu bạn đặt part=snippet, thì phản hồi của API sẽ chứa tất cả các thuộc tính đó.

Danh sách sau đây chứa các tên part mà bạn có thể đưa vào giá trị tham số:
  • contentDetails
  • id
  • snippet
  • status
Bộ lọc (chỉ định chính xác một trong các tham số sau)
id string
Tham số id chỉ định một danh sách được phân tách bằng dấu phẩy gồm một hoặc nhiều mã nhận dạng riêng biệt của mục trong danh sách phát.
playlistId string
Tham số playlistId chỉ định mã nhận dạng duy nhất của danh sách phát mà bạn muốn truy xuất các mục trong danh sách phát. Xin lưu ý rằng mặc dù đây là tham số không bắt buộc, nhưng mọi yêu cầu truy xuất mục trong danh sách phát đều phải chỉ định một giá trị cho tham số id hoặc tham số playlistId.
Thông số tùy chọn
maxResults unsigned integer
Tham số maxResults chỉ định số lượng mục tối đa sẽ được trả về trong tập kết quả. Các giá trị được chấp nhận là 0 đến 50, bao gồm cả hai giá trị này. Giá trị mặc định là 5.
onBehalfOfContentOwner string
Tham số này chỉ có thể được sử dụng trong một yêu cầu được uỷ quyền đúng cách. Lưu ý: Tham số này chỉ dành riêng cho các đối tác nội dung trên YouTube.

Tham số onBehalfOfContentOwner cho biết rằng thông tin xác thực uỷ quyền của yêu cầu xác định một người dùng YouTube CMS đang thay mặt cho chủ sở hữu nội dung được chỉ định trong giá trị tham số. Tham số này dành cho các đối tác nội dung trên YouTube sở hữu và quản lý nhiều kênh YouTube khác nhau. Tham số này cho phép chủ sở hữu nội dung xác thực một lần và truy cập vào tất cả dữ liệu về video và kênh của họ mà không cần cung cấp thông tin xác thực cho từng kênh. Tài khoản CMS mà người dùng xác thực phải được liên kết với chủ sở hữu nội dung trên YouTube đã chỉ định.
pageToken string
Tham số pageToken xác định một trang cụ thể trong tập kết quả sẽ được trả về. Trong phản hồi của API, các thuộc tính nextPageToken và prevPageToken xác định các trang khác có thể được truy xuất.
videoId string
Tham số videoId chỉ định rằng yêu cầu chỉ được trả về các mục trong danh sách phát có chứa video đã chỉ định.

Nội dung yêu cầu

Đừng cung cấp nội dung yêu cầu khi gọi phương thức này.

Phản hồi

Nếu thành công, phương thức này sẽ trả về một nội dung phản hồi có cấu trúc sau:

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

Thuộc tính

Bảng sau đây xác định các thuộc tính xuất hiện trong tài nguyên này:

Thuộc tính
kind string
Xác định loại tài nguyên API. Giá trị sẽ là youtube#playlistItemListResponse.
etag etag
Etag của tài nguyên này.
nextPageToken string
Mã thông báo có thể được dùng làm giá trị của tham số pageToken để truy xuất trang tiếp theo trong tập kết quả.
prevPageToken string
Mã thông báo có thể được dùng làm giá trị của tham số pageToken để truy xuất trang trước đó trong tập kết quả.
pageInfo object
Đối tượng pageInfo gói gọn thông tin phân trang cho tập kết quả.
pageInfo.totalResults integer
Tổng số kết quả trong tập kết quả.
pageInfo.resultsPerPage integer
Số lượng kết quả có trong phản hồi của API.
items[] list
Danh sách các mục trong danh sách phát khớp với tiêu chí của yêu cầu.

Ví dụ

Lưu ý: Các đoạn mã mẫu sau đây có thể không đại diện cho tất cả ngôn ngữ lập trình được hỗ trợ. Hãy xem tài liệu về thư viện ứng dụng để biết danh sách các ngôn ngữ được hỗ trợ.

Go

Đoạn mã mẫu này gọi phương thức playlistItems.list của API để truy xuất danh sách video đã tải lên kênh được liên kết với yêu cầu. Đoạn mã này cũng gọi phương thức channels.list với tham số mine được đặt thành true để truy xuất mã nhận dạng danh sách phát xác định video đã tải lên của kênh.

Ví dụ này sử dụng thư viện ứng dụng 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

Đoạn mã mẫu này gọi phương thức playlistItems.list của API để truy xuất danh sách video đã tải lên kênh được liên kết với yêu cầu. Đoạn mã này cũng gọi phương thức channels.list với tham số mine được đặt thành true để truy xuất mã nhận dạng danh sách phát xác định video đã tải lên của kênh.

Ví dụ này sử dụng thư viện ứng dụng.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

Đoạn mã mẫu này gọi phương thức playlistItems.list của API để truy xuất danh sách video đã tải lên kênh được liên kết với yêu cầu. Đoạn mã này cũng gọi phương thức channels.list với tham số mine được đặt thành true để truy xuất mã nhận dạng danh sách phát xác định video đã tải lên của kênh.

Ví dụ này sử dụng thư viện ứng dụng 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

Lỗi

Bảng sau đây xác định các thông báo lỗi mà API có thể trả về để phản hồi lệnh gọi đến phương thức này. Vui lòng xem tài liệu về thông báo lỗi để biết thêm thông tin.

Loại lỗi Chi tiết lỗi Mô tả
forbidden (403) playlistItemsNotAccessible Yêu cầu không được uỷ quyền đúng cách để truy xuất danh sách phát đã chỉ định.
forbidden (403) watchHistoryNotAccessible Không thể truy xuất dữ liệu về nhật ký xem thông qua API.
forbidden (403) watchLaterNotAccessible Không thể truy xuất các mục trong danh sách phát "xem sau" thông qua API.
notFound (404) playlistNotFound Không tìm thấy danh sách phát được xác định bằng tham số playlistId của yêu cầu.
notFound (404) videoNotFound Không tìm thấy video được xác định bằng tham số videoId của yêu cầu.
required (400) playlistIdRequired Yêu cầu đăng ký không chỉ định giá trị cho thuộc tính playlistId bắt buộc.
invalidValue (400) playlistOperationUnsupported API không hỗ trợ khả năng liệt kê video trong danh sách phát đã chỉ định. Ví dụ: bạn không thể liệt kê video trong danh sách phát xem sau.

Hãy dùng thử!

Sử dụng APIs Explorer để gọi API này và xem yêu cầu API và phản hồi.