ここや他の場所で共有されたリファレンスのおかげで、チャンネルのすべての動画を取得するために使用できるオンラインスクリプト/ツールを作成しました。
それはへのAPI呼び出しを組み合わせましたyoutube.channels.list
、playlistItems
、videos
。再帰関数を使用して、有効な応答を取得すると非同期コールバックが次の反復を実行するようにします。
これは、同時に行われるリクエストの実際の数を制限するのにも役立つため、YouTube APIのルールに違反しないように保護されます。短いスニペットを共有してから、完全なコードへのリンク。次の50件の結果を取得するための応答に含まれるnextPageToken値を使用することで、呼び出しごとの最大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