python如何下载QQ音乐会员歌曲
时间: 2023-08-22 09:08:43 浏览: 63
可以使用第三方的Python库来下载QQ音乐会员歌曲。其中比较常用的库是"pycryptodomex"和"requests"。以下是一个简单的示例代码:
```python
import requests
from Crypto.Cipher import AES
import base64
def decrypt(key, text):
cipher = AES.new(key, AES.MODE_ECB)
decrypted_text = cipher.decrypt(base64.b64decode(text)).decode('utf-8')
return decrypted_text.rstrip('\0')
def get_download_url(songmid):
url = 'https://u.y.qq.com/cgi-bin/musicu.fcg?data=' \
'{"req":{"module":"CDN.SrfCdnDispatchServer","method":"GetCdnDispatch","param":{"guid":"0","calltype":0,"userip":""}},' \
'"req_0":{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{"guid":"0","songmid":["%s"],"songtype":[0],"uin":"0","loginflag":1,"platform":"20"}}' \
'}' % songmid
response = requests.get(url)
data = response.json()
vkey = data['req_0']['data']['midurlinfo'][0]['vkey']
filename = data['req_0']['data']['midurlinfo'][0]['filename']
download_url = f"http://dl.stream.qqmusic.qq.com/{filename}?vkey={vkey}&guid=0&uin=0&fromtag=66"
return download_url
def download_song(songmid):
headers = {
'referer': 'https://y.qq.com/portal/player.html',
'origin': 'https://y.qq.com',
'sec-fetch-site': 'cross-site',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
}
download_url = get_download_url(songmid)
response = requests.get(download_url, headers=headers)
with open(f"{songmid}.m4a", "wb") as f:
f.write(response.content)
print("下载完成")
songmid = "填入你想要下载的歌曲的songmid"
download_song(songmid)
```
请注意,使用该代码下载QQ音乐会员歌曲需要在登录QQ音乐网页版后获取到的cookie信息,并在请求头中进行设置,否则可能会下载失败。此外,该代码只能下载M4A格式的音频文件。
另外,需要注意的是,根据相关法律法规和QQ音乐的使用规则,未经授权下载和分享版权受保护的音乐是违法行为,建议遵守相关规定。