import requests
import json
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
}
# 获取songmid
def getSongMid():
number = int(input("请输入获取几首歌曲:"))
name = input("请输入歌名或者歌手:")
url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=1&n=%d&w=%s' %(number, name)
res = requests.get(url=url, headers=headers)
html = res.text
h_dict = html[9:-1]
h_dict = json.loads(h_dict)
# 获取songmid
need_info = []
song_list = h_dict["data"]["song"]["list"]
for song_info in song_list:
songmid = song_info["songmid"]
songname = song_info["songname"]
# 通过元组装住
need_info.append((songmid, songname))
print("获取成功信息:", need_info)
return need_info
# 获取purl
def getSongPurl(need_info):
# guid,uin都是用户信息 guid 8182077584 uin 2848065047
guid = input("请输入guid:")
uin = input("请输入uin:")
for song_info in need_info:
songmid = song_info[0]
songname = song_info[1]
p_url = 'https://u.y.qq.com/cgi-bin/musicu.fcg?data={"req":{"param": {"guid": "%s"}}, "req_0": {"module": "vkey.GetVkeyServer", "method": "CgiGetVkey", "param": {"guid": "%s", "songmid": ["%s"], "uin": "%s"}}, "comm": {"uin": %s}}' %(guid, guid, songmid, uin, uin)
response = requests.get(url=p_url, headers=headers)
html = response.text
keyjs = json.loads(html)
purl = keyjs["req_0"]["data"]["midurlinfo"][0]["purl"]
m4aUrl = "http://dl.stream.qqmusic.qq.com/"+purl
print(m4aUrl)
if __name__ == '__main__':
need_info = getSongMid()
getSongPurl(need_info)
运行结果: