dr_py/zhengban/qqmusic.py
2023-04-23 21:04:12 +08:00

53 lines
1.8 KiB
Python

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()