+ -
当前位置:首页 → 问答吧 → python下载歌词

python下载歌词

时间:2011-02-18

来源:互联网

本帖最后由 butterinsect 于 2011-02-18 20:35 编辑
  1. #-*-coding:utf-8-*-
  2. import sys, urllib, re
  3. reload(sys)
  4. sys.setdefaultencoding('utf-8')

  5. class lrclib:
  6.         def        __init__(self, music, singer=None):
  7.                 self.music = music
  8.                 self.singer = singer
  9.                 self.fp = open(music+".lrc", "w+")

  10.        
  11.         def        getlrc(self):
  12.                 dir = "http://mp3.sogou.com/lyric.so?query="
  13.                 music_gbk = urllib.quote(self.music.decode(sys.stdin.encoding).encode('gbk'))
  14.                 url = dir+music_gbk

  15.                 if self.singer:
  16.                         singer_gbk = urllib.quote(self.singer.decode(sys.stdin.encoding).encode('gbk'))
  17.                         url = url+"+"+singer_gbk

  18.                 try:
  19.                         conn = urllib.urlopen(url)
  20.                 except:
  21.                         print u'网络不给力, 无法连接'

  22.                 lines = conn.read()

  23.                 #records = re.findall("<li>.+LRC歌词下载</a></li>", lines)
  24.                 try:
  25.                         records = re.findall('<li>.*LRC\xb8\xe8\xb4\xca\xcf\xc2\xd4\xd8</a></li>', lines)
  26.                 except:
  27.                         print '无法找到歌词的链接地址,汗...'
  28.                 result = records[0]
  29.                 result = result.split()[1]
  30.                 left = result[result.find('"')+1:]
  31.                 left = left[:left.find(':')]       

  32.                 lrcurl = "http://mp3.sogou.com/"
  33.                 lrcurl = lrcurl+left
  34.                 try:
  35.                         lrcconn = urllib.urlopen(lrcurl)
  36.                 except:
  37.                         print '网络不给力,无法连接'
  38.                
  39.                 print 'lrc文件正在下载中......'
  40.                 lrc = lrcconn.read()
  41.                 self.fp.write(lrc)

  42.                 conn.close()
  43.                 self.fp.close()
  44.                 print '下载完成,保存为:%s' %(music+".lrc")


  45. if __name__ == "__main__":
  46.         '''getlrc 歌曲名, 歌手名(可选)'''
  47.         music = sys.argv[1]
  48.         if len(sys.argv)>2:
  49.                 singer = sys.argv[2]
  50.         else:
  51.                 singer = None

  52.         r = lrclib(music, singer)
  53.         r.getlrc()

  54.                
  55.                
  56.                
  57.                
复制代码
可以从sogou mp3 那里下载歌词...
yyt@yyt:~/workspace/pworks$ sudo python getlrc.py 素颜
lrc文件正在下载中......
下载完成,保存为:素颜.lrc

我的博客http://hi.baidu.com/butterinsect/blog

作者: butterinsect   发布时间: 2011-02-18

鼓励鼓励。

作者: 2gua   发布时间: 2011-02-18