【问题标题】:Youtube Data API v3: commentThread call doesn't give replies for some comment threadsYoutube Data API v3:commentThread 调用不回复某些评论线程
【发布时间】:2015-10-11 09:01:22
【问题描述】:

commentThread API 调用有问题。这是一个具体案例:评论 id: z13ocxipdz3hwxqqe04cgbuadtmnhhmybyc0k

https://www.googleapis.com/youtube/v3/commentThreads?id=z13ocxipdz3hwxqqe04cgbuadtmnhhmybyc0k&part=snippet%2C+replies&key={YOUR_DEVELOPER_KEY}&alt=json&order=time

目前有 44 条回复。

但是,如果您使用 video_id(不是我们上面所做的评论 id。链接:https://www.googleapis.com/youtube/v3/commentThreads?videoId=Ui-ulCWmpOU&maxResults=100&pageToken=ChYQp7fipbfsxgIYkNGqiobjxQIgACgDEhQIABCQ0aqKhuPFAhiMqqKive-5AhgCIKwC&part=snippet%2C+replies&key={YOUR_DEVELOPER_KEY}&alt=json&order=time)并遇到评论(您可能必须使用 pageToken 来遍历页面),您将看到这个:

(截图:https://www.dropbox.com/s/d4bf9tk51eaw7dr/Screenshot%202015-07-21%2021.08.31.png?dl=0

如您所见;有 39 条回复 (cmets) 不正确。即使我们有回复;没有回复部分。我错过了什么吗?

两个问题:为什么回复数不匹配?为什么那个commentThread有39条回复都没有回复?

注意:作为part,我使用的是“sn-p,回复”。我没有收到任何 API 错误(如油门或限制违规)

【问题讨论】:

    标签: youtube youtube-api


    【解决方案1】:

    来自评论线程documentation

    commentThread 资源不一定包含所有回复 注释,如果你想的话,你需要使用 cmets.list 方法 检索特定评论的所有回复。

    改用comments.list 调用并为parentId 指定commentThread 的ID。

    当我进行以下调用时:

    https://www.googleapis.com/youtube/v3/comments?part=snippet,id&parentId=z13ocxipdz3hwxqqe04cgbuadtmnhhmybyc0k&key=[API_KEY_HERE]&order=time&maxResults=50
    

    我收到了对您提到的评论主题的所有 (44) 条回复。

    解决您的问题:

    为什么回复数不匹配?

    如果我不得不猜测,我会说这可能是由于 API 如何区分 cmets 和评论线程(它认为对线程中其他回复的回复,而不是与视频本身相关联)。由于文档说 commentThread 资源可能不包含对评论的所有回复,我认为这仍然按预期工作。无论如何,在未来通常最好只报告更多的回复,因为 API 更有可能丢失一些结果而不是报告额外的结果。另外,请记住,如果您想要某个评论线程的所有回复,您应该使用 cmets.list。

    为什么commentThread有39条回复却没有回复?

    老实说,我不确定这是 YouTube 的东西还是 G+ 的东西。当我查看其他一些有回复的评论线程时,我能够在指定视频 ID 时通过 API 调用看到它们。但是,正如丹尼尔所说,您实际上看不到您在视频本身上指定的线程的回复(但您可以在访问该用户的 G+ 页面时看到它们)。用户可能对他们共享帖子上的 cmets 的 G+ 设置进行了某些操作,这就是为什么他们没有出现在视频本身上,因此没有出现在 commentThreads 列表请求中。除非您与熟悉 G+/YouTube 集成的人交谈,否则很难说。

    【讨论】:

      【解决方案2】:

      虽然我无法肯定地回答您的问题,但我能够找到一些有用的信息,可以为您提供一些清晰和方向的信息。

      关于您问题中概述的具体案例:用户"authorDisplayName": "Tammy L." 于2013 年11 月16 日对视频"videoId": "Ui-ulCWmpOU" 发表了评论,并在2013 年11 月16 日至2013 年11 月18 日之间收到了回复。根据 Tammy L. 在 Google+ 上的记录,从这一天起,她最初的评论有 44 条回复:

      尽管根据 YouTube 上的记录,她的评论似乎有 42 条回复,这与您的 API 调用返回的任何一个值都不匹配。更奇怪的是,当我点击“查看所有 42 条回复”时,Google 不会显示 cmets:

      commentId 电话似乎提供了对 Tammy L. 最初评论的正确回复数量,这与她的 Google+ 帐户上显示的回复数量一致。也许videoId 调用的问题(包括此调用不提供replies 的事实)可归因于changes Google 在 Tammy L. 发表初步评论(2013 年 11 月)前后实施的,尽管我不完全确定。

      【讨论】:

      • 嘿丹尼尔。感谢您挖掘它。我无法在网站上打开 cmets;我认为这与我有关,但更奇怪的是没有人打开回复......你可能是对的:更改后它们变得不可见。我还检查了 cmets 数量的差异是否与审核状态有关(其中两个可能处于“heldForReview”状态,因此我们在 Youtube.com 中看不到其中两个),但 API 为每次调用提供了 44 个结果.
      • 我的荣幸,@Thorn;这就说得通了。感谢您向 SO 提出这个问题;多么奇怪的现象!如果您遇到任何其他异常情况,很乐意为您提供进一步的帮助。
      猜你喜欢
      • 2018-04-14
      • 2016-08-27
      • 2015-08-09
      • 2016-03-24
      • 2015-07-10
      • 2016-05-29
      • 2016-09-05
      • 2015-11-09
      • 2015-08-23
      相关资源
      最近更新 更多