trusted SOLVED: Python API只支持v1,而watch later在v2中添加。源
解决方案:使用"实验性"API v3
我正在尝试使用Youtube API访问我的Watch Later播放列表。下面是我使用的代码:
import gdata.youtube
import gdata.youtube.service
yt_service = gdata.youtube.service.YouTubeService()
yt_service.ssl = True
yt_service.developer_key = 'REDACTED'
yt_service.email = 'REDACTED'
yt_service.password = 'REDACTED'
yt_service.ProgrammaticLogin()
playlist_uri = 'https://gdata.youtube.com/feeds/api/users/default/watch_later?v=2'
playlist_video_feed = yt_service.GetYouTubePlaylistVideoFeed(uri=playlist_uri)
for playlist_video_entry in playlist_video_feed.entry:
print playlist_video_entry.title.text
我收到以下错误。
Traceback (most recent call last):
File "Youtube.py", line 21, in <module>
playlist_video_feed = yt_service.GetYouTubePlaylistVideoFeed(uri=playlist_uri)
File "/Library/Python/2.6/site-packages/gdata/youtube/service.py", line 393, in GetYouTubePlaylistVideoFeed
uri, converter=gdata.youtube.YouTubePlaylistVideoFeedFromString)
File "/Library/Python/2.6/site-packages/gdata/service.py", line 1108, in Get
'reason': server_response.reason, 'body': result_body}
gdata.service.RequestError: {'status': 400, 'body': 'Invalid request URI', 'reason': 'Bad Request'}
看起来URI https://gdata.youtube.com/feeds/api/users/default/watch_later?v=2是无效的。然而,这是一个声明要在谷歌文档中使用。是我用错了,还是有别的问题?
另外,如果我将URI更改为http://gdata.youtube.com/feeds/api/playlists/63F0C78739B09958
,它将按预期工作
您应该检查您的身份验证。根据检索和更新用户的"稍后观看"播放列表:
同样,该链接只会出现在配置文件条目中,如果以下条件为真:
提交一个经过身份验证的请求来检索已登录用户的请求自己的配置文件。
watch_later播放列表对以下用户公开可用您正在检索的配置文件。
API服务器将返回一个40x的HTTP响应代码,如果你尝试检索watch_later播放列表,并且上述两个条件都不是真的。
第二个链接最有可能工作,因为满足了第二个公开可用的条件。我注意到示例中缺少的一件事是客户端id/source:
# A complete client login request
yt_service.email = 'jo@gmail.com'
yt_service.password = 'mypassword'
yt_service.source = 'my-example-application'
yt_service.developer_key = 'ABC123...'
yt_service.client_id = 'my-example-application'
yt_service.ProgrammaticLogin()
您应该查看并确保您的身份验证正常进行。