【问题标题】:YouTube Data API not returning all Videos in ChannelYouTube 数据 API 未返回频道中的所有视频
【发布时间】:2021-12-06 10:32:31
【问题描述】:

我正在尝试获取频道中所有视频的列表,使用 playlistItems 列表通过传递 playlistId 来获取所有视频。示例 -

使用 channels.list API 调用获取您频道的上传播放列表的 ID:GET https://www.googleapis.com/youtube/v3/channels?part=contentDetails&id={YOUR_CHANNEL_ID}&key={YOUR_API_KEY}

使用 playlistItems.list 调用从上传播放列表中获取视频:GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&playlistId={YOUR_PLAYLIST_ID}&key={YOUR_API_KEY}

我正在使用下一页令牌来访问页面并循环,直到我不断获得下一页令牌。

但我注意到,这是非常不一致的。以上内容并未返回频道的所有视频。所有丢失的视频都可以在 YouTube 上找到,并且在使用 VideosList 端点传递其 videoId 时也会返回有效数据。

到目前为止,我注意到每次都缺少相同的视频,而它们在过去是可用的。这是 YouTube API 的一个已知问题吗?

还有没有其他方法可以获取所有状态(公开、私人、未列出)的频道的所有视频。甚至可以拥有 50k+ 视频的大型频道。

【问题讨论】:

    标签: youtube-api youtube-data-api


    【解决方案1】:
    1. https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=3&playlistId={YOUR_PLAYLIST_ID}&key={YOUR_API_KEY} 不会返回所有视频,因为maxResults=3 您可以将maxResults 增加到 50。在获得前 50 个结果(如果超过 50 个)后,将提供一个新的 newPageToken您必须通过附加到以前的 URL &pageToken=THE_NEW_PAGE_TOKEN 等来使用它。如果它无论如何都不起作用,那么下一点可能会让您感兴趣。

    2. 众所周知,YouTube 播放列表限制为 20,000 个视频,因此从包含更多 50,000 个视频的频道中恢复视频将无法正常工作,并且没有任何 YouTube Data API v3 端点可以恢复这些频道的所有视频. 但是当您浏览包含超过 50,000 个视频的 YouTube 频道的 Videos 选项卡时,您会发现 PlayList 方法中丢失的所有视频。例如,您可以通过使用 curl 在低级别自动执行此操作。在这里,您可能会发现一个 Python 代码正是这样做的:https://stackoverflow.com/a/69121286/7123660

    【讨论】:

    • 您好,感谢您的回复。我已经更新了我的答案,我实际上是在使用 maxResults=50 和下一页令牌来循环浏览所有视频,但仍然面临同样的问题。
    • 对于您的解决方案 #2,它不会提供私人和不公开的视频。
    • 如果频道是您的,您可以调整我的算法以从 YouTube Studio 界面恢复私人和未列出的视频。如果频道不是您的,则无法列出私人和未列出的视频,否则将是隐私问题。
    猜你喜欢
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 2019-09-01
    • 2018-03-30
    • 1970-01-01
    相关资源
    最近更新 更多