[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歌曲依然无法播放,而不需要付费的歌曲能够使用本地的音乐播放器进行播放
付费歌曲会出现这样的情况,需要在网易云音乐的播放器中打开,但是尝试后失败
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了