musicbox
musicbox copied to clipboard
歌曲版权问题无法播放的简单解决方案
-
系统:archlinux x86_64 kernel 4.19.25-1-lts
-
问题
今天想缓存一首歌,却提示版权问题一直跳到几十首歌以后,但我看缓存里却下载了很多歌曲包括我想下载的那首,再倒回去就可以播放了。
- 结论:
部分歌曲可以缓存,却无法播放。
-
原因: 我简单看了一下cache和player的源码,发现缓存使用了地址转换,在线播放却没有。简单改了一下player.py的代码就可以正常播放了
-
解决方案: player.py 第321行开始加上作如下修改,注意对齐
else:
new_url = NetEase().songs_url([args["song_id"]])[0]["url"] #使用新地址
if not new_url: #如果没有获得新地址
new_url = args["mp3_url"] #使用老地址传给mpg123
thread = threading.Thread(
target=self.run_mpg123,
args=(on_exit, new_url, args["expires"], args["get_time"]),
)
....
如果修改错误,多半是空格的问题,改了一句话,就不Fork了,直接附上文件
- player.py,替换原来的 ,一般在python安装目录site-packages下面,如archlinux在,/lib/python3.7/site-packages/NEMbox/ player.py.tar.gz
- archlinux 打包版,后缀名改为tar.xz , pacman -U安装 netease-musicbox-git-r588.8780d8f-1-any.pkg.tar.gz
~~依然不行,还是爆屏。~~ 播一下其它列表再换回来可以了。
我也发现了,已经更新 修改遇到真正版权限制的歌曲会出错,所以需要加个判断,我还是简单粗暴的改了一下,如果版权限制,获取的newurl为None,此时直接播放下一首 原来的版权限制是获取mpg123的状态判断的,这样这些语句就废了,不过好像现在还能用
依然不行,还是爆屏。 播一下其它列表再换回来可以了。
OS: Arch Linux
Kernel: x86_64 Linux 4.19.28-1-lts
按照上述更改后无效,程序都跑不起来,有哪位大神给分享一份改过的player.py
OS: Arch Linux
Kernel: x86_64 Linux 4.19.28-1-lts
按照上述更改后无效,程序都跑不起来,有哪位大神给分享一份改过的player.py
好吧,已经附上
不如交个pr吧。
@oldoldstone 感谢,已处理好了,多谢!!!