分享一个百度音乐下载器以及一个很好的 http 库

2014-10-14 20:56:17 +08:00
 dbow
项目地址
https://github.com/maliubiao/simple_htttp

其中baidu_music.py的用法
python baidu_music.py -a 歌手id 就可以自动下载其所有的歌
python baidu_music.py -i 歌曲id 就可以下载单首歌

歌手id从http://music.baidu.com/artist/7898取得
歌曲id从http://music.baidu.com/song/14945107取得

这个是为了测试自写的http库而写的,下了几个G的歌,用着确实很好,分享给各位

这个项目里还有一些好玩的东西
simple_http.py 是http库, 我个人非常讨厌标准库里的urllib2, requests代码又乱效率又低, 不喜欢。
这个库支持http代理,socks5代理, 以及全部的http方法, 代码量少, 效率高。
post文件也很简单,
比如simple_http.post("http://url.com", payload{"file": open("test", "r")})

encrypted.client.py encrypted.server.py是socks5转发代理
这个是epoll异步非阻塞模型+随机密码表, 在linux上工作的极好,翻墙用的,在我的笔记本上使用CPU占用从来不过0.3%。

pretty.py是html formatter, 把乱七八糟,经过混淆的html整理干净

etree_utils.py是为了快速定位静态html文件里的XPATH写的, 做爬虫时非常好用

http_request_simulator.py 是用多进程模型模拟浏览器并发取网页用的,主要测试网页的整体响应, 以及服务的正确性。

这些工具是我写爬虫时用的,我个人是etree_util.py 定位XPATH, simple_http下载, lxml提取, 比Beautifulsoup之流好太多。

欢迎star, 欢迎反馈, 不懂的地方给我留言,我给你解释。
我的微博 weibo.com/maliubiao
1971 次点击
所在节点    Python
13 条回复
paloalto
2014-10-14 21:16:06 +08:00
404
dbow
2014-10-14 21:23:06 +08:00
irrienberith
2014-10-14 21:29:38 +08:00
第一个star
fange01
2014-10-14 21:30:19 +08:00
先关注,常交流。
phuslu
2014-10-14 21:31:22 +08:00
回个可能打击楼主的贴, 楼主的代码带有强烈 c/perl 的风格,不是主流的 python lib 的写法。
phuslu
2014-10-14 21:41:52 +08:00
比如 send_http 这个方法,主流的做法是返回一个 multi-value dict 的 message 和 readable 的 fileobject, 而且一般会把它们打包成一个 response 对象里面。

楼主你直接暴力 return header, body 局限性太大。
jy02201949
2014-10-14 21:48:29 +08:00
下下来是什么码率的歌啊?
dbow
2014-10-14 21:50:06 +08:00
@jy02201949 我没有会员, 网页播放器里普通的那种, 4M大小的mp3。
dbow
2014-10-14 21:53:32 +08:00
@phuslu 强调的是准确,简单,高效,没有骨质增生。
reter
2014-10-14 22:05:45 +08:00
我做过类似的,不过是油猴脚本,原理是收藏歌曲,然后通过yinyueyun.baidu.com(对不对?)获取下载链接,可以获取到无损和320
dbow
2014-10-14 22:09:43 +08:00
@phuslu 压力山大,return header, body除了直接暴力, 其它局限性麻烦指导一下, 谢谢。
dbow
2014-10-14 22:21:37 +08:00
@reter 欢迎试试我这个,我这一会儿又自动下了几百首。
xiaomayi0323
2014-10-21 15:45:39 +08:00
@phuslu Goagent作者?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/138918

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX