Благодаря ссылкам, опубликованным здесь и в других местах, я создал онлайн-скрипт / инструмент, который можно использовать для получения всех видео канала.
Он сочетает в себе вызовы 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.
}
});
}
Это основной список видео, в том числе идентификатор, название, дата публикации и тому подобное. Но чтобы получить более подробную информацию о каждом видео, например, количество просмотров и лайков, нужно сделать вызовы 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