如何通过YouTube API获取YouTube Clip的相关信息?
获取YouTube Clip专属数据的可行方案
由于YouTube官方尚未推出针对Clip的专属API,且现有Videos: list接口不支持Clip ID查询,以下是两种可获取Clip专属数据(title、views、duration、embed URL)的实用方案:
1. 解析Clip页面的内嵌数据
直接请求Clip的网页(如https://youtube.com/clip/UgkxJKmfKeQYLM9ex5qrU-W2wkwLCfRvlgYU),提取页面中的ytInitialData对象——这是YouTube页面加载时嵌入的核心数据块,包含Clip的全部专属信息:
- title:路径为
contents.clipVideoRenderer.title.runs[0].text - views:路径为
contents.clipVideoRenderer.viewCountText.simpleText - duration:可从
contents.clipVideoRenderer.durationText.simpleText获取格式化时长,或从lengthSeconds字段获取秒数 - embed URL:可直接构造为
https://www.youtube.com/embed/{CLIP_ID}?clip={CLIP_ID},也可从页面的<iframe>标签中提取 - 专属缩略图:路径为
contents.clipVideoRenderer.thumbnail.thumbnails,无需依赖父视频缩略图
注意:该方案依赖YouTube页面结构,平台可能随时调整数据路径,需做好容错处理。
2. 模拟YouTube内部GraphQL API请求
观察Clip页面的网络请求,会发现一个指向YouTube内部GraphQL接口的POST请求(通常路径包含youtubei/v1/player),模拟该请求可直接获取结构化的Clip数据:
- 请求示例(简化版):
POST https://www.youtube.com/youtubei/v1/player?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8 Content-Type: application/json { "videoId": "UgkxJKmfKeQYLM9ex5qrU-W2wkwLCfRvlgYU", "context": { "client": { "clientName": "WEB", "clientVersion": "2.20240520.01.00" } } } - 返回的JSON响应中,不仅包含Clip的title、views、duration、embed配置,还会附带父视频ID,可直接用于后续调用官方
Videos: list接口获取uploader等父视频信息。
注意:该内部API无官方文档,请求参数(如clientVersion)可能随YouTube版本更新变化,需定期验证参数有效性。
补充:结合官方API完善数据
从上述两种方案中获取父视频ID后,调用官方Videos: list接口(指定id为父视频ID,part为snippet,statistics),即可获取uploader(频道名称、ID)等与父视频一致的信息,与Clip专属数据整合后即可得到完整的所需字段。
内容的提问来源于stack exchange,提问作者slink58
相关产品推荐
相关产品推荐

