【问题标题】:How to get all total result data by youtube api?如何通过 youtube api 获取所有总结果数据?
【发布时间】:2019-11-12 10:15:07
【问题描述】:

我正在使用 Youtube Api 获取频道的所有视频详细信息

https://www.googleapis.com/youtube/v3/search?part=snippet,id&key=XXXXXXXX&channelId=UCq-Fj5jknLsUf-MWSy4_brA&order=date&maxResults=50

You can see response

在第一个响应中,我可以看到有 761525 个结果,并且 nextPageToken 也在那里,但是使用该下一页令牌我可以在该 API 没有给我任何结果之后最多 300 到 400 个视频详细信息。

那么还有其他方法可以获取所有视频详细信息吗?还是我遗漏了什么?

【问题讨论】:

    标签: youtube youtube-api


    【解决方案1】:

    YouTube 为任何搜索请求返回 500 个视频的软限制。

    如果 totalResults 中的数量超过此数量,您可以使用 publishedAfterpublishedBefore 过滤器拆分搜索查询,以按天/周/月等循环遍历日期。 ,确保每个“时间窗口”返回小于 500 的限制。最终,您将获得所有结果。

    【讨论】:

    • 不,使用publishAfter 和publishBefore 不起作用。在这种情况下,给定相同的总结果,但在仅日期匹配数据的项目中会发生什么。
    • 是的,就是这样。循环日期以获取所有日期。
    • 但我面临的一件事是,当我尝试在 youtube 页面中计数时,我从 API 中只获得了 473 个视频,我发现有 1200 个视频。那么你知道这个区别吗???
    【解决方案2】:

    在您第一次请求 API 调用后,例如: https://www.googleapis.com/youtube/v3/search?part=snippet,id&key=XXXXXXXX&channelId=UCq-Fj5jknLsUf-MWSy4_brA&order=date&maxResults=50

    您需要获取该(第一个)结果的 nextPageToken 参数,并将其提供给下一个(第二个)请求。假设第一个结果的nextPageToken是ABCDEFG,你的下一个请求一定是这样的: https://www.googleapis.com/youtube/v3/search?part=snippet&pageToken=ABCDEFG,id&key=XXXXXXXX&channelId=UCq-Fj5jknLsUf-MWSy4_brA&order=date&maxResults=50

    看到在 sn-p 之后我添加了 &pageToken=ABCDEFG。然后您再次获取此(第二个)结果的参数 nextPageToken 的字符串并将其提供给您的下一个(第三个)请求。因此,您需要使用 while 循环执行此操作,直到 nextPageToken 为空,这意味着您已达到边界编号(在您的情况下为 761525 结果)。或者,您可以通过获得一定数量的结果来解决此问题。

    总结:

    1. 请求您的第一个 API 调用
    2. 做一个循环
    3. 取 nextPageToken 值
    4. 对于您的下一个请求,请在 sn-p 之后添加此部分 &pageToken=
    5. 在&pageToken=之后写入nextPageToken的值
    6. 从第 2 步开始重复直到达到特定条件(直到获得所有结果或仅获得一定数量的结果)

    【讨论】:

    • 是的,但它只适用于某些页面
    • 那是因为并非所有页面都有下一页。例如,最后一页没有下一页,因为它是最后一页……还有一些页面没有很多结果,因此不需要下一页。我认为如果属性 nextPageToken 存在,您就足以处理这种情况,然后获取下一页的数据,如果不存在,则在那里中断循环(不要继续请求 API)
    • 另外,请注意每日配额,您每天只能请求这么多免费 API,如果达到限制,则响应不会是 200(不正常)。
    • 是的,我检查了限制,googleapis.com/youtube/v3/search 这里你可以看到我直接使用了搜索 API。所以这个 API 对数据有限制。所以现在寻找频道和播放列表 API。
    猜你喜欢
    • 1970-01-01
    • 2018-02-13
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多