我在Youtube v3 API(特别是pageToken
概念)上有些挣扎。我是数十种其他API所熟悉的一种,但似乎无法使用。
我提出了一个搜索请求,并获得了预期的结果,同时还有,nextPageToken
因为存在的结果数量超过了请求的数量。
然后,我执行一个请求并传递该pageToken值,但此后我开始得到错误的结果。
这是我到目前为止的代码(我确实在另一段代码中加载了gapi客户)...
function getVideos(pageToken) {
var options = {
channelId: "UC1HkhNoUIYYyaruWmxRRUsQ",
q: "GTA V - Stunt practise",
part: "snippet",
maxResults: 10,
order: "date"
};
if (pageToken) {
options.pageToken = pageToken;
}
var request = gapi.client.youtube.search.list(options);
request.execute(function(response) {
var items = response.result.items;
if (!items.length) return;
for (var i = 0; i < items.length; i++) {
var item = items[i];
addVideo({
id: item.id.videoId,
title: item.snippet.title,
description: item.snippet.description,
date: new Date(item.snippet.publishedAt),
thumbnail: item.snippet.thumbnails.high.url
});
}
if (response.nextPageToken) {
getVideos(response.nextPageToken);
}
});
}
function addVideo(video) {
console.log(video.title);
}
getVideos();
第一批结果显示以下内容:
GTA V - Stunt practise 21
GTA V - Stunt practise 20
GTA V - Stunt practise 19
GTA V - Stunt practise 18 (version 1)
GTA V - Stunt practise 18 (version 2)
GTA V - Stunt practise 17
GTA V - Stunt practise 16
GTA V - Stunt practise 15
GTA V - Stunt practise 14
GTA V - Stunt practise 13
这是正确的(嗯,足够接近)。但是,第二批结果完全是错误的...
GTA V - Stunt practise 01
GTA V - Stunt practise 07
GTA V - Stunt practise 02
GTA V - Stunt practise 08
它们数量不够,它们不是预期的视频,而且也不正常。
有没有人对Youtube API有任何经验,特别是在搜索结果中使用页面令牌?非常感谢您的帮助。
我现在认为这是一个错误。我之所以这么认为,也是我发布答案的原因,是因为它与播放列表完美结合...
function getVideos(prev) {
var options = {
part: "snippet",
playlistId: "PLvocdfFatwmphP9Lj4Mzpht4H75PtLA-p",
maxResults: 10
};
if (prev) {
options.pageToken = prev.nextPageToken;
}
var request = gapi.client.youtube.playlistItems.list(options);
request.execute(function(response) {
var items = response.result.items;
if (!items.length) return;
for (var i = 0; i < items.length; i++) {
var item = items[i];
addVideo({
id: item.id.videoId,
title: item.snippet.title,
description: item.snippet.description,
date: new Date(item.snippet.publishedAt),
thumbnail: item.snippet.thumbnails.high.url
});
}
if (response.nextPageToken) {
getVideos(response);
}
});
}
function addVideo(video) {
console.log(video.title);
}
getVideos();
这意味着我在上传视频时必须手动将其添加到播放列表中,这是我想要避免的。如果我必须参与进来,这并不是一个动态的过程!
如果有人偶然发现该页面并遇到与我相同的问题,则会发布此答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句