2013-09-03 07:12:38 +08:00
from util import hook , http , web
url = " http://search.azlyrics.com/search.php?q= "
@hook.command
def lyrics ( inp ) :
""" lyrics <search> - Search AZLyrics.com for song lyrics """
if " pastelyrics " in inp :
dopaste = True
inp = inp . replace ( " pastelyrics " , " " ) . strip ( )
else :
dopaste = False
soup = http . get_soup ( url + inp . replace ( " " , " + " ) )
if " Try to compose less restrictive search query " in soup . find ( ' div ' , { ' id ' : ' inn ' } ) . text :
return " No results. Check spelling. "
div = None
for i in soup . findAll ( ' div ' , { ' class ' : ' sen ' } ) :
if " /lyrics/ " in i . find ( ' a ' ) [ ' href ' ] :
div = i
break
if div :
title = div . find ( ' a ' ) . text
link = div . find ( ' a ' ) [ ' href ' ]
if dopaste :
newsoup = http . get_soup ( link )
try :
lyrics = newsoup . find ( ' div ' , { ' style ' : ' margin-left:10px;margin-right:10px; ' } ) . text . strip ( )
pasteurl = " " + web . haste ( lyrics )
except Exception as e :
2013-09-05 10:11:18 +08:00
pasteurl = " ( \x02 Unable to paste lyrics \x02 [ {} ]) " . format ( str ( e ) )
2013-09-03 07:12:38 +08:00
else :
pasteurl = " "
artist = div . find ( ' b ' ) . text . title ( )
lyricsum = div . find ( ' div ' ) . text
if " \r \n " in lyricsum . strip ( ) :
2013-09-05 10:11:18 +08:00
lyricsum = " / " . join ( lyricsum . strip ( ) . split ( " \r \n " ) [ 0 : 4 ] ) # truncate, format
2013-09-03 07:12:38 +08:00
else :
2013-09-05 10:11:18 +08:00
lyricsum = " / " . join ( lyricsum . strip ( ) . split ( " \n " ) [ 0 : 4 ] ) # truncate, format
2013-09-06 10:01:16 +12:00
return " \x02 {} \x02 by \x02 {} \x02 {} {} - {} " . format ( title , artist , web . try_isgd ( link ) , pasteurl ,
2014-02-14 17:03:08 +13:00
lyricsum [ : - 3 ] )
2013-09-03 07:12:38 +08:00
else :
return " No song results. " + url + inp . replace ( " " , " + " )