【问题标题】:Youtube data api search issue, next page results contain previous page's videosYoutube 数据 api 搜索问题,下一页结果包含上一页的视频
【发布时间】:2022-11-08 17:52:13
【问题描述】:
  • 我使用 youtube data api 返回搜索结果。为了获得更多结果,我使用 nextPageToken 作为参数。 => 当我点击 btn 时,显示下一页的 5 个视频。
  • 它确实有效,但某些下一页结果包含上一页的视频。
  • 我预计如果第三页面视频是一个, b, c, d, e, 第 4 页项目为 f, g, h, i, j。
  • 但是第 4 名页面就像一个, f, g, h, i 什么的。我不确定是否有任何规则。
search = async (input) => {
    const response = await fetch(
      `https://youtube.googleapis.com/youtube/v3/search?part=snippet&q=${input}&type=video&maxResults=15&key=${this.key}`,
      this.requestOptions
    );
    return await response.json();
  };

loadMore= async (searchToken, inputValue) => {
    const response = await fetch(
      `https://youtube.googleapis.com/youtube/v3/search?part=snippet&q=${inputValue}&type=video&pageToken=${searchToken}&key=${this.key}`,
      this.requestOptions
    );
    return await response.json();
  };

有没有人经历过并解决了这个问题?

【问题讨论】:

  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如它目前所写的那样,很难准确地说出你在问什么。
  • 你如何调用 async (searchToken, inputValue) 你确定你没有发送 prevPageToken
  • 我之前用控制台检查过,没有问题。新项目与上一页不完全相同,但包括一些项目。

标签: javascript search pagination youtube-api youtube-data-api


【解决方案1】:

Youtube API 以分页方式返回响应。这意味着如果您使用搜索功能,您的搜索结果将在不同的页面上可用,其中每个页面都有不同的页面令牌。 maxResults 参数确定每页上的结果数(默认值=50)。要解决此问题并在每次调用时返回新的/不同的响应,请传递下一页令牌到您的下一个 API 调用。

例如,如果您的第一个 API 调用如下所示:

GET https://youtube.googleapis.com/youtube/v3/search?part=snippet&maxResults=10&q=cricket&key=[YOUR_API_KEY]

您的 API 响应如下所示:

{
"kind": "youtube#searchListResponse",
"etag": "uN1c33JfiFaPBemlxN5kH8lSaHw",
"nextPageToken": "CAoQAA",
"regionCode": "IN",
"pageInfo": {
  "totalResults": 1000000,
  "resultsPerPage": 10
},

要获得这 1000000 个的下 10 个结果,请添加 pagetoken =下一页令牌对于您的查询,如下所示:

GET https://youtube.googleapis.com/youtube/v3/search?part=snippet&maxResults=10&pageToken=CAoQAA&q=cricket&key=[YOUR_API_KEY]

瞧!

{
"kind": "youtube#searchListResponse",
"etag": "NeaA5DLyr3YIaKdX5ZxETA3GfhY",
"nextPageToken": "CBQQAA",
"prevPageToken": "CAoQAQ",
"regionCode": "IN",
"pageInfo": {
  "totalResults": 1000000,
  "resultsPerPage": 10
}

您将获得接下来的 10 个结果!

第一页没有任何 PAGETOKEN,所以第一个 API 调用需要在没有 PAGETOKEN 参数的情况下进行

【讨论】:

    猜你喜欢
    • 2019-10-03
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 2022-07-20
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    相关资源
    最近更新 更多