能否通过YouTube API按频道名/ID获取用户上传的全部视频列表?
当然可行!这其实是YouTube API里非常常用的操作,我来给你拆解具体步骤:
第一步:获取目标频道的「上传视频播放列表ID」
你之前看的Channels List API确实默认只返回基础信息,但只要调整请求的part参数,就能拿到关键的播放列表ID:
- 如果知道频道ID:调用Channels List时指定
part=contentDetails&id=你的频道ID,返回结果里的items[0].contentDetails.relatedPlaylists.uploads就是该频道所有上传视频的专属播放列表ID。 - 如果只有频道名称:把参数换成
part=contentDetails&forUsername=你的频道名称,同样能拿到这个上传播放列表ID。
第二步:遍历播放列表获取所有视频
拿到上传播放列表ID后,用PlaylistItems.list API来获取列表里的所有视频:
- 请求参数需要包含
part=snippet,contentDetails(这样能拿到视频ID、标题、发布日期等基础信息),加上playlistId=刚才拿到的播放列表ID,还有maxResults=50(这是单次请求的最大返回数)。 - 如果频道上传的视频超过50个,API返回结果里会有
nextPageToken,把这个token作为参数加入下一次请求,反复调用直到没有nextPageToken,就能拿到所有上传视频。
第三步:(可选)获取视频的详细信息
如果需要视频的时长、观看量、评论数这些更详细的数据,把从PlaylistItems里拿到的contentDetails.videoId收集起来,批量调用Videos.list API:
- 参数设置为
part=snippet,contentDetails,statistics&id=视频ID1,视频ID2,...(一次最多可以传50个视频ID),就能批量获取你需要的详细信息。
注意事项
- API配额限制:PlaylistItems和Videos的单次请求各消耗1个配额单位,批量请求50个视频也只算1个单位,所以合理批量调用能节省配额。
- 隐私权限:如果频道的视频是私有或未列出状态,你的API密钥没有对应权限的话,是无法获取这些视频的,会返回权限错误。
内容的提问来源于stack exchange,提问作者semiflex




