C418

[python]小白尝试播放某云vip歌曲

尝试一下能不能将某云上的vip歌曲下载到本地并且能够正常播放

首先附上代码:

import requests

url = "https://music.163.com/weapi/cloudsearch/get/web?csrf_token="
data = {
        "params":"ow1r6+T7rTkgeDGAgafYsfb7pJmOpIrCYhgWhfe3Z36+fcCiHjLoPQWSgiUq8Qt3cAci5BJ7NaJWihGQ7f7MN8zHvb5WIx86F8rgHMDkrqCJjPSxy7HQ5wbNpCJhTBWF6AsRrqHKqXDqB/OifMshPUiTt0pHgbiyZOTjT6PpOXj4RBUub+GytvT6wg80ancEFahFv8T2Ku6c9/L2S9uv57UuztdDjyAPGh1QSoDmj8wId98ljBJowiZd+U7ndIpXCQFPIDq9BNh2QJ58XTonHSDywWhbKG42bytuWW41u5o=",
        "encSecKey":"6b5d486667031dd922c0d72206010c090e236c38e78340e03d00cfc710f835b1933243299f8743b6b2f6e31445f5c699b55162f840e87279960e7dbf8cf3e122c6abcfd6bd63a2dafaf6aeecaaa5fa93e77d8c65027d6de167f4c932209fb2e8a95410c83595ab2d376d1f08d175144d451f9fd052eb4546e77a920a4f3f640b"
}

a = requests.post(url, data).json()
print(a)

result = a['result']['songs']

for i in result:
    name = i["name"]
    id = i["id"]
    print(name,id)
    check = "https://music.163.com/song/media/outer/url?id={}.mp3".format(id)
    mp3 = requests.get(check).content
    with open("music/" + name + ".mp3","wb")as f:
        f.write(mp3)

    print(name,"over")

首先设置2个变量存放request.post的二个参数:url和data,将post方法的结果以json的格式保存在a这个变量里

然后使用result变量取得存放在a中筛选出来的result和songs关键词的数据

然后输出的结果为:

但是数据参数太多,我们需要的是歌曲的name和id

用for循环遍历在result中关键词为name和id的数据,并将其输出

然后将https://music.163.com/song/media/outer/url?id={}.mp3与id变量进行对应

最后使用with open方法将文件存储到指定的文件夹中。

最后将mp3文件下载到本地


虽然下载到本地了,但是需要付费的vip歌曲依然无法播放,而不需要付费的歌曲能够使用本地的音乐播放器进行播放

付费歌曲会出现这样的情况,需要在网易云音乐的播放器中打开,但是尝试后失败

posted @   C41829  阅读(310)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示