如何通过YouTube Python API 禁用评论/评分?

1 投票
2 回答
785 浏览
提问于 2025-04-15 23:53

有没有人知道能不能通过Python的API来关闭YouTube的视频评分和评论?我知道可以通过XML请求里的'yt:accessControl'标签来做到这一点,但我不知道怎么手动构建这个请求。希望有人能帮帮我 :)

2 个回答

0

你可以使用扩展元素,具体可以查看这里,还有之前的回答这里

评分、评论和列表都是yt:accessControl的一部分。

2

我觉得你需要使用YouTube API的2.0版本,而目前各种特定语言的API,包括Python,只提供1.0版本。不过,更新视频的访问控制其实并不难,即使你其他的操作都是通过特定语言的API来做。文档(关于2.0 API的)解释说:

要更新一个视频,你需要发送一个HTTP PUT请求到视频条目的<link>标签中,rel属性值为edit的URL:

<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元素。

上传的文档中有一个完整示例,展示了你需要发送的头部信息、multipart-related格式和XML内容(包括根据这部分文档添加的访问控制标签)——但这个示例是POST请求,而不是PUT请求,因为它是在上传视频,而不是更改视频信息(和访问控制)。要通过Python的标准库发送除了GET和POST以外的HTTP方法,可以使用httplib:创建一个HTTPConnection,然后调用它的request方法,传入PUT作为第一个参数,然后是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的源代码(可以在这里找到),添加你需要的2.0功能,但我觉得那样似乎会更麻烦。

撰写回答