musicbox icon indicating copy to clipboard operation
musicbox copied to clipboard

歌曲版权问题无法播放的简单解决方案

Open oldoldstone opened this issue 5 years ago • 6 comments

  • 系统: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了,直接附上文件

  1. player.py,替换原来的 ,一般在python安装目录site-packages下面,如archlinux在,/lib/python3.7/site-packages/NEMbox/ player.py.tar.gz
  2. archlinux 打包版,后缀名改为tar.xz , pacman -U安装 netease-musicbox-git-r588.8780d8f-1-any.pkg.tar.gz

oldoldstone avatar Feb 26 '19 04:02 oldoldstone

~~依然不行,还是爆屏。~~ 播一下其它列表再换回来可以了。

crimx avatar Feb 26 '19 06:02 crimx

我也发现了,已经更新 修改遇到真正版权限制的歌曲会出错,所以需要加个判断,我还是简单粗暴的改了一下,如果版权限制,获取的newurl为None,此时直接播放下一首 原来的版权限制是获取mpg123的状态判断的,这样这些语句就废了,不过好像现在还能用

依然不行,还是爆屏。 播一下其它列表再换回来可以了。

oldoldstone avatar Feb 26 '19 08:02 oldoldstone

 OS: Arch Linux 

Kernel: x86_64 Linux 4.19.28-1-lts

按照上述更改后无效,程序都跑不起来,有哪位大神给分享一份改过的player.py

hehh2001 avatar Mar 15 '19 17:03 hehh2001

 OS: Arch Linux 

Kernel: x86_64 Linux 4.19.28-1-lts

按照上述更改后无效,程序都跑不起来,有哪位大神给分享一份改过的player.py

好吧,已经附上

oldoldstone avatar Mar 16 '19 06:03 oldoldstone

不如交个pr吧。

BeautyyuYanli avatar Mar 16 '19 11:03 BeautyyuYanli

@oldoldstone 感谢,已处理好了,多谢!!!

hehh2001 avatar Mar 17 '19 01:03 hehh2001