Youtube API:用新32字符播放列表ID添加视频到播放列表
我一直在为一个我以为很简单的任务而苦恼:把视频添加到YouTube播放列表中。我已经有了视频的链接和视频ID,所以这应该能行吧?
uri = "http://gdata.youtube.com/feeds/api/users/dolkarr/playlists/AAnCXJ-nfQZwZYqo69euVZVyJ_XofIJs"
vid = "dmoDLyiQYKw"
video = yt_service.AddPlaylistVideoEntryToPlaylist(uri, vid)
但是它返回了这个错误信息:
gdata.service.RequestError: {'status': 400, 'body': '无效的请求链接', 'reason': '错误的请求'}
经过一番研究,我发现这个操作只适用于16个字符的播放列表ID,而我一些旧的播放列表正好有这样的ID。加上“PL”前缀并没有什么区别。
有人通过使用不包含“-”的播放列表ID来“解决”这个问题,但我无法创建这样的播放列表!我所有的播放列表都以AAnCXJ-nfQ
开头……
所以,我想问的是……有没有可能让这个操作成功?要么通过某种方式创建一个旧式ID的播放列表,要么让它接受这些新的ID……我需要创建几个播放列表,每个播放列表有200个视频,我真的不想一个个手动填入……谢谢你的回复!
3 个回答
我觉得最好的做法是总是使用前缀 PL:
来自这篇文章:
http://apiblog.youtube.com/2012/08/playlists-now-with-more-pl.html
虽然我们目前会继续支持不带前缀的播放列表 ID 作为元数据或在 API 请求 URL 中使用,但将来某个时候,我们可能会要求在提供播放列表 ID 时必须使用“PL”前缀。如果我们决定停止支持不带前缀的播放列表 ID 请求,我们会提供更多指导。
不过已经有一些问题被报告了
https://groups.google.com/forum/#!topic/youtube-api-gdata/0c6dorRZ7bg
我相信如果你使用了 PL 前缀但仍然遇到错误,那你就应该报告可能的 bug。
为了获得最佳效果,我建议你使用数据API v3。
这里有一个很棒的Python示例,可以帮助你完成你想做的事情。'https://developers.google.com/youtube/v3/docs/playlistItems/insert#examples'
这个示例应该能让你很快入门。
这里有一个网址:http://gdata.youtube.com/feeds/api/users/dolkarr/playlists/AAnCXJ-nfQZwZYqo69euVZVyJ_XofIJs
你需要把user/userid这部分去掉,变成这样:
uri = "http://gdata.youtube.com/feeds/api/playlists/AAnCXJ-nfQZwZYqo69euVZVyJ_XofIJs"
可以看看这个链接了解更多信息:https://developers.google.com/youtube/1.0/developers_guide_python#AddVideoToPlaylist