呵,真是BUG多多
代码: 全选
#!/usr/bin/env python
#coding:utf-8
import sys
import os
import re
wc='gbk'
lc=sys.getfilesystemencoding()
downdir='~/Music/'
if len(sys.argv)==1:print '必须输入音乐名称';sys.exit()
m=sys.argv[1].split(".")
e='-1'
if len(m)==1:pass
elif m[1]=='mp3':
e='0'
elif m[1]=='rm':
e='1'
elif m[1]=='wma':
e='2'
import urllib2
url="http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=%s&lm=%s"%(urllib2.quote(m[0].decode(lc).encode(wc)),e)
f=urllib2.urlopen(url)
a=f.readline()
aaa=[]
url=[]
while a:
if a.find('<td class=d><a href=')!=-1:
aa=[]
for i in range(8):
a=a.decode(wc,'ignore')
if i==0:
tmp=re.findall('<td class=d><a href="(.*)" title.*target="_blank">(.*)</a>.*',a)
url=url+[tmp[0][0]]
a=tmp[0][1]
a=re.sub(r'<[^<>]*>','',a)
a=re.sub(r' ','',a)
else:
a=re.sub(r'(<[^<>]*>)','',a)
a=re.sub(r'[\r\n]+','',a)
a=re.sub(r' ','',a)
a=a.replace(' ','')
aa=aa+[a]
a=f.readline()
while a=="":a=f.readline()
aaa=aaa+[aa]
else:a=f.readline()
f.close()
print '序号\t格式\t大小\t歌手名\t歌曲名\t专辑名'
i=0
for ii in aaa[:20]:
i=i+1
print i,'\t',
print '%s\t%s\t%s\t%s\t%s'%(ii[-1],ii[-2],ii[1],ii[0],ii[2])
try:c=input('输入下载序号')
except:print '';sys.exit()
print "选择下载",c
file=aaa[c-1][1].encode(lc)+'-'+aaa[c-1][0].encode(lc)
def getu(url,chartset='gbk'):
aa=re.findall(u'[\u4e00-\u9fa5 ]+',url)
for k in aa:
url=url.replace(k,urllib2.quote(k.encode(chartset)))
return url
u=getu(url[c-1])
f=urllib2.urlopen(u)
a=f.read()
f.close()
a=re.findall(r'<li.*\n.*<a href="(.*)" target.*',a)
musicurl=getu(a[0].decode(wc)).encode(lc)
if os.path.exists('/usr/bin/axel'):
cmd='axel -a "'+musicurl+'" -o '+downdir+file+"."+musicurl.split('.')[-1]
else:
cmd='wget "'+musicurl+'" -O '+downdir+file+"."+musicurl.split('.')[-1]
os.system(cmd)