mirror of
https://github.com/KimigaiiWuyi/GenshinUID.git
synced 2025-05-08 21:15:52 +08:00
81 lines
2.8 KiB
Python
81 lines
2.8 KiB
Python
import time
|
|
from urllib.parse import quote
|
|
|
|
import httpx
|
|
import aiofiles
|
|
from gsuid_core.logger import logger
|
|
from urllib3 import encode_multipart_formdata
|
|
from gsuid_core.utils.error_reply import get_error_img
|
|
from gsuid_core.utils.api.mys.api import GET_GACHA_LOG_URL
|
|
from gsuid_core.utils.api.mys.request import RECOGNIZE_SERVER
|
|
|
|
from ..utils.mys_api import mys_api
|
|
from .export_and_import import export_gachalogs, import_gachalogs
|
|
|
|
|
|
async def get_gachaurl(uid: str):
|
|
server_id = RECOGNIZE_SERVER.get(str(uid)[0])
|
|
authkey_rawdata = await mys_api.get_authkey_by_cookie(uid)
|
|
if isinstance(authkey_rawdata, int):
|
|
return await get_error_img(authkey_rawdata)
|
|
authkey = authkey_rawdata['authkey']
|
|
now = time.time()
|
|
url = (
|
|
f"{GET_GACHA_LOG_URL}?"
|
|
f"authkey_ver=1&sign_type=2&auth_appid=webview_gacha&init_type=301&"
|
|
f"gacha_id=fecafa7b6560db5f3182222395d88aaa6aaac1bc"
|
|
f"×tamp={str(int(now))}"
|
|
f"&lang=zh-cn&device_type=mobile&plat_type=ios®ion={server_id}"
|
|
f"&authkey={quote(authkey,'utf-8')}"
|
|
f"&game_biz=hk4e_cn&gacha_type=301&page=1&size=5&end_id=0"
|
|
)
|
|
logger.info(url)
|
|
return url
|
|
|
|
|
|
async def get_lelaer_gachalog(uid: str):
|
|
gachalog_url = await get_gachaurl(uid)
|
|
data = {'uid': uid, 'gachaurl': gachalog_url, 'lang': 'zh-Hans'}
|
|
async with httpx.AsyncClient(
|
|
verify=False,
|
|
timeout=30,
|
|
) as client:
|
|
history_data = await client.post(
|
|
'https://www.lelaer.com/outputGacha.php', data=data
|
|
)
|
|
history_log = history_data.text
|
|
return await import_gachalogs(history_log, 'json', uid)
|
|
|
|
|
|
async def export_gachalog_to_lelaer(uid: str):
|
|
gachalog_url = await get_gachaurl(uid)
|
|
export = await export_gachalogs(uid)
|
|
if export['retcode'] == 'ok':
|
|
file_path = export['url']
|
|
else:
|
|
return '导出抽卡记录失败...'
|
|
async with aiofiles.open(file_path, 'r', encoding='utf-8') as f:
|
|
record_data = await f.read()
|
|
|
|
data = {
|
|
'upload': ('data.json', record_data, 'application/json'),
|
|
'importType': 'uigf',
|
|
"gachaurl": gachalog_url,
|
|
}
|
|
|
|
body, header = encode_multipart_formdata(data)
|
|
|
|
headers = {"Content-Type": header}
|
|
async with httpx.AsyncClient(verify=False, timeout=30) as client:
|
|
history_data = await client.post(
|
|
'https://www.lelaer.com/uigf.php',
|
|
content=body,
|
|
headers=headers,
|
|
)
|
|
status_code = history_data.status_code
|
|
history_res = history_data.text
|
|
if status_code == 200 and '导入成功' in history_res:
|
|
return '[提瓦特小助手]抽卡记录上传成功,请前往小程序查看'
|
|
else:
|
|
return '[提瓦特小助手]上传失败'
|