Ticket #732: letrasterra.patch

File letrasterra.patch, 2.1 kB (added by viniciusfs, 12 months ago)

patch: adds support for Letras.mus.br as lyrics provider

  • lyrics.py

     
    6868         
    6969        model = gtk.ListStore(gobject.TYPE_STRING) 
    7070        self.dropdown_server = gtk.combo_box_new_text() 
    71         servers = ["lyrc.com.ar","leoslyrics.com"] 
     71        servers = ["lyrc.com.ar","leoslyrics.com","letras.mus.br"] 
    7272        for server in servers: 
    7373            if server == config.get("lyrics","server"): 
    7474                active = servers.index(server) 
     
    163163                    urllib.quote(title.encode('utf-8'))) 
    164164                self.download_thread.fetch_url(url,self.fetch_lyrics_leolyrics,self.song) 
    165165 
    166                  
    167166            elif config.get("lyrics","server")=="lyrc.com.ar": 
    168167                url = "http://lyrc.com.ar/en/tema1en.php?artist=%s&songname=%s"%( 
    169168                    urllib.quote(artist.encode('utf-8')), 
    170169                    urllib.quote(title.encode('utf-8'))) 
    171170                self.download_thread.fetch_url(url,self.fetch_lyrics_lyrccomar,self.song) 
     171 
     172            elif config.get("lyrics","server")=="letras.mus.br": 
     173                url = "http://letras.mus.br/winamp.php?musica=%s&artista=%s"%( 
     174                    urllib.quote(title.encode('utf-8')), 
     175                    urllib.quote(artist.encode('utf-8'))) 
     176                print url 
     177                self.download_thread.fetch_url(url,self.fetch_lyrics_terra,self.song) 
    172178             
    173179    def render_data(self,html,song_save=False,prepare_data=False): 
    174180        if prepare_data: 
     
    291297        self.render_data(text.replace("\n","<br />"),song) 
    292298        xmldoc.unlink() 
    293299             
     300    def fetch_lyrics_terra(self,html_buffer,song): 
     301        content = html_buffer.read() 
     302        error_msg = re.search('\<h3\>(?P<msg>.*)\<\/h3\>', content) 
    294303 
     304        if error_msg is not None: 
     305            self.render_data(_("Lyrics not found.")) 
     306        else: 
     307            start = "</p><p>" 
     308            end = "</p></div>" 
     309            lyric = content[content.find(start)+len(start):content.find(end)] 
     310            lyric = lyric.replace("<br/>","<br />") 
     311            self.render_data(lyric,song,True)