python下载会员歌曲
时间: 2023-11-20 09:59:03 浏览: 38
以下是使用Python下载会员歌曲的步骤:
1. 首先,我们需要获取会员歌曲的URL。根据引用,我们可以找到vkey值,将其与其他参数拼接成URL。具体的拼接方式可以参考代码示例。
2. 接下来,我们需要获取歌曲文件的真实URL。根据引用,我们可以找到包含歌曲文件URL的JS文件,解析其中的数据即可获取歌曲文件的真实URL。具体的解析方式可以参考代码示例。
3. 最后,我们可以使用Python的requests库下载歌曲文件。具体的下载方式可以参考代码示例。
代码示例:
```python
import requests
import json
# 获取会员歌曲的URL
def get_song_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"}},"comm":{"uin":0,"format":"json","ct":24,"cv":0}}' % songmid
headers = {
'referer': 'https://y.qq.com/',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
response = requests.get(url, headers=headers)
json_data = json.loads(response.text)
vkey = json_data['req_0']['data']['midurlinfo'][0]['vkey']
song_url = 'http://dl.stream.qqmusic.qq.com/%s?vkey=%s&guid=0&uin=0&fromtag=66' % (json_data['req_0']['data']['midurlinfo'][0]['purl'], vkey)
return song_url
# 获取歌曲文件的真实URL
def get_song_file_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"}},"comm":{"uin":0,"format":"json","ct":24,"cv":0}}' % songmid
headers = {
'referer': 'https://y.qq.com/',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
response = requests.get(url, headers=headers)
json_data = json.loads(response.text)
vkey = json_data['req_0']['data']['midurlinfo'][0]['vkey']
song_file_url = 'http://dl.stream.qqmusic.qq.com/%s?vkey=%s&guid=0&uin=0&fromtag=66' % (json_data['req_0']['data']['midurlinfo'][0]['purl'], vkey)
return song_file_url
# 下载歌曲文件
def download_song(songmid):
song_file_url = get_song_file_url(songmid)
response = requests.get(song_file_url)
with open('%s.mp3' % songmid, 'wb') as f:
f.write(response.content)
# 示例:下载《七里香》
songmid = '001JDzNw3OaVqJ'
song_url = get_song_url(songmid)
response = requests.get(song_url)
with open('%s.mp3' % songmid, 'wb') as f:
f.write(response.content)
```