2016-01-08 48 views
2

我试图使用Youtube API检索播放列表视频的持续时间,图片和视图。我注意到这些都没有包含在我检索的代码片段中。这里是我的代码至今:检索持续时间,视频图片和播放列表视图视频YouTube API

gapi.client.setApiKey('xxxx'); 
gapi.client.load('youtube', 'v3', function() { 

    var request = gapi.client.youtube.playlistItems.list({ 
     part: 'snippet, contentDetails', 
     playlistId: 'PL3C9792F77CB0EE51', 
     maxResults: 50 
    }); 

request.execute(function(response) { 
    for (var i = 0; i < response.items.length; i++) { 
     console.log(response.items[i].snippet.title + " published at " 
     + response.items[i].snippet.publishedAt); 
     console.log(response.items[i].contentDetails.videoId); 
    } 
}); 

console.log(response.items[i].snippet)返回每个视频下面:

Object { 
    publishedAt: ..., 
    channelId: ..., 
    title: ..., 
    description: ..., 
    thumbnails { ... } 
} 

console.log(response.items[i].contentDetails)回报:

Object { 
    videoId: ..., 
} 

我想可能使用的视频ID来的然后提出另一个请求并检索每个给定视频的持续时间,图片和视图,但我不确定如何继续

+0

你可以发布你检索的数据吗? – Sapikelio

+0

@Sapikelio,我编辑了我的帖子。 – NotToBrag

+0

我已经为你发布了一个解决方案。希望它有助于:) – Sapikelio

回答

5

一步一步来。

Youtube PlayListItem有这样的结构。

{ 
    "kind": "youtube#playlistItem", 
    "etag": etag, 
    "id": string, 
    "snippet": { 
    "publishedAt": datetime, 
    "channelId": string, 
    "title": string, 
    "description": string, 
    "thumbnails": { 
     (key): { 
     "url": string, 
     "width": unsigned integer, 
     "height": unsigned integer 
     } 
    }, 
    "channelTitle": string, 
    "playlistId": string, 
    "position": unsigned integer, 
    "resourceId": { 
     "kind": string, 
     "videoId": string, 
    } 
    }, 
    "contentDetails": { 
    "videoId": string, 
    "startAt": string, 
    "endAt": string, 
    "note": string 
    }, 
    "status": { 
    "privacyStatus": string 
    } 
} 

如果你想获取的视频图像,对thumbnails属性你的URL图像。不过,你也可以这样做。

http://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg 

对于缩略图的高品质版本使用类似这样的URL:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg 

还有缩略图的中等质量的版本,使用类似于总部的URL:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg 

对于缩略图的标清版本,使用类似这样的URL:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg 

为缩略图的最大分辨率版本使用类似这样的URL:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg 

EDIT(获取视频信息)

若要留下的信息,你必须得到videoObjet by Id您已在PlayListItem上进行调用。 Demo

$.ajax({ 
    async: false, 
    type: 'GET', 
    url: "https://www.googleapis.com/youtube/v3/videos?id={{videoId}}&key={{yourKey}}&part=snippet,contentDetails", 
    success: function(data) { 
     ...Do what you want with data... 
    } 
} 

返回的JSON看起来是这样的:

{ 
    kind: "youtube#videoListResponse", 
    etag: ""oqbvhYxBE6fAbRk6m7aLlHf5s1I/jg_aG2jmpbZL5qs3yae4JnZbDs0"", 
    pageInfo: { 
     totalResults: 1, 
     resultsPerPage: 1 
    }, 
    items: [{ 
     kind: "youtube#video", 
     etag: ""oqbvhYxBE6fAbRk6m7aLlHf5s1I/YQ-QRwoxkXL4UBFIFCyCwIdmtzg"", 
     id: "ojCkgU5XGdg", 
     contentDetails: { 
     duration: "PT23M14S", 
     dimension: "2d", 
     definition: "hd", 
     caption: "true", 
     licensedContent: false 
     }, 
     statistics: { 
     viewCount: "25587", 
     likeCount: "168", 
     dislikeCount: "17", 
     favoriteCount: "0", 
     commentCount: "45" 
    } 
    }] 
} 

如果要检索有关视频的详细信息。你必须对查询添加part PARAM任何的下一个选择:snippetcontentDetailsfileDetailsplayerprocessingDetailsrecordingDetailsstatisticsstatussuggestionsÿtopicDetails

我希望它帮助

+0

如何获得'videoObjet'?换句话说,我如何提出请求来检索它? – NotToBrag

+0

我编辑了答案并为您做了演示。如果您有更多疑问,请告诉我:D – Sapikelio

相关问题