尝试使用youtube gdata python api将视频添加到播放列表时,我无法克服此错误。
gdata.service.RequestError:{'status': 400,'body':'无效的请求URI', 'reason':'Bad Request'}
This似乎是同样的错误,但目前还没有解决方案。有帮助吗?
import getpass
import gdata.youtube
import gdata.youtube.service
yt_service = gdata.youtube.service.YouTubeService()
# The YouTube API does not currently support HTTPS/SSL access.
yt_service.ssl = False
yt_service = gdata.youtube.service.YouTubeService()
yt_service.email = #myemail
yt_service.password = getpass.getpass()
yt_service.developer_key = #mykey
yt_service.source = #text
yt_service.client_id= #text
yt_service.ProgrammaticLogin()
feed = yt_service.GetYouTubePlaylistFeed(username='default')
# iterate through the feed as you would with any other
for entry in feed.entry:
if (entry.title.text == "test"):
lst = entry;
print entry.title.text, entry.id.text
custom_video_title = 'my test video on my test playlist'
custom_video_description = 'this is a test video on my test playlist'
video_id = 'Ncakifd_16k'
playlist_uri = lst.id.text
playlist_video_entry = yt_service.AddPlaylistVideoEntryToPlaylist(playlist_uri, video_id, custom_video_title, custom_video_description)
if isinstance(playlist_video_entry, gdata.youtube.YouTubePlaylistVideoEntry):
print 'Video added'
令人困惑的是,更新播放列表有效,但添加视频则不然。
playlist_entry_id = lst.id.text.split('/')[-1]
original_playlist_description = lst.description.text
updated_playlist = yt_service.UpdatePlaylist(playlist_entry_id,'test',original_playlist_description,playlist_private=False)
video_id没错,因为它来自示例代码的视频。我在这里错过了什么?有人帮忙!
感谢。
答案 0 :(得分:2)
Gdata似乎使用v1 API。因此,相关文档在此处:http://code.google.com/apis/youtube/1.0/developers_guide_protocol.html#Retrieving_a_playlist
这意味着,您的“playlist_uri”不应该取“lst.id.text”的值,但应该使用“feedLink”元素的“href”属性才能与“AddPlaylistVideoEntryToPlaylist”一起使用
即使您碰巧使用v2 API,也应该从文档中说明的“content”元素的“src”属性中获取URI,您可以在上面的URL中替换2.0! (所以不允许我放两个超链接,因为我没有足够的声誉!:))