diff --git a/StarRailUID/utils/mys_api.py b/StarRailUID/utils/mys_api.py index 7da475c..4a80329 100644 --- a/StarRailUID/utils/mys_api.py +++ b/StarRailUID/utils/mys_api.py @@ -2,9 +2,10 @@ import copy import time import random from string import digits, ascii_letters -from typing import Any, Dict, Union, Optional, cast +from typing import Any, Dict, Union, Literal, Optional, cast from gsuid_core.utils.api.mys_api import _MysApi +from gsuid_core.utils.database.models import GsUser from gsuid_core.utils.api.mys.models import MysSign, SignInfo, SignList from gsuid_core.utils.api.mys.tools import ( _random_int_ds, @@ -50,6 +51,33 @@ class MysApi(_MysApi): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + async def get_ck( + self, uid: str, mode: Literal['OWNER', 'RANDOM'] = 'RANDOM' + ) -> Optional[str]: + if mode == 'RANDOM': + return await GsUser.get_random_cookie(uid, game_name='sr') + else: + return await GsUser.get_user_cookie_by_uid(uid, game_name='sr') + + async def get_stoken(self, uid: str) -> Optional[str]: + return await GsUser.get_user_stoken_by_uid(uid, 'sr') + + async def get_user_fp(self, uid: str) -> Optional[str]: + data = await GsUser.get_user_attr_by_uid(uid, 'fp', 'sr') + if data is None: + data = await self.generate_fp_by_uid(uid) + await GsUser.update_data_by_uid_without_bot_id(uid, 'sr', fp=data) + return data + + async def get_user_device_id(self, uid: str) -> Optional[str]: + data = await GsUser.get_user_attr_by_uid(uid, 'device_id', 'sr') + if data is None: + data = self.get_device_id() + await GsUser.update_data_by_uid_without_bot_id( + uid, 'sr', device_id=data + ) + return data + def check_os(self, uid: str) -> bool: return False if int(str(uid)[0]) < 6 else True