From 8919767eb5961337734ea8640bd2f65aa27a5ee9 Mon Sep 17 00:00:00 2001 From: ikun Date: Sun, 18 Aug 2024 16:57:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BB=99ck=E6=B1=A0=E5=8A=A0=E4=B8=8Ak?= =?UTF-8?q?g=E5=88=B7=E6=96=B0=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 测试时不知道为什么ck不变,估计要等( --- modules/kg/refresh_token.py | 123 ++++++++++++++++++++++++++++++------ 1 file changed, 104 insertions(+), 19 deletions(-) diff --git a/modules/kg/refresh_token.py b/modules/kg/refresh_token.py index f9da4e6..1038dd6 100644 --- a/modules/kg/refresh_token.py +++ b/modules/kg/refresh_token.py @@ -1,6 +1,6 @@ # ---------------------------------------- # - mode: python - -# - author: helloplhm-qwq - (feat. Huibq) +# - author: helloplhm-qwq - (feat. Huibq and ikun0014) # - name: refresh_token.py - # - project: lx-music-api-server - # - license: MIT - @@ -22,15 +22,19 @@ async def refresh(): return if (not config.read_config('module.kg.user.refresh_token.enable')): return + + user_id = config.read_config('module.kg.user.userid') + token = config.read_config('module.kg.user.token') + if (config.read_config('module.kg.client.appid') == '1005'): ts = int(time.time() * 1000) - p3 = aes_sign(json.dumps({'clienttime': ts // 1000, 'token': config.read_config('module.kg.user.token')})) + p3 = aes_sign(json.dumps({'clienttime': ts // 1000, 'token': token})) data = { 'p3': p3, 'clienttime_ms': ts, 't1': 0, 't2': 0, - 'userid': config.read_config('module.kg.user.userid') + 'userid': user_id } params = { 'dfid': '-', @@ -49,26 +53,26 @@ async def refresh(): req = await signRequest(login_url, params, {'method': 'POST', 'json': data, 'headers': headers}) body = req.json() if body['error_code'] != 0: - logger.warning('刷新登录失败, code: ' + + logger.warning(f'酷狗音乐账号(UID_{user_id})刷新登录失败, code: ' + str(body['error_code']) + f'\n响应体: {body}') return else: - logger.info('刷新登录成功') + logger.info(f'酷狗音乐账号(UID_{user_id})刷新登录成功') config.write_config('module.kg.user.userid', str(body['data']['userid'])) - logger.info(f'已通过相应数据更新userid') config.write_config('module.kg.user.token', body['data']['token']) - logger.info('已通过相应数据更新kg_token') + logger.info(f'为酷狗音乐账号(UID_{user_id})数据更新完毕') + return elif (config.read_config('module.kg.client.appid') == '3116'): ts = int(time.time() * 1000) - p3 = aes_sign(json.dumps({'clienttime': ts // 1000, 'token': config.read_config('module.kg.user.token')}), key=b'c24f74ca2820225badc01946dba4fdf7', iv=b'adc01946dba4fdf7') + p3 = aes_sign(json.dumps({'clienttime': ts // 1000, 'token': token}), key=b'c24f74ca2820225badc01946dba4fdf7', iv=b'adc01946dba4fdf7') data = { 'p3': p3, 'clienttime_ms': ts, 't1': 0, 't2': 0, - 'userid': config.read_config('module.kg.user.userid') + 'userid': user_id } params = { 'dfid': '-', @@ -87,17 +91,17 @@ async def refresh(): req = await signRequest(login_url, params, {'method': 'POST', 'json': data, 'headers': headers}) body = req.json() if body['error_code'] != 0: - logger.warning('刷新登录失败, code: ' + + logger.warning(f'酷狗音乐账号(UID_{user_id})刷新登录失败, code: ' + str(body['error_code']) + f'\n响应体: {body}') return else: - logger.info('刷新登录成功') + logger.info(f'酷狗音乐账号(UID_{user_id})刷新登录成功') config.write_config('module.kg.user.userid', str(body['data']['userid'])) - logger.info(f'已通过相应数据更新userid') config.write_config('module.kg.user.token', body['data']['token']) - logger.info('已通过相应数据更新kg_token') + logger.info(f'为酷狗音乐账号(UID_{user_id})数据更新完毕') + return if (not variable.use_cookie_pool): kgconfig = config.read_config('module.kg') @@ -112,13 +116,94 @@ if (config.read_config('module.kg.user.refresh_token.enable') and not variable.u config.read_config('module.kg.user.refresh_token.interval')) async def refresh_login_for_pool(user_info): - # TODO - pass + user_id = user_info["userid"] + token = user_info["token"] + if (config.read_config('module.kg.client.appid') == '1005'): + ts = int(time.time() * 1000) + p3 = aes_sign(json.dumps({'clienttime': ts // 1000, 'token': token})) + data = { + 'p3': p3, + 'clienttime_ms': ts, + 't1': 0, + 't2': 0, + 'userid': user_id + } + params = { + 'dfid': '-', + 'appid': tools.appid, + 'mid': tools.mid, + 'clientver': tools.clientver, + 'clienttime': ts // 1000 + } + headers = { + 'User-Agent': 'Android712-AndroidPhone-8983-18-0-NetMusic-wifi', + 'KG-THash': '3e5ec6b', + 'KG-Rec': '1', + 'KG-RC': '1', + } + login_url = config.read_config('module.kg.user.refresh_token.login_url') + req = await signRequest(login_url, params, {'method': 'POST', 'json': data, 'headers': headers}) + body = req.json() + if body['error_code'] != 0: + logger.warning(f'酷狗音乐账号(UID_{user_id})刷新登录失败, code: ' + + str(body['error_code']) + f'\n响应体: {body}') + return + else: + logger.info(f'为酷狗音乐账号(UID_{user_id})刷新登录成功') + user_list = config.read_config('module.cookiepool.kg') + user_list[user_list.index( + user_info)]['token'] = body['data']['token'] + user_list[user_list.index( + user_info)]['userid'] = str(body['data']['userid']) + config.write_config('module.cookiepool.kg', user_list) + logger.info(f'为酷狗音乐账号(UID_{user_id})数据更新完毕') + elif (config.read_config('module.kg.client.appid') == '3116'): + ts = int(time.time() * 1000) + p3 = aes_sign(json.dumps({'clienttime': ts // 1000, 'token': token}), key=b'c24f74ca2820225badc01946dba4fdf7', iv=b'adc01946dba4fdf7') + data = { + 'p3': p3, + 'clienttime_ms': ts, + 't1': 0, + 't2': 0, + 'userid': user_id + } + params = { + 'dfid': '-', + 'appid': tools.appid, + 'mid': tools.mid, + 'clientver': tools.clientver, + 'clienttime': ts // 1000 + } + headers = { + 'User-Agent': 'Android712-AndroidPhone-8983-18-0-NetMusic-wifi', + 'KG-THash': '3e5ec6b', + 'KG-Rec': '1', + 'KG-RC': '1', + } + login_url = config.read_config('module.kg.user.refresh_token.login_url') + req = await signRequest(login_url, params, {'method': 'POST', 'json': data, 'headers': headers}) + body = req.json() + if body['error_code'] != 0: + logger.warning(f'酷狗音乐账号(UID_{user_id})刷新登录失败, code: ' + + str(body['error_code']) + f'\n响应体: {body}') + return + else: + logger.info(f'为酷狗音乐账号(UID_{user_id})刷新登录成功') + user_list = config.read_config('module.cookiepool.kg') + user_list[user_list.index( + user_info)]['token'] = body['data']['token'] + user_list[user_list.index( + user_info)]['userid'] = str(body['data']['userid']) + config.write_config('module.cookiepool.kg', user_list) + logger.info(f'为酷狗音乐账号(UID_{user_id})数据更新完毕') + return def reg_refresh_login_pool_task(): - # TODO - pass + user_info_pool = config.read_config('module.cookiepool.kg') + for user_info in user_info_pool: + if (user_info['refresh_login'].get('enable')): + scheduler.append( + f'kgmusic_refresh_login_pooled_{user_info["userid"]}', refresh_login_for_pool, user_info['refresh_login']['interval'], args = {'user_info': user_info}) if (variable.use_cookie_pool): - # TODO - pass + reg_refresh_login_pool_task()