Ticket #733: letrasmusbr.py

File letrasmusbr.py, 1.3 kB (added by viniciusfs, 12 months ago)
Line 
1# -*- coding: utf-8 -*-
2####
3# Written by Vinicius de Figueiredo Silva <viniciusfs@gmail.com>
4####
5
6import urllib
7import string
8import re
9
10from plugins.lyrics import LyricsPlugin
11
12class LyrikiPlugin(LyricsPlugin):
13    PLUGIN_NAME = "letras.mus.br"
14    PLUGIN_DESC = "Add support of letras.mus.br website to provide lyrics"
15    PLUGIN_VERSION = "1.0"
16    server_name = "letras.mus.br"
17    PLUGIN_AUTHOR = "Vinicius de Figueiredo Silva <viniciusfs@gmail.com>"
18    PLUGIN_WEBSITE = "http://vinicius.oitobits.net"
19   
20    def process_lyrics(self,artist,album,title,song):
21        url = "http://letras.mus.br/winamp.php?musica=%s&artista=%s"%(
22            urllib.quote(title.encode('utf-8')),
23            urllib.quote(artist.encode('utf-8')))
24
25        self.download_data(url,self.fetch_lyrics_terra,song)
26
27    def fetch_lyrics_terra(self,html_buffer,song):
28        content = html_buffer.read()
29        error_msg = re.search('\<h3\>(?P<msg>.*)\<\/h3\>', content)
30
31        if error_msg is not None:
32            self.render(_("Lyrics not found."))
33        else:
34            start = "</p><p>"
35            end = "</p></div>"
36            lyric = content[content.find(start)+len(start):content.find(end)]
37            lyric = lyric.replace("<br/>","<br />")
38            self.render(lyric,song,True)