以下示例展示了如何使用 YouTube Data API (v3) 执行与视频相关的功能。
检索频道的已上传视频
此示例用于检索上传到特定频道的视频。此示例包含两个步骤:
-
第 1 步:检索频道上传视频的播放列表 ID
调用
channels.list
方法以检索包含频道上传视频的播放列表的 ID。请求的part
参数值必须包含contentDetails
,作为要检索的channel
资源部分之一。在 API 响应中,contentDetails.relatedPlaylists.uploads
属性包含播放列表 ID。您可以通过多种方式识别频道:
-
将
mine
参数值设置为true
,以检索当前经过身份验证的用户的 YouTube 频道的相关信息。您的请求必须使用 OAuth 2.0 进行授权。https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.channels.list? part=contentDetails &mine=true
-
将
forUsername
参数设置为 YouTube 用户名,以检索与该用户名关联的频道的信息。此示例将forUsername
参数值设置为Google
,以检索 Google 官方 YouTube 频道的信息。https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.channels.list? part=contentDetails &forUsername=Google
-
将
id
参数设置为 YouTube 频道 ID,该 ID 用于唯一标识您要检索信息的频道。此示例将id
参数设置为UCK8sQmJBp8GCxrOtXWBpyEA
,该值也用于标识 Google 的官方 YouTube 频道。https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.channels.list? part=contentDetails &id=UCK8sQmJBp8GCxrOtXWBpyEA
-
-
第 2 步:检索已上传视频的列表
调用
playlistItems.list
方法可检索已上传视频的列表。将playlistId
参数的值设置为第 1 步中获得的值。在此示例中,参数值设置为UUK8sQmJBp8GCxrOtXWBpyEA
,即上传到 Google 官方 YouTube 频道的视频列表。https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.playlistItems.list? part=snippet,contentDetails,status &playlistId=UUK8sQmJBp8GCxrOtXWBpyEA
检索最热门的视频
此示例展示了如何检索 YouTube 上最热门的视频列表,这些视频是使用一种算法选择的,该算法会结合许多不同的信号来确定总体受欢迎程度。
如需检索最热门视频列表,请调用 videos.list
方法并将 chart
参数的值设置为 mostPopular
。
mostPopular
排行榜包含热门音乐、电影和游戏视频。
然后,您可以选择性地设置以下参数:
regionCode
:指示 API 返回指定地区的视频列表。此参数值是 ISO 3166-1 alpha-2 国家/地区代码。您可以使用i18nRegions.list
方法检索 YouTube 支持的区域代码列表。videoCategoryId
:用于标识应检索最热门视频的视频类别。您可以使用videoCategories.list
方法检索 YouTube 支持的类别 ID 列表。
例如,以下请求会检索西班牙最热门的体育视频:
https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.list? part=snippet &chart=mostPopular ®ionCode=es &videoCategoryId=17
上传视频
由于 API Explorer 不支持上传文件的功能,因此此说明未链接到可执行的示例。以下资源将帮助您修改应用,使其能够使用 v3 API 上传视频:
-
API 的 videos.insert 方法的文档包含多个代码示例,说明了如何使用不同的编程语言上传视频。
-
可续传上传指南介绍了应用使用可续传上传流程上传视频时所用的 HTTP 请求序列。本指南主要面向无法使用 Google API 客户端库的开发者,其中一些客户端库可以为断点续传提供原生支持。
-
上传视频的 JavaScript 示例使用 CORS(跨源资源共享)来演示如何通过网页上传视频文件。v3 API 使用的 CORS 上传库自然支持断点续传。此外,该示例还演示了如何通过检索
video
资源的processingDetails
部分来检查已上传视频的状态,以及如何处理已上传视频的状态变化。
查看已上传视频的状态
此示例展示了如何检查已上传视频的状态。上传的视频会立即显示在已通过身份验证的用户的上传视频 Feed 中。不过,在视频处理完毕之前,它不会在 YouTube 上显示。
-
第 1 步:上传视频
调用
videos.insert
方法以上传视频。如果请求成功,API 响应将包含一个video
资源,用于标识上传视频的唯一视频 ID。 -
第 2 步:查看视频的状态
调用
videos.list
方法以检查视频的状态。将id
参数的值设置为在第 1 步中获得的视频 ID。将part
参数的值设置为processingDetails
。如果请求成功处理,API 响应将包含
video
资源。检查processingDetails.processingStatus
属性的值,以确定 YouTube 是否仍在处理视频。当 YouTube 完成视频处理后,该属性的值将更改为processing
以外的其他值,例如succeeded
或failed
。请求正文是一个
video
资源,其中的id
属性用于指定您要删除的视频的视频 ID。在此示例中,资源还包含一个recordingDetails
对象。以下请求会检查视频的状态。如需在 APIs Explorer 中完成请求,您需要设置
id
属性的值。https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.list? part=snippet,processingDetails &id=VIDEO_ID
注意:您的应用可以轮询 API,以定期检查新上传视频的状态。视频处理完毕后,您的应用可以根据视频的状态创建公告或继续执行其他操作。
更新视频
此示例展示了如何更新视频以添加有关视频录制时间和地点的信息。该示例包含以下步骤:
-
第 1 步:检索视频 ID
按照上述步骤检索当前已通过身份验证的用户的频道所上传的视频。该列表可用于显示视频列表,其中每个视频的 ID 都是一个键。
注意:还有许多其他方法可以获取视频 ID,例如检索搜索结果或列出播放列表中的项目。不过,由于视频只能由其所有者更新,因此检索授权 API 请求的用户拥有的视频列表很可能是此流程的第一步。
-
第 2 步:更新视频
调用
videos.update
方法以更新特定视频。将part
参数的值设置为recordingDetails
。(参数值取决于要更新哪个视频的元数据字段。)请求正文是一个
video
资源,其中的id
属性用于指定您要更新的视频的视频 ID。在此示例中,资源还包含一个recordingDetails
对象。以下示例资源表明,相应视频是在 2013 年 10 月 30 日于波士顿录制的:
{ "id": "VIDEO_ID", "recordingDetails": { "location": { "latitude": "42.3464", "longitude": "-71.0975" } "recordingDate": "2013-10-30T23:15:00.000Z" } }
如需在 APIs Explorer 中完成请求,您需要设置
id
属性的值。https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.update? part=snippet
上传自定义缩略图并将其设置为视频的缩略图
您可以使用 v3 API 的 thumbnails.set
方法上传自定义缩略图并将其设置为视频的缩略图。在您的请求中,videoId
参数的值用于标识将使用哪个视频的缩略图。
此查询无法使用 API Explorer 进行测试,因为 API Explorer 不支持上传媒体文件的功能,而此方法需要此功能。
删除视频
此示例展示了如何删除视频。该示例包含以下步骤:
-
第 1 步:检索视频 ID
按照上述步骤检索当前已通过身份验证的用户的频道所上传的视频。该列表可用于显示视频列表,其中每个视频的 ID 都是一个键。
注意:还有许多其他方法可以获取视频 ID,例如检索搜索结果或列出播放列表中的项目。不过,由于只有视频所有者才能删除视频,因此检索授权 API 请求的用户拥有的视频列表很可能是此流程的第一步。
-
第 2 步:删除视频
调用
videos.delete
方法可删除特定视频。在请求中,id
参数指定了您要删除的视频的视频 ID。必须使用 OAuth 2.0 对请求进行授权。如果您要在 API Explorer 中测试此查询,则需要将id
参数值替换为有效的视频 ID。https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.delete? id=VIDEO_ID
举报滥用视频
此示例展示了如何举报包含滥用内容的视频。该示例包含以下步骤:
-
第 1 步:检索用于说明举报视频原因的 ID
向
videoAbuseReportReasons.list
方法发送授权请求,以检索用于标记视频的有效原因列表。下面的示例videoAbuseReportReason
资源包含用于标记包含垃圾内容或误导性内容的视频的信息。{ "kind": "youtube#videoAbuseReportReason", "etag": "\"tbWC5XrSXxe1WOAx6MK9z4hHSU8/Or2VqBIilpHU7j__oPzUFCvGVBw\"", "id": "S", "snippet": { "label": "Spam or misleading", "secondaryReasons": [ { "id": "27", "label": "Spam or mass advertising" }, { "id": "28", "label": "Misleading thumbnail" }, { "id": "29", "label": "Malware or phishing" }, { "id": "30", "label": "Pharmaceutical drugs for sale" }, { "id": "31", "label": "Other misleading info" } ] } }
如资源中所示,此原因与次要原因列表相关联。当您因视频包含垃圾内容而标记该视频时,需要提供原因 ID,强烈建议您同时提供次要原因。
-
第 2 步:举报视频中的滥用内容
向
JSON 对象的videos.reportAbuse
方法发送授权请求,以实际举报视频。请求正文是一个 JSON 对象,用于标识被标记的视频以及标记原因。如第 1 步中所述,对于某些类型的原因,系统支持并强烈建议您提供次要原因。videoId
属性用于标识要标记的视频。以下 JSON 对象示例标记了一个视频,表明其包含垃圾内容或误导性内容,更具体地说,是使用了误导性缩略图。如上面的 JSON 对象示例所示,“垃圾内容或误导性内容”的 ID 为 S。误导性缩略图的 ID 为 28。
{ "videoId": "VIDEO_ID", "reasonId": "S", "secondaryReasonId": "28", "comments": "Testing the video flagging feature.", "language": "en" }
必须使用 OAuth 2.0 授权
videos.reportAbuse
请求。点击以下链接可在 API Explorer 中加载上述 JSON 对象。如需测试查询,您需要将videoId
属性值替换为有效的视频 ID。请注意,提交此请求实际上会标记相应视频。https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.reportAbuse