youtube-api - 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+ 视频的大型频道。
解决方案
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
等来使用它。如果它无论如何都不起作用,那么下一点可能会让您感兴趣。众所周知,YouTube 播放列表限制为 20 000 个视频,因此从包含更多 50 000 个视频的频道中恢复视频将无法正常工作,并且没有任何 YouTube Data API v3 端点可以恢复这些频道的所有视频。但是,当您浏览
Videos
包含超过 50 000 个视频的 YouTube 频道的选项卡时,您会发现 PlayList 方法中所有丢失的视频。例如,您可以通过使用 curl 在低级别自动执行此操作。在这里,您可能会发现一个 Python 代码正是这样做的:https ://stackoverflow.com/a/69121286/7123660
推荐阅读
- php - 如何在 php 循环中正确运行 jquery 代码
- python - Numpy 数组就地更新或隐式复制
- java - 在控制器中映射 URL(从相关表中删除数据) Spring Boot
- javascript - Bootstrap 将样式应用于表单中不需要的输入。
- delphi - TidHTTP Request 在 Fiddler 运行时有效,但在关闭时无效
- grpc - gPRC如何将数组数据从服务器发送到客户端[gPRC + Node.js]
- d3.js - 如果要缩放,要计算缩放和平移的转换值
- css - mat-form-field 样式如何自动填充标签?
- python - 使用具有不同数据框形状的 matplotlib 绘制条形图
- powershell - 从 CMD 使用时如何正确引用 PowerShell 命令路径