我一直在尝试使用新的 V3 Data API 获取评论列表,结果好坏参半。
对于某些视频,您只能获得一部分评论。我在一些视频中注意到了这一点,但对于这个特定情况,我将使用视频 ID = U55NGD9Jm7M
您可以在此处的 WebUI 中找到对此视频的所有评论:https://www.youtube.com/all_comments?v=U55NGD9Jm7M
截至发布时,该视频已有 5,499 条评论。
API 结果:
查询时https://www.googleapis.com/youtube/v3/commentThreads?part=id,snippet,replies&textFormat=plainText&maxResults=100&videoId=U55NGD9Jm7M&key= {YOUR_API_KEY}我只收到大约 317 条评论(包括寻呼,并计算所有回复)(按时间顺序排序)。
验证研究:
如果您从下拉列表中选择“热门评论”,然后向下滚动并反复点击“更多”,您会收到超过 1,000 条评论(我停在大约 1,000 条)
如果您随后从下拉列表中选择“最新的优先”并重复该过程(更多...更多...更多),您会发现大约有 317 条评论,然后您将无法显示更多评论。
我觉得 UI 中存在差异很奇怪,但庆幸的是 API 与部分 UI 是一致的。有没有其他人注意到这一点?有没有办法获取所有 5,499 条评论的全文?
谢谢!
杰森
后续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 我刷新了所有评论的 Web UI,发现返回的评论列表明显不同
最佳答案
commentsThread.list
调用最多只能返回 100 个结果(请参阅 documentation 中的 maxResults
)。如果您想获得更多评论线程,则必须将从初始调用中获得的 nextPageToken
传递到后续 API 调用中。
例如:
https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&videoId=U55NGD9Jm7M&maxResults=100&key=API_KEY
为您提供 100 个评论线程,nextPageToken
为 Cg0Qk9fa7fHgxgIgACgBEhQIARCY49LZ5eDGAhi4rNGIrZrGAhgCIGM
。如果您将该 token 包含在新的 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 数据 API v3 评论线程差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29974742/