💻 源代码
import requests
import json
headers = {"User-Agent": "Mozilla/5.0 Chrome/76.0.3809.100"}
def getSongMid(searchword):
"""搜索歌曲获取songmid"""
url = f"https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=1&n=10&w={searchword}"
res = requests.get(url=url, headers=headers)
html = res.text[9:-1] # 去除callback包装
songdata = json.loads(html)
song_list = songdata["data"]["song"]["list"]
for song in song_list:
print(f"歌曲: {song['songname']}, ID: {song['songmid']}")
return song_list
def downloadSong(songmid, songname):
"""下载歌曲"""
p_url = f'https://u.y.qq.com/cgi-bin/musicu.fcg?data={{"req_0":{{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{{"guid":"8182077584","songmid":["{songmid}"],"uin":"7945"}}}}}}'
res = requests.get(url=p_url, headers=headers)
purl = res.json()["req_0"]["data"]["midurlinfo"][0]["purl"]
song_url = 'http://isure.stream.qqmusic.qq.com/' + purl
content = requests.get(url=song_url, headers=headers).content
with open(f'{songname}.mp3', 'wb') as f:
f.write(content)
print(f"下载完成: {songname}.mp3")
# 使用示例
songs = getSongMid("周杰伦")
downloadSong(songs[0]['songmid'], songs[0]['songname'])