node.js - 如何使用 pageToken?
问题描述
我正在开发一个简单的程序,这是我第一次使用 Youtube API。我想从任何视频中获取所有评论,但如果没有“pageToken”,我就无法做到这一点,有人告诉我。我似乎无法理解它的作用或如何使用它。我正在使用 node.js v13。
解决方案
顶级评论和相关回复
根据官方文档,可以使用两个 API 端点来读取附加到任何给定视频的评论——由其 ID 标识:
任何给定视频的评论的结构使得上面的第一个端点在使用参数集 as调用时返回一组分页的顶级评论(即资源) ,其中是您感兴趣的视频的 ID。CommentThreads
videoId
videoId=VIDEO_ID
VIDEO_ID
上面的第二个 API 端点用于获取附加到任何给定顶级评论的所有评论回复(即资源)的分页集,方法是为其参数指定相应顶级评论的 ID。Comments
parentId
请注意,即使CommentThreads
资源在其属性中包含评论回复列表replies
,根据文档,该列表也是不完整的。这就是为什么需要将CommentThreads.list
端点与端点一起使用的原因Comments.list
。
属性nextPageToken
和参数pageToken
现在,如上所述,APICommentThreads
分别返回资源集和Comments
资源集。这些集合是分页的,因为每个 API 调用将返回(按设计)不超过 50 个这样的项目。
因此,要CommentThreads
通过 API 端点获取给定视频的所有资源CommentThreads.list
,必须实现分页。Comments.list
在获取Comments
任何给定顶级评论的所有资源时,API 端点也是如此。
分页的含义很简单:为了获得n
分页结果集的第-页,其中,必须从第-页中n >= 2
提取属性的值,例如,并将该值传递给-th API 调用参数的 URL为. 如果给定页面不包含该属性,则分页已结束。nextPageToken
n-1
PAGE_TOKEN
n
pageToken
pageToken=PAGE_TOKEN
nextPageToken
设计强加的 API 限制
根据谷歌官方工作人员的说法CommentThreads.list
,通过对端点结果集进行分页获得的项目数量是有限的。
该限制未指定,因此需要考虑到,在某些情况下,不可能获得给定视频的所有顶级评论。这是不幸的,但却是事实。
推荐阅读
- npm - 如何运行 `npm update` 以便将版本号更新为 package.json 中兼容的最新版本?
- gitlab - 使用合并请求 API 在 squash 关闭的情况下创建 MR
- python - 在具有多个起始节点的有向无环图 (DAG) 中找到所有路径的最快方法?
- formio - 为 HTML 内容组件编辑器添加下划线
- flutter-dependencies - 酒吧失败。退出代码 65. 颤动
- post - 意外的 PHP-CURL 输出
- c# - 无法将 MonoBehaviour 脚本分配给检查器中的 AddMonoBehavioursModifierType 数组
- python - 计算由所有 8 个相邻维度中的像素组成的对象的长度
- php - 如何让这段代码更加清晰和灵活?
- r - 当父div在r闪亮中改变大小时,强制ggplot图更新宽度