我相信您需要使用 2.0 版本的 YouTube API,而包括 Python 在内的各种特定语言的 API 目前仅提供 1.0 版本。但是,使用裸机 2.0 操作更新视频以更改访问控制并不难,即使您正在通过特定于语言的 API 执行其他所有操作。 The docs(针对 2.0 API)说明:
要更新视频,请发送 HTTP PUT
请求中标识的 URL
视频条目的 <link> 标签,其中 rel
属性值为edit:
<link rel='edit' type='application/atom+xml'
href='http://gdata.youtube.com/feeds/api/users/USER_ID/uploads/VIDEO_ID'>
PUT 请求的主体是一个 Atom
包含信息的 XML 条目
关于视频。您可以包括任何
以下元素及其
您的请求中的子标签。必需的
元素标有星号
(*)。
media:title*
media:description*
media:category*
media:keywords*
yt:accessControl
yt:location
yt:private
georss:where
请注意,排除一个元素会
删除已经存在的信息
该视频存在。
...所以您必须重复您在上传时已经提供的一些信息(以避免删除该信息)才能添加 yt:accessControl 元素。
用于上传的文档有 complete example 的标头、multipart-related 格式和您将发送的 XML(根据文档的 this part 添加访问控制标签)——但示例是POST,而不是PUT,因为它正在上传视频,而不是更改其信息(和访问控制)。要通过 Python 的标准库发送除 GET 和 POST 之外的 HTTP 方法,请使用 httplib:创建一个 HTTPConnection,然后使用 PUT 作为第一个参数调用其 request 方法,然后是 URL( 之后的部分 主机,请参阅 Python 在线文档本节末尾的示例)、正文(在 Youtube 2.0 API 文档的示例中开始的部分
--f93dcbA3
Content-Type: application/atom+xml; charset=UTF-8
<?xml version="1.0"?>
<entry xmlns="http://www.w3.org/2005/Atom"
最后是标题)。
是的,它绝对不像像 GData API 那样方便,但是,在后者更新为支持 2.0 API 功能之前,我确实怀疑这是最好的方法。主要的替代方法是调整 Python API 源(找到 here)以添加您需要的 2.0 位功能,但在我看来,这似乎是更多的工作。