2012-10-17 44 views

Trả lời

31

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. 
}); 
+0

Đố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? –

40

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:

  1. 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".

  2. 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

+0

Bạn có thể tạo ví dụ về những gì bạn đang làm không? –

+0

@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

+0

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

Các vấn đề liên quan