PlaylistItems: list

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

Mức tác động cho hạn mức: Một lệnh gọi đến phương thức này có chi phí định 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

Các tham số

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

Các tham số
Các thông số bắt buộc
part string
Tham số part chỉ định 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 tài nguyên playlistItem mà phản hồi API sẽ đưa vào.

Nếu tham số này xác định một thuộc tính chứa thuộc tính con, thì 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, trong đó có các thuộc tính title, description, positionresourceId. Do đó, nếu bạn đặt part=snippet, thì phản hồi API sẽ chứa tất cả các thuộc tính đó.

Danh sách sau đây chứa part tên 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 thông số sau)
id string
Thông 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ã mục danh sách phát duy nhấ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 danh sách phát phải chỉ định một giá trị cho tham số id hoặc playlistId.
Tham số không bắt buộc
maxResults unsigned integer
Tham số maxResults chỉ định số lượng mục tối đa cần trả về trong tập hợp kết quả. Giá trị được chấp nhận là từ 0 đến 50, bao gồm cả hai giá trị này. Giá trị mặc định là 5.
onBehalfOfContentOwner string
Bạn chỉ có thể sử dụng thông số này trong một yêu cầu được uỷ quyền phù hợp. Lưu ý: Tham số này chỉ dành cho các đối tác nội dung của YouTube.

Tham số onBehalfOfContentOwner cho biết rằng thông tin cấp phép của yêu cầu xác định người dùng CMS của YouTube đang thay mặt 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 YouTube sở hữu và quản lý nhiều kênh YouTube khác nhau. Tính năng 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 video và kênh của họ mà không cần phải 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 YouTube đã chỉ định.
pageToken string
Tham số pageToken xác định một trang cụ thể trong tập hợp kết quả nên được trả về. Trong phản hồi API, thuộc tính nextPageTokenprevPageToken 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ỉ trả về các mục trong danh sách phát có chứa video được chỉ định.

Nội dung yêu cầu

Khô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ề nội dung phản hồi với 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 thông số pageToken để truy xuất trang tiếp theo trong tập hợp kết quả.
prevPageToken string
Mã thông báo có thể được dùng làm giá trị của thông số pageToken để truy xuất trang trước trong tập hợp kết quả.
pageInfo object
Đối tượng pageInfo đóng gói thông tin phân trang cho tập hợp kết quả.
pageInfo.totalResults integer
Tổng số kết quả trong tập hợp kết quả.
pageInfo.resultsPerPage integer
Số lượng kết quả có trong phản hồi API.
items[] list
Danh sách các mục trong danh sách phát phù hợp với tiêu chí của yêu cầu.

Ví dụ

Lưu ý: Những mã mẫu sau đây có thể không đại diện cho một số ngôn ngữ lập trình được hỗ trợ. 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

Mã mẫu này gọi phương thức playlistItems.list của API để truy xuất danh sách các video được tải lên kênh liên kết với yêu cầu. Mã này cũng gọi phương thức channels.list với thông số mine được đặt thành true để truy xuất mã nhận dạng danh sách phát giúp xác định các 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

Mã mẫu sau đâ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 liên kết với yêu cầu. Mã này cũng gọi phương thức channels.list có tham số mine được đặt thành true để truy xuất mã nhận dạng danh sách phát giúp xác định các 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

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 liên kết với yêu cầu. Mã này cũng gọi phương thức channels.list có tham số mine được đặt thành true để truy xuất mã nhận dạng danh sách phát giúp xác định các 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ề khi một 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 chi tiết.

Loại lỗi Thông tin chi tiết về lỗi Mô tả
forbidden (403) playlistItemsNotAccessible Yêu cầu không được phép truy xuất danh sách phát đã chỉ định đúng cách.
forbidden (403) watchHistoryNotAccessible Không thể truy xuất dữ liệu 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 thể tìm thấy video được xác định bằng thông 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ê các video trong danh sách phát được chỉ định. Ví dụ: Bạn không thể liệt kê một video trong danh sách phát xem sau.

Hãy dùng thử!

Hãy dùng APIs Explorer để gọi API này cũng như xem yêu cầu và phản hồi của API.