【发布时间】:2017-09-06 19:54:52
【问题描述】:
我们面临的问题是 YouTube 数据 API 没有返回某些请求视频的统计信息。我们使用自定义实现与 API 交互,但可以使用 API 浏览器重现该问题,我将在本文中使用它。
首先,我将向您展示使用有效频道 ID (UCfDUwK9MPrjxmsTz1pzjkbw) 会发生什么:
将channels.List 与part=statistics,contentDetails,snippet 和id=UCfDUwK9MPrjxmsTz1pzjkbw 一起使用,我们会得到有效响应。对于这个用例,我们对 contentDetails -> relatedPlaylists -> uploads 感兴趣,它返回播放列表 ID UUfDUwK9MPrjxmsTz1pzjkbw。
playlistItems.List 与 part=contentDetails 和 playlistId=UUfDUwK9MPrjxmsTz1pzjkbw(我们在上一步中找到的播放列表 ID)返回属于播放列表一部分的视频列表。我们对contentDetails -> videoId 感兴趣。例如vSS9AYF29_U。
videos.List 与 part=id,statistics 和 id=vSS9AYF29_U(上一步中的示例视频 ID)我们得到了我们正在寻找的响应(该视频的统计信息)。
现在,具有频道 ID 的同一进程无法产生所需的结果 (UCpHTv1eQBeSlrdmlh8C6ZxQ):
channels.List 返回播放列表 ID UUpHTv1eQBeSlrdmlh8C6ZxQ
playlistItems.List 返回示例视频 ID OFTib3gUua0
videos.List 确实不返回请求的统计信息部分。
有人知道为什么会这样吗?是什么让这个频道如此特别?频道所有者可以禁用通过 API 检索的公共信息吗?如果您在浏览器中观看视频 (https://youtu.be/OFTib3gUua0),就可以看到统计数据本身。
我认为问题不在于我们的实现,因为它可以通过 API 资源管理器重现。另一个奇怪的事情是,几天前我们使用的每个频道 ID 都可以使用。
高度赞赏任何想法。
【问题讨论】:
-
还有一个人注意到这个问题的例子:stackoverflow.com/questions/43339723/… 我注意到缺少统计对象的视频的 publicStatsViewable 设置为 False (developers.google.com/youtube/v3/docs/…)。我在文档中找不到任何内容说在这种情况下会丢失统计对象,但到目前为止它似乎是一对一的相关性 - 我相信 publicStatsViewable 是频道所有者可以设置的.
-
感谢您的评论@user3468054!文档说“即使此属性的值设置为 false,视频的观看次数和收视率等统计数据仍将公开可见。”这与行为相矛盾,因为
part=statistics返回viewCount, likeCount, dislikeCount, favoriteCount, commentCount -
我同意它并没有真正与文档所说的内容挂钩 - 只是一个经验观察(在一个小样本上)!另见:issuetracker.google.com/issues/37107133
-
目前看不出有什么问题。然而,有一些人说“随机”内容没有奏效。可能是他们在后端做某事时出现的错误。
标签: youtube youtube-api youtube-data-api