示例 API 请求

本页面展示了向 YouTube Data API 发送的请求示例。YouTube Data API 用于检索和操控视频、频道和播放列表等 YouTube 资源。每个示例都会链接到 Google API 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 API Explorer 代表他们执行 YouTube Data API 请求的权利。(要详细了解如何授予对私有渠道数据的访问权限,请参阅实现 OAuth 2.0 身份验证。)关联到 APIs Explorer 后,点击 Authorize requests using OAuth 2.0 按钮。此步骤将授权 API Explorer 代表所有者发出请求。您还需要选择授权范围,指定 API Explorer 可以执行的请求类型。

每个请求的响应都是 YouTube 资源的 JSON 表示法。请求中的 part 参数指定响应中会包含资源的哪些部分。该参数用于标识响应中应包含的一个或多个顶级(非嵌套)资源属性。例如,视频资源的部分组成部分包括:

  • snippet
  • contentDetails
  • 球员
  • 统计信息
  • 状态

所有这些部分都是包含嵌套属性的对象,您可以将这些对象视为 API 服务器可能会(或可能不会)检索的元数据字段组。因此,part 参数要求您选择应用实际使用的资源组件。如需了解详情,请参阅 YouTube Data API 使用入门

检索频道信息

此请求使用 channels.list 方法检索经过身份验证的用户所拥有的频道的详细信息。

GET {base_URL}/channels?part=contentDetails
                       &mine=true

此请求的响应包含经过身份验证的用户的频道 ID 和 contentDetailscontentDetails 包含几个由系统生成的与频道关联的播放列表。很多后续请求都需要提供频道 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 API Explorer 中执行以下示例请求之前,请将 {UPLOADS_PLAYLIST_ID} 替换为之前请求中的播放列表 ID。

GET {base_URL}/playlistItems?part=contentDetails
                            &playlistId={UPLOADS_PLAYLIST_ID}

请注意,每个返回项目的 "id" 值都是其播放列表项目 ID。播放列表项的视频 ID 是 contentDetails 部分中的 videoId

您可以使用上述请求检索用户的收藏、赞、观看记录或稍后观看列表,只需用频道信息响应中对应的播放列表 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 APIAPI 请求示例页面展示了如何从 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 数据 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
      }
   }