当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 下百度mp3 python版
帖子发表于 : 2008-05-26 17:31 

注册: 2006-08-22 23:10
帖子: 166
送出感谢: 0 次
接收感谢: 0 次
发现总是有解码出错的不得不a=a.decode(wc,'ignore')
呵,真是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('&nbsp;','')
            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)


最后由 baic 编辑于 2008-05-29 16:36,总共编辑了 6 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-05-26 17:34 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
恩。。。。。这个也太多了啊,lz给个龟壳吧 :D


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-05-26 17:35 

注册: 2006-08-22 23:10
帖子: 166
送出感谢: 0 次
接收感谢: 0 次
xiooli 写道:
恩。。。。。这个也太多了啊,lz给个龟壳吧 :D

什么龟壳


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-05-26 17:38 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
GUI啦 :D
另:给个附件吧,这个复制粘贴以后好多缩进就乱了,这对python来说简直令人抓狂


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-05-26 17:42 

注册: 2006-08-22 23:10
帖子: 166
送出感谢: 0 次
接收感谢: 0 次
改正了显示正常现在


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-05-26 17:55 

注册: 2006-08-22 23:10
帖子: 166
送出感谢: 0 次
接收感谢: 0 次
GUI不会


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-05-26 21:43 

注册: 2008-05-22 10:14
帖子: 5
系统: 12.04
送出感谢: 0 次
接收感谢: 0 次
请教,运行以后提示这个是咋回事呢?
Traceback (most recent call last):
File "mp3.py", line 37, in <module>
a=a.decode(c)
UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 82-83: illegal multibyte sequence


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-05-26 22:37 

注册: 2006-08-22 23:10
帖子: 166
送出感谢: 0 次
接收感谢: 0 次
引用:
请教,运行以后提示这个是咋回事呢?
Traceback (most recent call last):
File "mp3.py", line 37, in <module>
a=a.decode(c)
UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 82-83: illegal multibyte sequence


解码出错,改成gbk就成,1楼已经修改,也许其它的也需要改,感谢试用


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-05-27 0:06 
头像

注册: 2007-09-26 17:23
帖子: 385
地址: 云南-香格里拉
送出感谢: 0 次
接收感谢: 1
谢谢楼主,,,,,
可以学习学习了


_________________
自打用上ubuntu,我决定做一个不盗版的好公民


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-05-28 19:39 
头像

注册: 2008-03-19 14:20
帖子: 130
地址: 广西柳州
送出感谢: 1
接收感谢: 0 次
又一个下载MP3,呵呵 学习了


_________________
主板:ASUS P8Z77-V
CPU:Intel 酷睿i3 3200
内存:ADTA DDRⅢ 1600 8G
显卡:Intel® HD Graphic
声卡:Realtek ALC 892
有线网卡:Intel® 82579V
无线网卡:Qualcomm Atheros AR9485
硬盘:WDC WD6401AALS
电源:长城ATX-350SD静音大师
显示器:Samsung S24A350H


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译