【问题标题】:YouTube Data API v3 Comment Thread DiscrepencyYouTube 数据 API v3 评论线程差异
【发布时间】:2015-07-10 13:39:52
【问题描述】:

我一直在尝试使用新的 V3 数据 API 获取 cmets 列表,但结果好坏参半。

对于某些视频,您只能获得一部分 cmets。我在一些视频中注意到了这一点,但对于这种特定情况,我将使用视频 ID = U55NGD9Jm7M

您可以在此处的 WebUI 中找到此视频中的所有 cmets:https://www.youtube.com/all_comments?v=U55NGD9Jm7M

在发布时,该视频有 5,499 个 cmets。

API 结果

在查询https://www.googleapis.com/youtube/v3/commentThreads?part=id,snippet,replies&textFormat=plainText&maxResults=100&videoId=U55NGD9Jm7M&key={YOUR_API_KEY} 时,我只得到大约 317 个 cmets(包括分页,并计算所有回复)(按时间顺序排序)。

验证研究

如果您从下拉列表中选择“热门评论”,然后向下滚动并一遍又一遍地单击“更多”,您将获得超过 1,000 个 cmets(我停在大约 1,000 个)

如果您随后从下拉列表中选择“最新的优先”并重复该过程(更多...更多...更多),您会发现在您无法显示更多 cmets 之前大约有 317 个 cmets。

我觉得 UI 中存在差异很奇怪,但感谢 API 与 UI 的一部分对齐。有没有其他人注意到这一点?有没有办法获取全部 5499 cmets 的全文?

谢谢!

杰森

跟进1

作为后续,我能够使用 View->Source(线程 ID z12wzfzhtybgz13kj22ocvsz2unrtn1qj04)隔离一条评论,并在此处的 API 中从该评论中获取所有信息:https://www.googleapis.com/youtube/v3/commentThreads?part=id%2Csnippet%2Creplies&id=z12wzfzhtybgz13kj22ocvsz2unrtn1qj04&maxResults=100&key={YOUR_API_KEY})

它甚至提到了与评论相关联的正确 VideoID。但是,当您通过视频查询时,不会返回此评论ID。

跟进2 我刷新了 All Comments 的 Web UI,返回的 cmets 列表明显不同

【问题讨论】:

  • 我遇到了同样的问题,即使你设置了order=relevance,你仍然没有得到所有的 cmets,尽管它提供了更多。

标签: youtube youtube-data-api


【解决方案1】:

commentsThread.list 调用最多只能返回 100 个结果(参见documentation 中的maxResults)。如果您想获得更多评论线程,则必须将您从初始调用中获得的 nextPageToken 传递到后续 API 调用中。

例如:

https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&videoId=U55NGD9Jm7M&maxResults=100&key=API_KEY

给你100个评论线程,nextPageTokenCg0Qk9fa7fHgxgIgACgBEhQIARCY49LZ5eDGAhi4rNGIrZrGAhgCIGM。如果您在新的 API 调用中包含该令牌,如下所示:

https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&videoId=Dlj6SUg9B04&&maxResults=100&nextPageToken=Cg0Qk9fa7fHgxgIgACgBEhQIARCY49LZ5eDGAhi4rNGIrZrGAhgCIGM&key=API_KEY

您会得到一组完全不同的评论线程。您可以通过在两个 API 调用中指定 order=time 来仔细检查这一点。您会看到两个调用的最早评论线程不同,并且您不会在另一个调用的结果中找到任何一个的评论线程 ID。要获得更多评论线程,您可以从新呼叫的结果中获取nextPageToken,然后再次执行相同的操作(直到呼叫没有给您另一个nextPageToken,这意味着您在最后一页,并且有没有更多评论线程要返回)。

【讨论】:

  • 我很确定他说他浏览了所有页面。 Youtube 停止发送 nextPageToken。他想知道为什么。如果它在文档中,则不容易访问,因为我遇到了同样的问题。
  • 我在 Youtube 界面上显示了超过 8k cmets,但是,使用评论 threds id 为所有线程 id 调用 cmets.list() 我只能得到 1200 cmets。 API确实有问题。我使用下一页令牌得到的线程数只有 652 个。由于大多数线程的 cmets 不超过 2 或 3 个,我相信 API 返回中缺少很多 commentThreads。
猜你喜欢
  • 2018-04-14
  • 2016-03-24
  • 2013-09-20
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 2016-09-01
  • 2015-08-09
相关资源
最近更新 更多