PYQT5使用QtMultimedia播放网易云音乐下载音乐部分播放不了问题及解决方案

选用的音乐下载自网易云音乐,播放类代码如下:

class music(object):
    def __init__(self, dic="sec_s",name="01"):
        self.player = QMediaPlayer()
        url = QtCore.QUrl.fromLocalFile(
            r"sec_s/mus/003.mp3")
        content = QMediaContent(url)
        self.player.setMedia(content)
        self.player.setVolume(25.0)
        self.player.play()
        self.volflag=-1
    def playMusic(self,URL):
        try:
            #正常音量切换
            if(self.volflag==0):
                content = QMediaContent(QtCore.QUrl.fromLocalFile(URL))
                self.player.setMedia(content)
                self.player.setVolume(25.0)
                self.player.play()
            #前曲减弱
            elif(self.volflag==-1):
                for i in range(25,0,-5):
                    time.sleep(0.5)
                    print(i)
                    self.player.setVolume(i)
                content = QMediaContent(QtCore.QUrl.fromLocalFile(URL))
                self.player.setMedia(content)
                self.player.setVolume(25.0)
                self.player.play()

        except:
            print("播放失败")

出现的十分令人迷惑的问题是,这个代码对2017年以前下载的音乐有效,对2018年及以后下载的音乐无效,没有声音,也不报错。经过本机音乐播放器能够检测每个音乐都是能播放的,不存在下载失败问题,而且音乐也都不是付费歌曲,是没有会员也能下载的那种。
狒狒挠头.jpg
怀疑是网易云音乐的格式进行了改变

解决方案:
(爬虫用的好,监狱进的早)划掉,音乐不听话,那就自己下。
音乐下载代码如下,代码存在直接复制,但好几年前粘的了,如果有人知道是哪个大佬的博客我把链接补上。。。

    song_id='32223222'
    print(1);
    url = "https://music.163.com/song/media/outer/url?id={}.mp3".format(song_id)
    root ="D://PY工程//birth//"
    path = root + url.split('?')[-1]
    try:
        if not os.path.exists(root):
            os.mkdir(root)
        if not os.path.exists(path):
            kv = {'user-agent': '23332333'}
            r = requests.get(url,headers=kv)
            r.raise_for_status()
            with open(path,'wb') as f:
                f.write(r.content)
                f.close()
                print("保存成功")
        else:
            print("文件已存在")
    except:
        print("保存失败")

song_id是音乐的id,获取方法是右键,点击复制链接,会获得这样一串链接:
http://music.163.com/playlist?id=2313935583&userid=414587962

其中id就是歌曲id,userid是你的用户标签,填在下面这行代码的数字上
‘user-agent’: ‘23332333’

root是你要存音乐的位置路径
目前测试来看,这个方法下载非付费音乐是没有问题的,扔进音乐播放类里也能用了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值