LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4641|回复: 41

写了一个从百度下载Mp3的python脚本

[复制链接]
发表于 2006-10-30 23:17:58 | 显示全部楼层 |阅读模式
google了一下,找到了一些用来从baidu下载mp3的软件,有win下的gui软件,也有linux下的shell脚本,还有python脚本,但遗憾的是现在都已经无法用来下载mp3了,大概是因为百度mp3改版以后这些软件都没有修正吧,就顺手用python重写了一个,也算是练练手吧:)

功能:
用来从百度下载mp3,可以单独下载指定的歌曲,也可以批量下载百度新歌Top100,脚本所接受的参数如下:
Usage: getsong [OPTION]
getsong mp3 file which matches given artist and/or title.

  -h --help         Show this help message.
  -1 --100          Download Baidu Top100 new songs.
  -5 --500          Download Baidu Top500 new songs.
  -a --artist        artist
  -t  --title          song name
  -v --version     show version info

使用范例:
getsong -1 下载百度Top100中的所有歌曲(是数字1,不是字母l)
getsong -a 后弦 -t 昆明湖 下载歌手后弦的昆明湖一曲
getsong -a 后弦 -t 昆明湖 -t 九公主 下载后弦的昆明湖和九公主(可以跟多个-t参数,但只能有一个-a参数)
getsong -t 我想我是海 下载我想我是海

目前getsong脚本进行了比较大的修改,感谢网友的信息反馈:)

Changes(2006-11-09):
1。脚本改名为getsong,简单些,呵呵。
2。内置多线程下载,不再依赖axel。
3。选择速度较快的站点进行下载,减少您的等待时间。

Changes(2006-11-10):
感谢pupilzeng多次提交patch,在pupilzeng的帮助下修正了多线程下载时会产生的一个错误。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2006-10-31 00:01:59 | 显示全部楼层
$ ./DownloadSong -a 后弦 -t 昆明湖
准备下载《后弦 - 昆明湖》...
Traceback (most recent call last):
  File "./DownloadSong", line 241, in ?
    DownloadSong(artist, title)
  File "./DownloadSong", line 166, in DownloadSong
    fakeurls = _getFakeURLs(artist, title)
  File "./DownloadSong", line 92, in _getFakeURLs
    keyword = keyword.decode('utf8', 'ignore').encode('gbk')
LookupError: unknown encoding: gbk

$ locale
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh:en_US:en
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-31 00:40:16 | 显示全部楼层
Post by bbmd
$ ./DownloadSong -a 后弦 -t 昆明湖
LookupError: unknown encoding: gbk

谢谢你的测试,请问你的python是什么版本呢?如果是2.4以前版本的python的确会有这样的问题,因为在python 2.4中才自带对gb2312, gbk, gb18030 的支持,如果是2.4以前的版本需要安装一个叫cjkcodecs的第三方包才行。

cjkcodecs的地址:http://cjkpython.i18n.org/
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-31 00:43:32 | 显示全部楼层
贴几个运行截图:)
第一个是正在下载一个单曲,第二个单曲下载完成,第三个是在批量下载百度Top500中的歌曲(下载Top500的功能没有添加进去,其实只需要修改一下源文件中下载Top100的函数中的下载地址就可以了)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2006-10-31 18:03:36 | 显示全部楼层
不知道你的下载动作是用纯python实现还是用了外部工具
懒得看源码了
回复 支持 反对

使用道具 举报

发表于 2006-10-31 18:06:03 | 显示全部楼层
哦,axel,界面不太一样
回复 支持 反对

使用道具 举报

发表于 2006-10-31 18:10:53 | 显示全部楼层
Post by aiyi
谢谢你的测试,请问你的python是什么版本呢?如果是2.4以前版本的python的确会有这样的问题,因为在python 2.4中才自带对gb2312, gbk, gb18030 的支持,如果是2.4以前的版本需要安装一个叫cjkcodecs的第三方包才行。

cjkcodecs的地址:http://cjkpython.i18n.org/

嘿嘿,成了,很不错的小软件!
  1. $ ./DownloadSong -a 郑智化 -t 水手
  2. 准备下载《郑智化 - 水手》...
  3. Initializing download: http://www.pingyin.net/music/sound/xygq/007.mp3
  4. File size: 4700914 bytes
  5. Opening output file 郑智化-水手.mp3
  6. Starting download

  7. Connection 2 finished                                                          ]Connection 0 finished                                                          ]Connection 1 finished                                                          ][100%] [..................................................] [  63.3KB/s] [00:00]
  8. Downloaded 4590.7 kilobytes in 1:12 seconds. (63.28 KB/s)
  9. 已经成功下载《郑智化 - 水手》
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-31 18:35:38 | 显示全部楼层
Post by 三翻领
不知道你的下载动作是用纯python实现还是用了外部工具
懒得看源码了


俺知道你也用python:)我是很想用纯python实现多线程下载,不过我现在对文件进行分块还有一些问题,研究下先,呵呵。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-31 18:37:28 | 显示全部楼层
Post by bbmd
嘿嘿,成了,很不错的小软件!

现在还有很多问题,有时间再慢慢改吧。
回复 支持 反对

使用道具 举报

发表于 2006-11-1 16:36:21 | 显示全部楼层
不错啊,挺方便的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表