gpt4 book ai didi

javascript - Youtube v3 API - pageToken 不起作用

转载 作者:行者123 更新时间:2023-11-30 06:53:20 28 4
gpt4 key购买 nike

我在使用 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();

这意味着我必须在上传每个视频时手动将其添加到播放列表,这是我试图避免的。如果我必须参与,这并不是一个真正的动态过程!

发布此答案是为了防止有人偶然发现此页面并遇到与我相同的问题。

关于javascript - Youtube v3 API - pageToken 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26551468/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com