2010-06-19 10 views
1

J'essaie d'ajouter des entrées à une playlist sur youtube via le code ci-dessous. quand je passe la liste de lecture uri (http://gdata.youtube.com/feeds/api/users/nashrafeeg/playlists/0F4EF4B14F514476?client=Reddit+playlist+maker) à AddPlaylistVideoEntryToPlaylist méthode que je reçois de la méthode get playlist je reçois une erreur en disant Invalid request URI. Quelle est la meilleure façon de résoudre ce problème ?ajouter une entrée playlist via youtube python api

import urllib,re 
import gdata.youtube 
import gdata.youtube.service 

class reddit(): 

    def __init__(self, rssurl ='http://www.reddit.com/r/chillmusic.rss'): 
     self.URL = rssurl 
     self._downloadrss() 

    def _downloadrss(self): 
     if self.URL.endswith('.rss'): 
      # Downloadd the RSS feed of the subreddit - save as "feed.rss" 
      try: 
       print "Downloading rss from reddit..." 
       urllib.urlretrieve (URL, "feed.rss") 
      except Exception as e: 
       print e 

    def clean(self): 
     playList = open("feed.rss").read() 
     links = re.findall(r'(http?://www.youtube.com\S+)', playList) 
     for link in links: 
      firstPass = link.replace('">[link]</a>', '') 
      secondPass = firstPass.replace('&fmt=18', '') 
      thirdpass = secondPass.replace('&feature=related', '') 
      finalPass = thirdpass.replace('http://www.youtube.com/watch?v=', '') 
      print thirdpass, "\t Extracted: ", finalPass 
      return finalPass 


class google(): 
    def __init__(self, username, password): 
     self.Username = username 
     self.password = password 
     #do not change any of the following 
     self.key = 'AI39si5DDjGYhG_1W-8n_amjgEjbOU27sa0aw2RQI5gOaoK5KqCD2Fzffbkh8oqGu7CqFQLLQ7N7wK0gz7lrTQbd70srC72Niw' 
     self.appname = 'Reddit playlist maker' 
     self.service = gdata.youtube.service.YouTubeService() 

    def authenticate(self): 
     self.service.email = self.Username 
     self.service.password = self.password 
     self.service.developer_key = self.key 
     self.service.client_id = self.appname 
     self.service.source = self.appname 
     self.service.ssl = False 
     self.service.ProgrammaticLogin() 

    def get_playlists(self): 
     y_playlist = self.service.GetYouTubePlaylistFeed(username='default') 
     l = [] 
     k = [] 
     for p in y_playlist.entry:  
      k=[] 
      k=[p.link[1].href, p.title.text] 
      l.append(k) 
     return l 

    def get_playlist_id_from_url(self, href): 
      #quick and dirty method to get the playList id's 
      return href.replace('http://www.youtube.com/view_play_list?p=','') 

    def creat_playlist(self, name="Reddit list", disc ="videos from reddit"): 
     playlistentry = self.service.AddPlaylist(name, disc) 
     if isinstance(playlistentry, gdata.youtube.YouTubePlaylistEntry): 
      print 'New playlist added' 
      return playlistentry.link[1].href 

    def add_video_to_playlist(self,playlist_uri,video): 
     video_entry = self.service.AddPlaylistVideoEntryToPlaylist(
     playlist_uri, video) 
     if isinstance(video_entry, gdata.youtube.YouTubePlaylistVideoEntry): 
      print 'Video added' 
URL = "http://www.reddit.com/r/chillmusic.rss" 

r = reddit(URL) 
g = google('[email protected]', 'xxxx') 
g.authenticate() 

def search_playlist(playlist="Reddit list3"): 
    pl_id = None 
    for pl in g.get_playlists(): 
     if pl[1] == playlist: 
      pl_id = pl[0] 
      print pl_id 
      break 
    if pl_id == None: 
     pl_id = g.creat_playlist(name=playlist) 
    return pl_id  
pls = search_playlist() 
for video_id in r.clean(): 
    g.add_video_to_playlist(pls, video_id) 
+0

étiez-vous capable de le faire, m essayant d'appliquer le même concept dans l'iphone en utilisant l'objectif c mais ne pouvais pas réussir – Swati

Répondre

0

Je ne sais pas comment mais si vous dépouillez votre playlist_uri de votre «/users/[nom d'utilisateur] » il fonctionnera.

Exemple: playlist_uri

http://gdata.youtube.com/feeds/api/users/[username]/playlists/[long_id]

devrait devenir

http://gdata.youtube.com/feeds/api/playlists/[long_id]

Questions connexes