首页 > 解决方案 > YouTube 数据 API 未返回频道中的所有视频

问题描述

我正在尝试获取频道中所有视频的列表,使用 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-apiyoutube-data-api

解决方案


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

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


推荐阅读