Завдяки посиланням, що ділиться тут і в інших місцях, я створив онлайн-скрипт / інструмент, який можна використовувати для отримання всіх відео на каналі.
Він поєднує в собі виклики API , щоб youtube.channels.list
, playlistItems
,videos
. Він використовує рекурсивні функції, щоб змусити асинхронні зворотні дзвінки виконувати наступну ітерацію після отримання дійсної відповіді.
Це також обмежує фактичну кількість запитів, зроблених за один раз, отже, захищає вас від порушення правил API YouTube. Обмін скороченими фрагментами, а потім посилання на повний код. Я отримав приблизно 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