无法使用Youtube Data API删除视频

Cla*_*ell 6 python youtube video youtube-api

无法使用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
Run Code Online (Sandbox Code Playgroud)

从文档中,如果视频成功删除,则应返回True.但是,它返回None:

>>> response = delete_youtube_video_by_id('my_youtube_video_id')
>>> type(response)
<type 'NoneType'>
>>> 
Run Code Online (Sandbox Code Playgroud)

视频不会被删除.我知道凭据很好,因为它们与我用来上传视频的凭据相同,而且我知道ID很好,因为我直接从youtube中的渠道获取.

有任何想法吗?

Jef*_*ick 4

我相当确定这是因为需要从上传源中获取视频条目,而不是一般视频源。否则该条目不可编辑。

这将翻译为

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

Python GData 客户端库仍然使用 Data API v1,该 API 现已弃用很长时间,并且客户端库总体维护得不好。

我建议切换到v3和相应的新客户端库,因为这绝对是未来的环境。我们现在有一些可用的 Python 示例,虽然没有专门用于删除视频的示例,但它应该类似于

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

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