58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
'''
|
|
Function:
|
|
Implementation of KugouMusicClient Cookies Builder
|
|
Author:
|
|
Zhenchao Jin
|
|
WeChat Official Account (微信公众号):
|
|
Charles的皮卡丘
|
|
'''
|
|
import time
|
|
import qrcode
|
|
import requests
|
|
from musicdl.modules.utils.kugouutils import KugouMusicClientUtils, APPID, safeextractfromdict
|
|
|
|
|
|
'''settings'''
|
|
session, cookies = requests.Session(), KugouMusicClientUtils.initdevice()
|
|
|
|
|
|
'''loginqrkey'''
|
|
def loginqrkey(use_web: bool = False):
|
|
qr_appid = 1014 if use_web else 1001
|
|
params = {"appid": qr_appid, "type": 1, "plat": 4, "qrcode_txt": f"https://h5.kugou.com/apps/loginQRCode/html/index.html?appid={APPID}&", "srcappid": 2919}
|
|
return KugouMusicClientUtils.sendrequest(session, "GET", "/v2/qrcode", params=params, base_url="https://login-user.kugou.com", encrypt_type="web", cookies=cookies)
|
|
|
|
|
|
'''loginqrcheck'''
|
|
def loginqrcheck(key: str):
|
|
params = {"plat": 4, "appid": APPID, "srcappid": 2919, "qrcode": key}
|
|
result = KugouMusicClientUtils.sendrequest(session, "GET", "/v2/get_userinfo_qrcode", params=params, base_url="https://login-user.kugou.com", encrypt_type="web", cookies=cookies)
|
|
if isinstance(result, dict) and safeextractfromdict(result, ['data', 'status'], None) == 4:
|
|
token = safeextractfromdict(result, ['data', 'token'], None)
|
|
userid = safeextractfromdict(result, ['data', 'userid'], None)
|
|
if token: cookies["token"] = token
|
|
if userid: cookies["userid"] = str(userid)
|
|
return result
|
|
|
|
|
|
'''buildkugoucookies'''
|
|
def buildkugoucookies():
|
|
# prepare for scan qr code
|
|
qr_resp = loginqrkey()
|
|
qr_key = qr_resp["data"]["qrcode"]
|
|
img = qrcode.make(f"https://h5.kugou.com/apps/loginQRCode/html/index.html?qrcode={qr_key}")
|
|
img.save("kugou_login_qr.png"); img.show()
|
|
# wait for scan
|
|
while True:
|
|
check = loginqrcheck(qr_key)
|
|
if safeextractfromdict(check, ['data', 'status'], None) == 4: break
|
|
time.sleep(2)
|
|
# register device
|
|
KugouMusicClientUtils.registerdevice(session, cookies)
|
|
# return
|
|
return cookies
|
|
|
|
|
|
'''tests'''
|
|
if __name__ == '__main__':
|
|
print(buildkugoucookies()) |