使用Youtube数据API无法删除视频

6
无法使用Youtube Data API删除视频。我正在使用Python客户端库。
这一切似乎都与文档一致,所以我真的很困惑为什么它不起作用。这是我的函数:
def delete_youtube_video_by_id(video_id):
    yt_service = gdata.youtube.service.YouTubeService()
    yt_service.email = YOUTUBE_EMAIL
    yt_service.password = YOUTUBE_SECRET_PASSWORD
    yt_service.source = YOUTUBE_SOURCE
    yt_service.developer_key = YOUTUBE_SECRET_DEVELOPER_KEY
    yt_service.client_id = YOUTUBE_CLIENT_ID
    yt_service.ProgrammaticLogin()
    video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id)
    response = yt_service.DeleteVideoEntry(video_entry)
    return response

根据文档,如果视频删除成功,应该返回True。但实际上它返回了None:

>>> response = delete_youtube_video_by_id('my_youtube_video_id')
>>> type(response)
<type 'NoneType'>
>>> 

视频没有被删除。我知道凭据是正确的,因为它们是我用来上传视频的相同凭据,并且我知道ID是正确的,因为我直接从我的YouTube频道获取了它。
有任何想法吗?
1个回答

4
我相信这是因为需要从上传的视频源获取视频条目,而不是通用的视频源。否则该条目是不可编辑的。
这将转化为
video_entry = yt_service.GetYouTubeVideoEntry('https://gdata.youtube.com/feeds/api/users/default/uploads/VIDEO_ID')
Python GData客户端库仍在使用已经过时很长时间的v1 Data API,并且客户端库一般来说维护得不好。
我建议切换到v3和相应的新客户端库,因为这肯定是未来的环境。我们现在有少量的Python示例可用,虽然没有专门用于删除视频的样例,但它应该看起来像

youtube.videos().delete(id=VIDEO_ID).execute()

(假设youtube是一个已经授权的YouTube客户端接口,按照该页面上现有的示例操作。)

这个可行,非常感谢!我们会在有空的时候考虑迁移到v3...不幸的是现在还没有那个时间 :) - Clay Wardell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接