Initial import: Music_Server, MusicFree, catalog-sync

This commit is contained in:
2026-05-23 16:51:14 +08:00
commit 069af30dba
847 changed files with 179878 additions and 0 deletions
@@ -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())