感谢这里和其他地方共享的参考资料,我制作了一个在线脚本/工具,可以用来获取频道的所有视频。
youtube.channels.list
它结合了对、playlistItems
、的API 调用videos
。它使用递归函数使异步回调在获得有效响应后运行下一次迭代。
这也有助于限制一次发出的实际请求数,从而确保您不会违反 YouTube API 规则。分享缩短的片段,然后是完整代码的链接。通过使用响应中的 nextPageToken 值来获取接下来的 50 个结果,我得到了每次调用限制的 50 个最大结果,依此类推。
function getVideos(nextPageToken, vidsDone, params) {
$.getJSON("https://www.googleapis.com/youtube/v3/playlistItems", {
key: params.accessKey,
part: "snippet",
maxResults: 50,
playlistId: params.playlistId,
fields: "items(snippet(publishedAt, resourceId/videoId, title)), nextPageToken",
pageToken: ( nextPageToken || '')
},
function(data) {
// commands to process JSON variable, extract the 50 videos info
if ( vidsDone < params.vidslimit) {
// Recursive: the function is calling itself if
// all videos haven't been loaded yet
getVideos( data.nextPageToken, vidsDone, params);
}
else {
// Closing actions to do once we have listed the videos needed.
}
});
}
这得到了视频的基本列表,包括 ID、标题、发布日期等。但要获得每个视频的更多详细信息,例如观看次数和点赞数,必须调用 API 到videos
.
// Looping through an array of video id's
function fetchViddetails(i) {
$.getJSON("https://www.googleapis.com/youtube/v3/videos", {
key: document.getElementById("accesskey").value,
part: "snippet,statistics",
id: vidsList[i]
}, function(data) {
// Commands to process JSON variable, extract the video
// information and push it to a global array
if (i < vidsList.length - 1) {
fetchViddetails(i+1) // Recursive: calls itself if the
// list isn't over.
}
});
在此处查看完整代码,并在此处查看实时版本。(编辑:固定 github 链接)
编辑:依赖项:JQuery,Papa.parse