1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import requests
- import execjs
- from urllib.parse import quote
- import json
- import re
- class qqmusic:
- def __init__(self, url):
- self.url = url
- self.vid = ""
- self.headers = {
- "Content-Type": "application/x-www-form-urlencoded",
- "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36¬"
- }
- self.js = execjs.compile(open("./js/qqmusic.js").read())
- self.get_vid()
- def get_vid(self):
- res = requests.get(self.url).text
- vid = re.findall('"songmid":"(.*?)",', res)[0]
- self.vid = vid
- def get_data(self):
- return json.dumps({"req": {"module": "CDN.SrfCdnDispatchServer", "method": "GetCdnDispatch",
- "param": {"guid": "12345678", "calltype": 0, "userip": ""}},
- "req_0": {"module": "vkey.GetVkeyServer", "method": "CgiGetVkey",
- "param": {"guid": "12345678", "songmid": [self.vid], "songtype": [0],
- "loginflag": 1, "platform": "20"}},
- "comm": {"format": "json", "ct": 24, "cv": 0}})
- def join_url_params(self):
- params = {
- "sign": self.js.call("getSign", self.get_data()),
- # "format": "json",
- # "inCharset": "utf8",
- # "outCharset": "utf-8",
- # "notice": "0",
- # "platform": "yqq.json",
- # "needNewCode": "0",
- "data": quote(str(self.get_data()))
- }
- return f'https://u.y.qq.com/cgi-bin/musics.fcg?sign={params["sign"]}&data={params["data"]}'
- def start(self):
- res = requests.get(self.join_url_params())
- print(res.text)
- return res.json()
- if __name__ == '__main__':
- qqmusic().start()
|