首页 > 编程语言 >[python]小白尝试播放某云vip歌曲

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

时间:2022-10-30 16:24:40浏览次数:59  
标签:某云 name python url vip 歌曲 mp3 id result

尝试一下能不能将某云上的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歌曲依然无法播放,而不需要付费的歌曲能够使用本地的音乐播放器进行播放

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

标签:某云,name,python,url,vip,歌曲,mp3,id,result
From: https://www.cnblogs.com/C418-minecraft/p/16841538.html

相关文章