我们遇到了YouTube数据API未返回某些请求视频的统计信息的问题。我们使用自定义实现与API进行交互,但是可以使用API浏览器来重现问题,我将在整篇文章中使用它。某些视频ID缺少响应请求部分
首先,我会告诉你一个工作通道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都有效。
任何想法,高度赞赏。
有一个人注意到这个问题的另一种情况:http://stackoverflow.com/questions/43339723/missing-statistics-from-video-list-response \t 我注意到,统计信息对象缺失的视频将publicStatsViewable设置为False(https://developers.google.com/youtube/v3/docs/videos#status.publicStatsViewable)。我无法找到文档中的任何内容来说明统计对象在这种情况下会丢失,但它似乎是迄今为止的一对一关联 - 我相信publicStatsViewable是频道所有者可以设置的内容。 – user3468054
感谢您的评论@ user3468054!该文档称“即使此属性的值设置为false,视频的观看次数和评分等统计信息仍会公开显示”。这与此行为相矛盾,因为'part = statistics'返回'viewCount,likeCount,dislikeCount,favoriteCount,commentCount' –
我同意它并不真正与文档所说的一起 - 只是一个经验观察(小样本) ! 另请参阅:https://issuetracker.google.com/issues/37107133 – user3468054