mirror of
https://github.com/KimigaiiWuyi/GenshinUID.git
synced 2025-05-31 04:30:29 +08:00
256 lines
8.1 KiB
Python
256 lines
8.1 KiB
Python
from typing import List, Union, Optional
|
|
|
|
from .database.ConfigDAL import ConfigDAL
|
|
from .database.CookiesDAL import CookiesDAL
|
|
from .database.UidDataDAL import UidDataDAL
|
|
from .database.PushDataDAL import PushDataDAL
|
|
from .database.db_config import async_session
|
|
|
|
|
|
async def get_push_status(uid, func) -> List:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
PushData = PushDataDAL(session)
|
|
push_dict = await PushData.get_user_data(uid)
|
|
if push_dict:
|
|
if f'{func}Push' in push_dict:
|
|
return [
|
|
push_dict[f'{func}Push'],
|
|
push_dict[f'{func}Value'],
|
|
]
|
|
return []
|
|
|
|
|
|
async def update_push_status(uid: int, func: str, status: str) -> bool:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
PushData = PushDataDAL(session)
|
|
return await PushData.update_user_data(
|
|
uid, {f'{func}Push': status}
|
|
)
|
|
|
|
|
|
async def update_push_value(uid: int, func: str, value: int) -> bool:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
PushData = PushDataDAL(session)
|
|
return await PushData.update_user_data(
|
|
uid, {f'{func}Value': value}
|
|
)
|
|
|
|
|
|
async def update_is_pushed(
|
|
uid: int, func: str, is_pushed: str = 'off'
|
|
) -> bool:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
PushData = PushDataDAL(session)
|
|
return await PushData.update_user_data(
|
|
uid, {f'{func}IsPush': is_pushed}
|
|
)
|
|
|
|
|
|
async def bind_db(userid, uid=None, mys=None):
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
UidData = UidDataDAL(session)
|
|
im = await UidData.bind_db(userid, {'UID': uid, 'MYSID': mys})
|
|
return im
|
|
|
|
|
|
async def get_all_uid() -> List:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
UidData = UidDataDAL(session)
|
|
lst = await UidData.get_all_uid_list()
|
|
return lst
|
|
|
|
|
|
async def get_all_cookie() -> List:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
Cookies = CookiesDAL(session)
|
|
lst = await Cookies.get_all_cookie_list()
|
|
return lst
|
|
|
|
|
|
async def get_all_stoken() -> List:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
Cookies = CookiesDAL(session)
|
|
lst = await Cookies.get_all_stoken_list()
|
|
return lst
|
|
|
|
|
|
async def select_db(userid, mode='auto') -> Union[List, str, None]:
|
|
"""
|
|
:说明:
|
|
选择绑定uid/mys库
|
|
:参数:
|
|
* userid (str): QQ号。
|
|
* mode (str): 模式如下
|
|
* auto(默认): 自动选择(优先mys)
|
|
* uid: 选择uid库
|
|
* mys: 选择mys库
|
|
* list: 返回uid列表
|
|
:返回:
|
|
* data (list): 返回获取值
|
|
mode为list时返回uid列表
|
|
其他情况下data[0]为需要的uid/mysid
|
|
data[1]表示data[0]是`uid` or `mysid`
|
|
"""
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
UidData = UidDataDAL(session)
|
|
if mode == 'auto':
|
|
im = await UidData.get_anyid(userid)
|
|
elif mode == 'uid':
|
|
im = await UidData.get_uid(userid)
|
|
elif mode == 'mys':
|
|
im = await UidData.get_mysid(userid)
|
|
elif mode == 'list':
|
|
im = await UidData.get_uid_list(userid)
|
|
else:
|
|
return None
|
|
return im
|
|
|
|
|
|
async def switch_db(userid: int, uid: Optional[str] = None) -> str:
|
|
"""
|
|
:说明:
|
|
切换绑定的UID列表,绑定一个UID的情况下返回无法切换
|
|
切换前 -> 12_13_14
|
|
切换后 -> 13_14_12
|
|
:参数:
|
|
* userid (str): QQ号。
|
|
:返回:
|
|
* im (str): 回调信息。
|
|
"""
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
UidData = UidDataDAL(session)
|
|
im = await UidData.switch_uid(userid, uid)
|
|
return im
|
|
|
|
|
|
async def delete_db(userid: int, data: dict) -> str:
|
|
"""
|
|
:说明:
|
|
删除当前绑定的UID信息
|
|
删除前 -> 12_13_14
|
|
删除后 -> 13_14
|
|
:参数:
|
|
* userid (str): QQ号。
|
|
:返回:
|
|
* im (str): 回调信息。
|
|
"""
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
UidData = UidDataDAL(session)
|
|
im = await UidData.delete_db(userid, data)
|
|
return im
|
|
|
|
|
|
async def cookies_db(uid: str, cookies: str, qid: int):
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
Cookies = CookiesDAL(session)
|
|
im = await Cookies.add_cookie_db(qid, uid, cookies)
|
|
return im
|
|
|
|
|
|
async def error_db(cookies: str, error: str):
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
Cookies = CookiesDAL(session)
|
|
im = await Cookies.add_error_db(cookies, error)
|
|
return im
|
|
|
|
|
|
async def owner_cookies(uid: str) -> str:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
Cookies = CookiesDAL(session)
|
|
owner_ck = await Cookies.get_user_ck(uid)
|
|
return str(owner_ck)
|
|
|
|
|
|
async def get_stoken(uid: str) -> str:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
Cookies = CookiesDAL(session)
|
|
stoken = await Cookies.get_user_stoken(uid)
|
|
return str(stoken)
|
|
|
|
|
|
async def get_user_bind_data(uid: str) -> dict:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
Cookies = CookiesDAL(session)
|
|
lst = await Cookies.get_user_data_dict(uid)
|
|
return lst
|
|
|
|
|
|
async def stoken_db(s_cookies: str, uid: str) -> str:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
Cookies = CookiesDAL(session)
|
|
im = await Cookies.add_stoken_db(uid, s_cookies)
|
|
return im
|
|
|
|
|
|
async def open_push(uid, qid, status, func):
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
Cookies = CookiesDAL(session)
|
|
im = await Cookies.update_user_status(
|
|
uid, {'QID': qid, func: status}
|
|
)
|
|
return im
|
|
|
|
|
|
async def config_check(func, mode='CHECK') -> bool:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
Config = ConfigDAL(session)
|
|
im = False
|
|
if mode == 'CHECK':
|
|
im = await Config.config_check(func)
|
|
elif mode == 'OPEN':
|
|
im = await Config.config_update(func, 'on')
|
|
elif mode == 'CLOSED':
|
|
im = await Config.config_update(func, 'off')
|
|
return im
|
|
|
|
|
|
async def get_all_signin_list() -> List:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
Cookies = CookiesDAL(session)
|
|
im = await Cookies.get_status_list('StatusB')
|
|
return im
|
|
|
|
|
|
async def get_all_push_list() -> List:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
Cookies = CookiesDAL(session)
|
|
im = await Cookies.get_status_list('StatusA')
|
|
return im
|
|
|
|
|
|
async def get_push_data(uid: int) -> dict:
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
PushData = PushDataDAL(session)
|
|
push_data = await PushData.get_user_data(uid)
|
|
return push_data
|
|
|
|
|
|
async def cache_db(uid):
|
|
async with async_session() as session: # type: ignore
|
|
async with session.begin():
|
|
Cookies = CookiesDAL(session)
|
|
im = await Cookies.get_random_ck(uid)
|
|
return im
|