我正在开发一个简单的程序,这是我第一次使用Youtube API。我想从任何视频中获取所有评论,但是如果没有"pageToken",我就做不到,有人告诉我。我似乎无法理解它的作用或如何使用它。我正在使用节点.js v13。
注释和相关回复
根据官方文档,有两个API端点可供使用,w.r.t.读取任何给定视频附带的评论 - 由其ID标识:
CommentThreads.list
和Comments.list
.
任何给定视频的评论都是结构化的,即上面的第一个端点返回一组分页的顶级评论(即CommentThreads
资源)调用时,参数videoId
设置为videoId=VIDEO_ID
,其中VIDEO_ID
是您感兴趣的视频的 ID。
上面的第二个 API 端点将用于获取所有评论回复的分页集(即Comments
资源)附加到任何给定的顶级注释,方法是指定其参数parentId
相应顶级注释的 ID。
请注意,即使CommentThreads
资源在其属性replies
中包含注释回复列表,根据文档,该列表也是不完整的。这就是为什么需要将CommentThreads.list
端点与Comments.list
端点结合使用的原因。
属性nextPageToken
和参数pageToken
现在,如上所述,API 分别返回CommentThreads
集和Comments
资源集。这些集是分页的,因为每个 API 调用将返回(根据设计)不超过 50 个此类项。
因此,要通过 API 端点获取给定视频的所有CommentThreads
资源CommentThreads.list
必须实现分页。在获取任何给定顶级注释的所有Comments
资源时,Comments.list
API 端点也是如此。
分页的含义很简单:为了获得分页结果集的第n
页,其中n >= 2
,必须从n-1
页中提取属性nextPageToken
的值,例如PAGE_TOKEN
,并将该值传递给调用参数pageToken
的n
-th API 作为pageToken=PAGE_TOKEN
。如果给定页面不包含属性nextPageToken
,则分页到达其末尾。
设计施加的 API 限制
根据谷歌官方工作人员的声明,通过对CommentThreads.list
端点的结果集进行分页获得的项目数量是有限的。
没有指定该限制,因此需要考虑的是,在这种情况下,将无法获得给定视频的所有顶级评论。这是不幸的,但这是事实。
按照以下文档进行操作: https://developers.google.com/youtube/v3/quickstart/nodejs 它将回答您的所有问题。