Initial import: Music_Server, MusicFree, catalog-sync
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
'''
|
||||
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())
|
||||
Reference in New Issue
Block a user