本页展示了 YouTube Data API 的请求示例。您可以使用 YouTube Data API 检索和操控 YouTube 资源,例如视频、频道和播放列表。每个示例都会链接到 Google APIs Explorer 并填充相应内容,以便您执行示例并查看响应。
如需了解如何使用 YouTube Data API 上传内容,请参阅可续传上传。
概览
为清晰起见,本页上的示例展示了每个请求的独特元素,并缩写了用于处理 Data API 请求的主机的基础网址 (https://www.googleapis.com/youtube/v3)。如需在示例上下文之外发出请求,您需要添加完整网址。
例如,以下是本页上显示的示例请求:
GET {base-URL}/channels?part=contentDetails &mine=true
此请求的完整网址为:
GET https://www.googleapis.com/youtube/v3/channels?part=contentDetails &mine=true
其中一些请求会检索只有 YouTube 频道所有者才能访问的数据,例如订阅者列表。这些请求需要频道所有者授予 Google APIs Explorer 代表其执行 YouTube Data API 请求的权限。(如需详细了解如何授权访问私享频道数据,请参阅实现 OAuth 2.0 身份验证。)链接到 APIs Explorer 后,点击使用 OAuth 2.0 授权请求 按钮。此步骤会授权 APIs Explorer 代表所有者发出请求。您还可以选择授权范围,以指定 APIs Explorer 可以执行的请求类型。
每个请求的响应都是 JSON 资源的 JSON 表示法。请求中的 part 参数用于指定响应中包含的资源部分。该参数用于标识应包含在响应中的一个或多个顶级(非嵌套)资源属性。例如,视频资源的某些部分包括:
- snippet
- contentDetails
- player
- statistics
- status
所有这些部分都是包含嵌套属性的对象,您可以将这些对象视为 API 服务器可能会(也可能不会)检索的元数据字段组。因此,part 参数要求您选择应用实际使用的资源组件。如需了解详情,请参阅 YouTube Data API 使用入门。
检索频道信息
此请求使用 channels.list 方法检索有关经过身份验证的用户的频道的信息。
GET {base_URL}/channels?part=contentDetails &mine=true
此请求的响应包含经过身份验证的用户的频道的频道 ID 和 contentDetails。contentDetails 包含与频道关联的多个系统生成的播放列表。许多后续请求都需要频道 ID 或其中一个播放列表 ID,因此请务必记录这些 ID。
{
"id": {CHANNEL_ID},
"kind": "youtube#channel",
"etag": etag,
"contentDetails": {
"relatedPlaylists": {
"likes": {LIKES_PLAYLIST_ID},
"favorites": {FAVORITES_PLAYLIST_ID},
"uploads": {UPLOADS_PLAYLIST_ID},
"watchHistory": {WATCHHISTORY_PLAYLIST_ID},
"watchLater": {WATCHLATER_PLAYLIST_ID}
},
"googlePlusUserId": string
},
}上传的视频和系统生成的播放列表
YouTube 会将所有上传的视频添加到与频道关联的播放列表中。如需获取上传的视频的列表,请查询上述频道信息响应中返回的“上传”播放列表,并使用playlistItems.list方法检索该播放列表中的视频。
在 Google APIs Explorer 中执行以下示例请求之前,请将 {UPLOADS_PLAYLIST_ID} 替换为之前请求中的播放列表 ID。
GET {base_URL}/playlistItems?part=contentDetails &playlistId={UPLOADS_PLAYLIST_ID}
请注意,每个返回项的 "id" 值都是其 playlistItem ID。播放列表项的视频 ID 是 contentDetails 部分中的 videoId。
您可以使用上述请求检索用户的收藏夹、赞、观看记录或稍后观看列表,只需将频道信息响应中的相应播放列表 ID 替换为上述请求中的播放列表 ID 即可。
用户创建的播放列表
此请求使用 playlists.list 方法检索与经过身份验证的频道关联的播放列表。请注意,此请求不会 检索频道信息(上传、观看记录等)中包含的系统生成的播放列表, 只会检索用户创建的播放列表。
GET {base_URL}/playlists?part=snippet &mine=true
获得播放列表 ID 后,您可以使用上一部分中显示的请求检索播放列表中的项。
您可以请求获取有关频道公开播放列表的信息,而无需进行身份验证。提交未经身份验证的请求时,您需要添加 key 实参,以指定 发出请求的应用的唯一 API 密钥。例如,此请求会检索与 GoogleDevelopers 频道关联的播放列表。
GET {base_URL}/playlists?part=snippet &channelId=UC_x5XG1OV2P6uZZ5FSM9Ttw &key={YOUR_API_KEY}
检索订阅
subscription 资源用于定义 YouTube 用户(订阅者)与频道之间的关系。subscriptions.list 方法用于检索特定频道的订阅者或特定用户的订阅,具体取决于您在请求中添加的参数。
频道订阅者
此请求会检索经过身份验证的频道的订阅者列表。
GET {base_URL}/subscriptions?part=snippet &mySubscribers=true
用户订阅
列出订阅者(subscriptions.list)的同一方法也可用于列出用户订阅的频道。此请求使用 mine 参数检索经过身份验证的用户订阅的 YouTube 频道列表。
GET {base_URL}/subscriptions?part=snippet &mine=true
检索用户活动
activity 资源包含有关特定频道或用户在 YouTube 上执行的操作的信息,例如上传视频、订阅频道等。activities.list 方法用于检索与符合请求条件的频道或用户关联的操作。例如,您可以检索与特定频道、用户的订阅或用户的自定义 YouTube 首页关联的操作。
特定时间段内的活动
此请求会检索经过身份验证的用户在 2013 年 4 月执行的所有操作。
GET {base_URL}/activities?part=snippet,contentDetails &mine=true &publishedAfter=2013-04-01T00%3A00%3A00Z &publishedBefore=2013-05-01T00%3A00%3A00Z
首页活动
此请求会检索显示在经过身份验证的用户的 YouTube 首页上的自定义活动动态。
GET {base_URL}/activities?part=snippet,contentDetails &home=true
如需检索 YouTube 视频和频道的观看统计信息、热门程度指标和人口统计信息,您可以使用 YouTube Analytics API。“示例 API 请求”页面展示了如何从 YouTube 数据分析中检索常见报告。
搜索
借助 search.list 方法,您可以搜索符合指定条件的 YouTube 视频、频道或播放列表。您可以根据视频属性、关键字或主题(或这些属性的组合)进行搜索,还可以根据创建日期、观看次数或评分等因素对结果进行排序。
与其他 YouTube Data API 请求一样,search.list 方法也会返回 YouTube 资源的 JSON 表示法。不过,与其他 YouTube 资源不同的是,搜索结果不是具有唯一 ID 的持久性对象。
许多请求都会搜索公开提供的内容,因此不需要进行身份验证。在下面的示例中,只有第一个示例需要进行身份验证,因为它专门请求“我的”视频。提交未经身份验证的请求时,您需要添加 key 实参,以指定 应用的唯一 API 密钥。
我观看次数最多的视频
此请求会检索经过身份验证的用户的所有视频,并按观看次数降序排列。
GET {base_URL}/search?part=snippet &forMine=true &order=viewCount &type=video
可嵌入的高清视频
此请求会搜索具有特定属性的视频,即可以嵌入到其他网站中的高清视频。它会按评分降序排列结果。
GET {base_URL}/search?part=snippet &order=rating &type=video &videoDefinition=high &videoEmbeddable=true &key={YOUR_API_KEY}
与特定主题相关的视频
此请求会执行关键字搜索,以查找包含字幕的与 YouTube Data API 相关的视频。
GET {base_URL}/search?part=snippet &q=YouTube+Data+API &type=video &videoCaption=closedCaption &key={YOUR_API_KEY}
基于主题的搜索
如需更精细地搜索与特定主题相关的视频,可以使用 Freebase 主题 而不是关键字。YouTube 频道和视频资源都包含一个 topicDetails 对象,其中包含与资源关联的 Freebase 主题 ID 列表。基于主题的搜索比关键字搜索更智能,因为 Freebase 主题代表了现实世界概念或事物的所有方面。
如需使用 Freebase 主题进行搜索,您首先需要使用 Freebase API 检索主题 ID。此请求会返回与 Python 的 Freebase 主题关联的视频,其主题 ID 为 /m/05z1_。
GET {base_URL}/search?part=snippet &topicId=/m/05z1_ &type=video &key={YOUR_API_KEY}
搜索播放列表或频道
搜索不限于视频。您还可以搜索播放列表或频道。此请求会检索与关键字“soccer”匹配的播放列表。
GET {base_URL}/search?part=snippet &q=soccer &type=playlist &key={YOUR_API_KEY}
如果您想查找足球频道,只需更改 type 参数即可。
GET {base_URL}/search?part=snippet &q=soccer &type=channel &key={YOUR_API_KEY}
如果您想要查找与足球相关的所有内容(频道、播放列表和视频), 可以执行通用搜索。如果省略 type 参数,请求会检索所有类型的内容
GET {base_URL}/search?part=snippet &q=soccer &key={YOUR_API_KEY}
创建和更新资源
到目前为止,我们看到的请求都使用 HTTP GET 方法来检索 YouTube 数据。YouTube Data API 还提供使用 HTTP POST 创建或更新 YouTube 资源(例如视频、播放列表或频道)的方法。以下请求提供了示例。
POST 方法包含 Request body,它是要创建或更新的资源的 JSON 表示法。您可以使用交互式工具在 Google APIs Explorer 中创建 JSON 表示法。
创建订阅
此请求会将经过身份验证的用户订阅到 GoogleDevelopers 频道。换句话说,它会创建一个订阅资源。
POST {base_URL}/subscriptions?part=snippet
Request body: { 'snippet': { 'resourceId': { 'kind': 'youtube#channel', 'channelId': 'UC_x5XG1OV2P6uZZ5FSM9Ttw' } } }
创建播放列表
此请求会创建一个新的公开播放列表。
POST {base_URL}/playlists?part=snippet
Request body: { 'snippet': { 'title': 'New playlist', 'description': 'Sample playlist for Data API', } }
向播放列表添加视频
现在我们已经创建了一个播放列表,接下来向其中添加一个视频。此请求会将视频添加到播放列表的开头 ('position': 0)。
POST {base_URL}/playlistItems?part=snippet Request body: { 'snippet': { 'playlistId': '{PLAYLIST_ID}', 'resourceId': { 'kind': 'youtube#video', 'videoId': '{VIDEO_ID}' } 'position': 0 } }