你想要详细了解 YouTube 对应「item_get_video」功能的接口参数(即 YouTube Data API v3 的 videos.list 接口),核心是掌握如何通过精准配置参数,只获取自己需要的视频信息(避免冗余数据)。以下是该接口所有核心参数的详细解析、组合示例及避坑指南,帮你精准控制返回数据的范围和格式。
一、核心前提:明确 videos.list 接口的参数分类
videos.list 是获取 YouTube 视频详情的核心接口,参数分为 必选参数、过滤参数、数据范围参数、分页 / 格式参数 四大类,所有参数通过 GET 请求传递(拼接在 URL 后)。
| 参数分类 | 核心作用 | 包含参数示例 |
| 必选参数 | 基础身份验证与数据定位 | key、part、id/mine |
| 过滤参数 | 筛选符合条件的视频 | chart、regionCode、maxResults |
| 数据范围参数 | 控制返回的字段细节 | hl、fields |
| 分页 / 格式参数 | 控制返回数量、分页、数据格式 | pageToken、maxResults、prettyPrint |
二、核心参数详解(按使用频率排序)
1. 必选参数(缺一不可)
(1)key
- 作用:API 身份验证,验证你的开发者权限;
- 取值:Google Cloud 控制台申请的 YouTube Data API v3 密钥(字符串);
- 示例:
key=AIzaSyDxxxxxxxxx9f8xxxxxxxxx; - 注意:
- 必须限制密钥权限(IP+API 范围),避免泄露后被恶意盗用;
- 错误值会返回
API key not valid或Access Not Configured。
(2)part
- 作用:指定返回的视频数据片段(核心参数,决定能获取哪些信息);
- 取值:多个片段用逗号分隔,支持以下值(按常用度排序):
part 值 |
包含的核心信息 | 配额消耗 |
snippet |
基础元数据:标题、简介、发布时间、频道名称、缩略图、标签、分类 ID 等 | 1 单位 |
statistics |
统计数据:播放量、点赞数、评论数、收藏数、分享数等 | 1 单位 |
contentDetails |
内容详情:视频时长(ISO 8601)、分辨率、字幕、是否允许嵌入、播放区域限制等 | 1 单位 |
status |
状态信息:隐私设置(公开 / 私有 / 未列出)、是否下架、版权状态、发布状态等 | 1 单位 |
player |
播放器信息:视频嵌入代码、是否允许嵌入等 | 1 单位 |
topicDetails |
主题信息:视频关联的主题标签(如音乐、游戏)、相关 URL 等 | 1 单位 |
liveStreamingDetails |
直播信息(仅直播视频):开始时间、结束时间、观看人数等 | 1 单位 |
- 示例:
part=snippet,statistics(仅获取基础信息 + 统计数据); - 注意:
- 只选需要的
part,减少返回数据量和配额消耗(比如仅需标题就只传snippet); - 不传
part会返回Required parameter: part错误。
(3)id / mine(二选一,定位视频)
① id(最常用)
- 作用:指定要查询的视频 ID(公开视频专用);
- 取值:单个视频 ID 或多个用逗号分隔(最多 50 个);
- 示例:
id=dQw4w9WgXcQ(单个)、id=dQw4w9WgXcQ,abc123def456(批量); - 注意:
- 视频 ID 是 YouTube 链接中
v=后的字符串(如https://youtu.be/dQw4w9WgXcQ的 ID 是dQw4w9WgXcQ); - 传入不存在 / 私有视频 ID 会返回空的
items数组。
② mine(仅私有视频)
- 作用:查询当前授权用户自己上传的视频(需 OAuth 2.0 授权,不能用 API Key);
- 取值:布尔值
true(仅支持true); - 示例:
mine=true; - 注意:
- 必须搭配 OAuth 2.0 令牌(参数
access_token),否则返回权限错误; - 常用于获取自己账号的私有视频数据。
2. 过滤参数(精准筛选视频)
(1)chart
- 作用:筛选热门视频(无需传
id/mine); - 取值:仅支持
mostPopular(当前地区热门视频); - 示例:
chart=mostPopular®ionCode=US(获取美国区热门视频); - 注意:需搭配
regionCode使用,否则默认按 IP 所在地区返回。
(2)regionCode
- 作用:指定地区 / 国家(ISO 3166-1 alpha-2 代码),筛选对应地区的视频;
- 取值:两位字母(如
US= 美国、CN= 中国、JP= 日本); - 示例:
regionCode=CN; - 注意:仅对
chart=mostPopular生效,查询指定 ID 视频时无意义。
(3)videoCategoryId
- 作用:按视频分类筛选(仅对
chart=mostPopular生效); - 取值:分类 ID(可通过
videoCategories.list接口查询分类列表,如10= 音乐、20= 游戏); - 示例:
chart=mostPopular&videoCategoryId=10®ionCode=US(美国区热门音乐视频)。
3. 数据范围参数(控制返回字段)
(1)fields
- 作用:精准过滤返回的字段(仅返回需要的键值对,减少数据量);
- 取值:Google 风格的字段选择语法,支持:
items(id,snippet(title,channelTitle),statistics(viewCount)):仅返回视频 ID、标题、频道名、播放量;items/*:返回所有 items 下的字段;nextPageToken:仅返回分页令牌;
- 示例:
fields=items(id,snippet(title),statistics(viewCount)); - 核心价值:比如你只需要视频标题和播放量,无需返回简介、缩略图等冗余数据,通过
fields可大幅减少响应体大小,提升接口调用效率。
(2)hl
- 作用:指定返回数据的语言(影响标题、简介的翻译 / 本地化);
- 取值:BCP-47 语言代码(如
zh-CN= 简体中文、en-US= 英文、ja-JP= 日语); - 示例:
hl=zh-CN; - 注意:仅对支持本地化的字段生效(如分类名称),视频标题 / 简介为创作者填写的原始语言,不会自动翻译。
4. 分页 / 格式参数
(1)maxResults
- 作用:控制单次返回的视频数量;
- 取值:整数,范围 1-50(默认 5);
- 示例:
maxResults=10(单次返回 10 个视频); - 注意:仅对
chart=mostPopular或批量id(>5 个)生效,单个视频 ID 查询时无意义。
(2)pageToken
- 作用:分页查询(获取下一页 / 上一页数据);
- 取值:接口返回的
nextPageToken(下一页)或prevPageToken(上一页); - 示例:
pageToken=CAUQAA; - 使用场景:查询热门视频时,若需获取超过 50 个视频,需通过
pageToken分页。
(3)prettyPrint
- 作用:控制返回 JSON 的格式(是否格式化);
- 取值:布尔值
true/false(默认true); - 示例:
prettyPrint=false(返回压缩的 JSON,减少数据传输量); - 建议:生产环境设为
false,提升传输效率;开发环境设为true,便于调试。
三、参数组合示例(精准获取所需数据)
示例 1:仅获取视频标题 + 播放量(极简数据)
python
运行
import requests API_KEY = "你的API密钥" VIDEO_ID = "dQw4w9WgXcQ" # 核心参数:仅选需要的part + 精准fields过滤 params = { "key": API_KEY, "part": "snippet,statistics", # 仅加载需要的片段 "id": VIDEO_ID, "fields": "items(id,snippet(title),statistics(viewCount))" # 仅返回ID、标题、播放量 } url = "https://www.googleapis.com/youtube/v3/videos" response = requests.get(url, params=params) print(response.json())
返回结果(极简):
json
{ "items": [ { "id": "dQw4w9WgXcQ", "snippet": {"title": "Rick Astley - Never Gonna Give You Up (Official Music Video)"}, "statistics": {"viewCount": "14000000000"} } ] }
示例 2:获取视频基础信息 + 时长 + 隐私状态
python
运行
params = { "key": API_KEY, "part": "snippet,contentDetails,status", "id": VIDEO_ID, "fields": "items(id,snippet(title,channelTitle),contentDetails(duration),status(privacyStatus))", "hl": "zh-CN" # 本地化语言 }
示例 3:批量查询 10 个热门音乐视频(分页 + 筛选)
python
运行
params = { "key": API_KEY, "part": "snippet,statistics", "chart": "mostPopular", "regionCode": "US", "videoCategoryId": "10", # 音乐分类 "maxResults": 10, # 单次返回10个 "fields": "items(id,snippet(title),statistics(viewCount)),nextPageToken" # 含分页令牌 }
四、参数使用避坑指南
- 避免冗余
part:
- 比如仅需播放量,却传
part=snippet,statistics,contentDetails,会浪费配额且返回冗余数据; - 原则:只传需要的
part,宁少不多。
fields参数语法错误:
- 错误示例:
fields=items(title,viewCount)(未指定片段层级); - 正确示例:
fields=items(snippet(title),statistics(viewCount))(需指定片段)。
- 批量
id超出限制:
id参数最多传入 50 个视频 ID,超出会返回Invalid id parameter;- 批量查询需分批次(每批≤50 个)。
- 配额消耗陷阱:
- 每个
part不会额外消耗配额(比如part=snippet,statistics仍消耗 1 单位); - 但每次调用无论返回多少视频,都消耗 1 单位(批量 50 个视频也只耗 1 单位),建议批量查询提升配额利用率。
hl参数无效:
- 不要指望
hl=zh-CN自动翻译视频标题 / 简介,仅对平台级字段(如分类名称)生效。
五、常用参数组合速查表
| 业务需求 | 核心参数组合 |
| 获取单个视频标题 + 播放量 | part=snippet,statistics + id=视频ID + fields=items(id,snippet(title),statistics(viewCount)) |
| 获取视频时长 + 嵌入权限 | part=contentDetails,player + id=视频ID + fields=items(contentDetails(duration),player(embedHtml)) |
| 获取自己的私有视频列表 | part=snippet + mine=true + access_token=OAuth令牌 + maxResults=50 |
| 获取地区热门游戏视频 | part=snippet + chart=mostPopular + regionCode=CN + videoCategoryId=20 |
总结
精准获取 YouTube 视频信息的核心是:
- 按需选
part:只加载需要的数据片段,减少配额消耗和冗余数据; - 用
fields过滤字段:进一步精准控制返回的键值对,仅保留业务所需; - 合理用批量 / 分页:批量查询(≤50 个 ID)提升效率,分页获取更多热门视频;
- 避坑语法错误:重点注意
fields的层级语法和id的数量限制。