如何通过YouTube API获取频道精选视频URL?
我来帮你梳理下怎么通过YouTube Data API v3拿到频道的精选或默认视频ID和对应URL,步骤很清晰,跟着来就行:
先做好准备工作
首先你得有这些:
- 一个Google Cloud项目,已经启用了YouTube Data API v3(去Google Cloud控制台搜这个API,启用它就行)
- 生成一个有效的API密钥(在控制台的「API和服务」→「凭据」里创建「API密钥」类型的凭据)
第一种情况:拿频道的默认上传视频列表(就是频道「视频」标签下的所有公开视频)
这是频道最基础的默认视频集合,操作分两步:
先拿到频道的上传播放列表ID
用Channels.list这个API端点,请求的时候带这些参数:part: 填contentDetails(我们要拿频道的内容详情)forUsername: 如果你知道频道的用户名(比如Google)就填这个;要是已经知道频道ID(比如UC_x5XG1OV2P6uZZ5FSM9Ttw),就用id参数代替forUsernamekey: 你的API密钥
举个curl请求的例子:
curl "https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=Google&key=YOUR_API_KEY"看返回的JSON,找到
contentDetails→relatedPlaylists→uploads,这个值就是该频道的上传播放列表ID。从播放列表里提取视频ID和URL
接着用PlaylistItems.list端点,参数这么填:part: 填snippet(要拿视频的基础信息)playlistId: 就是上一步拿到的上传播放列表IDmaxResults: 你想一次性拿多少个视频,最多50个key: 你的API密钥
示例请求:
curl "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UU_x5XG1OV2P6uZZ5FSM9Ttw&maxResults=10&key=YOUR_API_KEY"返回的每个
item里,snippet→resourceId→videoId就是视频ID,对应的URL直接拼就行:https://www.youtube.com/watch?v=这里填视频ID。
第二种情况:拿频道的单个精选视频(比如频道首页的预告片)
很多频道会设置一个精选视频放在首页顶部,这个可以直接从频道信息里拿到:
请求频道的品牌设置信息
还是用Channels.list,但part要改成brandingSettings,contentDetails,参数里填频道ID和你的API密钥:curl "https://www.googleapis.com/youtube/v3/channels?part=brandingSettings,contentDetails&id=UC_x5XG1OV2P6uZZ5FSM9Ttw&key=YOUR_API_KEY"提取精选视频ID
看返回的JSON,找到brandingSettings→channel→featuredVideoId,这个就是频道设置的单个精选视频ID,URL同样是https://www.youtube.com/watch?v=视频ID。👉 注意:如果频道没设置这个精选视频,这个字段就不会出现在响应里,记得处理这种空值情况。
额外说明:如果是频道的精选播放列表(多个视频组成的自定义列表)
YouTube API没有直接标记“精选播放列表”的字段,不过你可以用Playlists.list端点获取该频道的所有公开播放列表,参数填channelId=你的频道ID、part=snippet、key=你的API密钥,然后根据播放列表的标题或描述来筛选(比如很多频道会给精选列表加“精选”之类的关键词)。
几个要注意的点
- 免费版的YouTube Data API有配额限制,每天10000个请求单位,别一次性请求太多内容
- 私有视频没法通过公开API获取,只能拿到公开的内容
- 要是用代码实现,记得处理API返回的分页(如果视频超过50个,需要用
pageToken参数翻页)
内容的提问来源于stack exchange,提问作者Ravindhiran

