2010-12-11 8 views
2

Ich konnte diesen Fehler nicht beheben, während ich versuche, ein Video mit dem youtube gdata python api meiner Playlist hinzuzufügen.Ungültige Anfrage-URI beim Hinzufügen eines Videos zur Playlist über youtube api

This scheint der gleiche Fehler zu sein, aber es gibt noch keine Lösungen. Irgendwelche Hilfe Jungs?

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' 

Die verwirrende Sache ist, dass die Aktualisierung der Wiedergabeliste funktioniert, aber das Hinzufügen eines Videos nicht funktioniert.

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) 

Die video_id ist nicht falsch, weil es das Video aus dem Beispielcode ist. Was fehlt mir hier? Jemand Hilfe!

Danke.

Antwort

2

Gdata scheint die API v1 zu verwenden. Also, die relevante Dokumentation ist hier: http://code.google.com/apis/youtube/1.0/developers_guide_protocol.html#Retrieving_a_playlist

Das bedeutet, Ihre "playlist_uri" sollte nicht den Wert von "lst.id.text" nehmen, sondern sollte das Attribut "href" des "feedLink" -Elements nehmen, um zu sein verwendet mit "AddPlaylistVideoEntryToPlaylist"

Auch wenn Sie v2 API verwenden, sollten Sie den URI aus dem "src" Attribut des Inhalts Elements nehmen, wie in der Dokumentation erläutert, erhalten Sie durch Ersetzen von 2.0, in der obigen URL! (SO erlaubt mir nicht, zwei Hyperlinks zu setzen, weil ich nicht genug Reputation habe!)