Làm cách nào để liệt kê các video đã tải lên của người dùng trong api V3?YouTube API v3 - Liệt kê các video đã tải lên
Trả lời
Bước đầu tiên là lấy id kênh cho người dùng đó. Chúng tôi có thể thực hiện việc này với yêu cầu dịch vụ Channels
. Đây là một ví dụ JS.
var request = gapi.client.youtube.channels.list({
// mine: true indicates that we want to retrieve the channel for the authenticated user.
mine: true,
part: 'contentDetails'
});
request.execute(function(response) {
playlistId = response.result.channels[0].contentDetails.uploads;
});
Khi chúng tôi nhận id danh sách phát, chúng tôi có thể sử dụng để truy vấn danh sách video đã tải lên từ dịch vụ PlaylistItems
.
var request = gapi.client.youtube.playlistItems.list({
playlistId: playlistId,
part: 'snippet',
});
request.execute(function(response) {
// Go through response.result.playlistItems to view list of uploaded videos.
});
Đối với tôi phương thức '.list' không trả về. Tôi có hai bản ghi đơn giản, ngay trước và sau khi gọi phương thức, lần đầu tiên thực thi, thứ hai thì không. Ý tưởng nào? –
Nếu bạn đang sử dụng máy khách thì câu trả lời của Greg là chính xác. Để làm được điều tương tự với các yêu cầu cơ bản bạn thực hiện 2 yêu cầu sau đây:
GET https://www.googleapis.com/youtube/v3/channels
với các thông số:
part=contentDetails mine=true key={YOUR_API_KEY}
và tiêu đề:
Authorization: Bearer {Your access token}
Từ này bạn sẽ nhận được phản hồi JSON như sau:
{ "kind": "youtube#channelListResponse", "etag": "\"some-string\"", "pageInfo": { "totalResults": 1, "resultsPerPage": 1 }, "items": [ { "id": "some-id", "kind": "youtube#channel", "etag": "\"another-string\"", "contentDetails": { "relatedPlaylists": { "likes": "channel-id-for-your-likes", "favorites": "channel-id-for-your-favorites", "uploads": "channel-id-for-your-uploads", "watchHistory": "channel-id-for-your-watch-history", "watchLater": "channel-id-for-your-watch-later" } } } ] }
Từ đây bạn muốn phân tích cú pháp id kênh "tải lên".
GET https://www.googleapis.com/youtube/v3/playlistItems
với các thông số:
part=snippet maxResults=50 playlistId={YOUR_UPLOAD_PLAYLIST_ID} key={YOUR_API_KEY}
và tiêu đề:
Authorization: Bearer {YOUR_TOKEN}
Từ đó bạn sẽ nhận được phản hồi JSON như sau:
{ "kind": "youtube#playlistItemListResponse", "etag": "\"some-string\"", "pageInfo": { "totalResults": 1, "resultsPerPage": 50 }, "items": [ { "id": "some-id", "kind": "youtube#playlistItem", "etag": "\"another-string\"", "snippet": { "publishedAt": "some-date", "channelId": "the-channel-id", "title": "video-title", "thumbnails": { "default": { "url": "thumbnail-address" }, "medium": { "url": "thumbnail-address" }, "high": { "url": "thumbnail-address" } }, "playlistId": "upload-playlist-id", "position": 0, "resourceId": { "kind": "youtube#video", "videoId": "the-videos-id" } } } ] }
Với phương pháp này, bạn sẽ có thể nhận thông tin bằng bất kỳ ngôn ngữ nào hoặc thậm chí chỉ cần cuộn tròn. Nếu bạn muốn nhiều hơn 50 kết quả đầu tiên, thì bạn sẽ phải thực hiện nhiều truy vấn bằng cách sử dụng yêu cầu thứ hai và chuyển yêu cầu trang. Bạn có thể đọc thêm tại đây: http://developers.google.com/youtube/v3/docs/playlistItems/list
Bạn có thể tạo ví dụ về những gì bạn đang làm không? –
@PratikCJoshi Sử dụng https://developers.google.com/youtube/v3/docs/channels/list @ giao diện dưới cùng cho bản trình diễn. Tôi đang chuyển: https://www.diigo.com/item/image/5enzo/a9ey cho phép "tải lên": "UUhS0SPpEqGMGRim7mebedPg". @ https://developers.google.com/youtube/v3/docs/playlistItems/list nơi tôi đang thực hiện việc này: https://www.diigo.com/item/image/5enzo/up3b ... Điều lame là độ dài nội dung không được bao gồm. Bạn có thể thấy rằng với contentDetails trên/video được biểu thị như "duration": "PT7M18S"; Tôi muốn nó được đưa vào mà không cần truy vấn qua từng video này. – kristopolous
Theo như thực hiện mạch lạc, tôi dự định nâng cấp https://github.com/kristopolous/ytmix/blob/master/import/parse.js từ phiên bản v2 sang v3 (vì tôi phải làm vậy).Vì vậy, vào thời điểm bạn nhấp vào đây, nó sẽ là v3. – kristopolous
liệt kê Kênh/Danh sách phát bằng cách sử dụng tham số mỏ nhưng tôi không thể tìm cách liệt kê video của kênh – efic1