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 |
stringTham 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ố:
|
|
| Bộ lọc (chỉ định chính xác một trong các tham số sau) | ||
id |
stringTham 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 |
stringTham 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 integerTham 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 |
stringTham 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 |
stringTham 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 |
stringTham 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 |
stringXác định loại tài nguyên API. Giá trị sẽ là youtube#playlistItemListResponse. |
etag |
etagEtag của tài nguyên này. |
nextPageToken |
stringMã 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 |
stringMã 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 |
integerTổng số kết quả trong tập kết quả. |
pageInfo.resultsPerPage |
integerSố lượng kết quả có trong phản hồi của API. |
items[] |
listDanh 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ứcplaylistItems.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ứcplaylistItems.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ứcplaylistItems.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.