darknessomi / musicbox

网易云音乐命令行版本

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

oldoldstone opened this issue · 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
commented

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

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

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

commented
 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吧。

commented

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