【问题标题】:Paginating in youtube API V3youtube API V3 中的分页
【发布时间】:2015-07-29 12:42:54
【问题描述】:

我是 youtube API V3 的新手,现在我可以获取某些用户的视频并将其显示在我的网站上,但是现在当结果超过 50 个视频时,我想为他们进行分页,可以说我的结果是 240所以我现在有 5 页我如何在不通过链接 1、2 或 3 的情况下请求第 4 页 这是我的列表请求:-

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUdxi8d8qRsRyUi2ERYjYb-w&key={myKey}

有一个页面令牌允许我浏览链接,但这意味着我必须使用 next 和 prev 请求 那么有没有办法直接加载第4页?

【问题讨论】:

标签: youtube youtube-api youtube-data-api


【解决方案1】:

无法直接加载特定页面,您需要为每个页面调用带有nextPageToken 的 API(在您的示例中是 4 次)。

【讨论】:

  • 但是通过这种方式请求会很大并且会完成我的配额
  • 您可以在您的请求中将part 指定为id,您只需要下一页令牌而不需要其他任何内容。这将降低每次通话的报价成本。此外,缓存会降低成本,但需要专门为您的应用程序实现。
  • 还有一种方法可以减少返回的字段数量(这也可能减少配额影响和带宽使用),方法是添加fields 参数并指定哪些字段(及其括号中的子字段)应该在响应中返回。
【解决方案2】:

我不推荐这种方法,但为了完整起见将其包括在内,因为它提供了问题的直接解决方案,而其他答案提供了替代方案。

无论播放列表或访问日期如何,Youtube 似乎都使用相同的 pageTokens。例如,第二页的pageToken 始终为CDIQAA,第三页的CGQQAA

这些并不保证总是保持不变,但根据早在 2014 年的 stackoverflow 帖子,它已经很长时间没有改变,所以这是一个合理的假设。

因此,您可以像往常一样请求前五个页面,然后保留页面令牌(例如,在本地缓存中)。然后每当您需要时,例如未来第 240 项,只需查找第 5 页令牌(恰好是 CMgBEAA)并直接访问该页面。

这是第 9 个页面的标记:

1 <blank>
2 CDIQAA 
3 CGQQAA
4 CJYBEAA
5 CMgBEAA
6 CPoBEAA
7 CKwCEAA
8 CN4CEAA
9 CJADEAA

【讨论】:

    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 2014-04-10
    • 2014-11-13
    • 2013-12-26
    • 2018-05-23
    • 2019-11-14
    • 1970-01-01
    • 2013-01-28
    相关资源
    最近更新 更多