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

Posted

技术标签:

【中文标题】无法使用 Youtube 数据 API 删除视频【英文标题】:Unable to Delete Videos with the Youtube Data API 【发布时间】:2012-12-21 09:45:07 【问题描述】:

无法使用 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】:

我很确定这是因为需要从您的上传供稿中获取视频条目,而不是一般的视频供稿。否则条目不可编辑。

这将转化为

video_entry = yt_service.GetYouTubeVideoEntry('https://gdata.youtube.com/feeds/api/users/default/uploads/VIDEO_ID')

Python GData 客户端库仍然使用 v1 的 Data API,该版本已被弃用很长时间,并且客户端库总体上没有得到很好的维护。

我建议切换到v3 和相应的new client library,因为这绝对是未来的环境。我们有一个handful of Python samples available now,虽然没有专门用于删除视频的,但它应该类似于

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

(假设 youtube 是经过适当授权的 YouTube 客户端界面,遵循该页面上的现有示例)。

【讨论】:

这行得通,非常感谢!一旦我们有空闲时间,我们会考虑迁移到 v3 ......不幸的是,现在不是时候 :)

以上是关于无法使用 Youtube 数据 API 删除视频的主要内容,如果未能解决你的问题,请参考以下文章

每天通过youtube api发送视频的限制

Youtube api v3 无法从频道中检索所有视频

如何使用YouTube Api下载YouTube视频[关闭]

无法使用 YouTube Android Player API 播放某些 Youtube 视频

如何使用Youtube API从Feed中删除视频?

如何通过 youtube API 获取已删除视频的列表