Я пытаюсь получить все "Понравившиеся видео" в Youtube через Youtube API, потому что я не смог получить его в качестве плейлиста.Поскольку я ограничен 50 maxResults
, я зацикливаюсь на видео 50 на 50. Я печатаю результаты, получаю nextPageToken
, затем делаю еще один вызов APIна следующем повороте цикла.
Моя проблема в nextPageToken
не меняется, поэтому я продолжаю получать один и тот же набор из 50 видео.Я предполагаю, что это вызвано асинхронными вызовами API, поэтому цикл запускается, регистрирует все вызовы, прежде чем получить первый (второй в сценарии) ответ.Таким образом, все зарегистрированные вызовы, зарегистрированные с одинаковым nextPageToken
, получают одинаковые результаты.В соответствии с этим сценарием я пытался найти способ вызывать списки без , затем () , мне не удалось.
'use strict';
let maxResults = 50;
gapi.client.youtube.videos.list({
'part': 'snippet,contentDetails,statistics',
'myRating': 'like',
'maxResults': maxResults
}).then(function (response) {
let likedVideosCount = response.result.pageInfo.totalResults;
if (likedVideosCount > 0) {
let videoIndex = 0;
//let playlist = addPlaylistItem('Liked Videos', likedVideosCount);
let pageVideoCount = response.result.items.length;
if (likedVideosCount > maxResults) {
let nextPageToken = response.result.nextPageToken;
let _likedVideosCount = likedVideosCount - pageVideoCount;
for (let page = _likedVideosCount; page > maxResults; page -= pageVideoCount) {
_likedVideosCount -= pageVideoCount;
gapi.client.youtube.videos.list({
'part': 'snippet,contentDetails,statistics',
'myRating': 'like',
'maxResults': maxResults,
'pageToken': nextPageToken
}).then(function (videoResponse) {
nextPageToken = videoResponse.result.nextPageToken;
console.log(nextPageToken );
}
});
}
}
}
});