Python 版 mxget 发布~

2019-11-02 16:34:34 +08:00
 winterssy

很久没写 py 了,于是乎将自己之前用 Go 写的项目 mxget 用 Python 实现了一遍,有了 asyncioaiohttp 加持,性能媲美甚至超越了 Golang 版 mxget 。目前已在 PyPI 发布,大家通过 pip3 install mxget 就能安装并使用了,用法跟 mxget 完全一致。源码: https://github.com/winterssy/pymxget

5372 次点击
所在节点    Python
33 条回复
dezhou
2019-11-02 19:22:29 +08:00
蛮好的,
uhian
2019-11-02 23:23:24 +08:00
[CRITICAL] get song: Cannot connect to host app.c.nf.migu.cn:443 ssl:default [[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)]
winterssy
2019-11-03 00:15:58 +08:00
@uhian #2 看上去是你本地环境缺少某些根证书
locoz
2019-11-03 01:41:39 +08:00
单纯的 asyncio+aiohttp,性能是没有 Golang+net/http 高的啊...是不是你 Golang 版代码写的有问题
winterssy
2019-11-03 04:18:23 +08:00
@locoz 论单次请求的话,Go net/http 比 aiohttp 快,但为了聚合数据 mxget 经常要发起大量的并发请求,Go 的方案是采用 goroutines+channel,而 aiohttp 则是异步的,这种情况下的性能表现确实优于 net/http
ipadpro4k
2019-11-03 07:07:48 +08:00
vicnicLight007
2019-11-03 09:09:49 +08:00
mxget 是干嘛的?
winterssy
2019-11-03 11:47:27 +08:00
@vicnicLight007 #7 能帮助你从各大音乐平台快速搜索和下载歌曲
czjackjin
2019-11-03 11:52:46 +08:00
有机会试试
jiezhi
2019-11-03 11:55:59 +08:00
start+fork 了,有没有已经实现了扫描某歌单里灰色歌曲的脚本啊,我要把云音乐里灰色的都传到云盘里
winterssy
2019-11-03 12:03:29 +08:00
@jiezhi #10 你说的这个扫描是指返回变灰的歌曲列表吗?
jiezhi
2019-11-03 12:07:46 +08:00
@winterssy #11 是的
zeromake
2019-11-03 12:16:11 +08:00
问个事是什么样的情况下 go 版本,比 py 版本的性能低呢,最近在研究高并发优化,没啥合适的样本。

是 cli 模式的,还是提供接口的形式?
uhian
2019-11-03 12:26:00 +08:00
@winterssy macOS 10.15 ,也没改过啥……
winterssy
2019-11-03 12:36:48 +08:00
@jiezhi #12 这个是可以的,我会写一个独立的脚本(不会并入主体项目)来解决这个问题,写好之后再 @你
faceair
2019-11-03 12:36:52 +08:00
golang 版本限制并发到 32 ? https://github.com/winterssy/mxget/blob/master/internal/cli/cli.go#L30
又不是 CPU 密集型任务,限制到核数或者 32 有啥意义... 你可以试试把这个数往上怼了再测测看
winterssy
2019-11-03 12:39:46 +08:00
@faceair #16 这个是测试过的,太高并发会触发某些音乐平台的限制而导致大量的失败请求
faceair
2019-11-03 12:44:12 +08:00
那 golang 性能至少能跑到云平台限制的峰值? python 能超过对端限制峰值?不能的话最多打平手?
faceair
2019-11-03 12:45:18 +08:00
不能把 go 的手脚绑起来说它性能差嘛
winterssy
2019-11-03 12:55:11 +08:00
@faceair #19 你没办法知晓平台限制的峰值是多少,不同平台的策略也不一样。二者的限制并发数都是一样的,并没有说 go 性能差,而是说 go 原生的 net/http 库性能确实不是很好,不然也不会有 fasthttp 这样的存在了。这只是我测试的结果,你也可以 clone 源码下来自己跑,如果有 bug,欢迎 pr

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

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

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

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

© 2021 V2EX