chore: optimize code
This commit is contained in:
parent
6d213004ef
commit
c2858bce08
@ -248,7 +248,7 @@ class TgFileSystemClient(object):
|
|||||||
return f"client disconnected, session_name:{self.session_name}"
|
return f"client disconnected, session_name:{self.session_name}"
|
||||||
return f"client connected, session_name:{self.session_name}, username:{self.me.username}, phone:{self.me.phone}, detail:{self.me.stringify()}"
|
return f"client connected, session_name:{self.session_name}, username:{self.me.username}, phone:{self.me.phone}, detail:{self.me.stringify()}"
|
||||||
|
|
||||||
def _call_before_check(func):
|
def _check_before_call(func):
|
||||||
def call_check_wrapper(self, *args, **kwargs):
|
def call_check_wrapper(self, *args, **kwargs):
|
||||||
if not self.is_valid():
|
if not self.is_valid():
|
||||||
raise RuntimeError("Client does not run.")
|
raise RuntimeError("Client does not run.")
|
||||||
@ -256,7 +256,7 @@ class TgFileSystemClient(object):
|
|||||||
return result
|
return result
|
||||||
return call_check_wrapper
|
return call_check_wrapper
|
||||||
|
|
||||||
def _acall_before_check(func):
|
def _acheck_before_call(func):
|
||||||
async def call_check_wrapper(self, *args, **kwargs):
|
async def call_check_wrapper(self, *args, **kwargs):
|
||||||
if not self.is_valid():
|
if not self.is_valid():
|
||||||
raise RuntimeError("Client does not run.")
|
raise RuntimeError("Client does not run.")
|
||||||
@ -264,18 +264,18 @@ class TgFileSystemClient(object):
|
|||||||
return result
|
return result
|
||||||
return call_check_wrapper
|
return call_check_wrapper
|
||||||
|
|
||||||
@_call_before_check
|
@_check_before_call
|
||||||
def to_dict(self) -> dict:
|
def to_dict(self) -> dict:
|
||||||
return self.me.to_dict()
|
return self.me.to_dict()
|
||||||
|
|
||||||
@_call_before_check
|
@_check_before_call
|
||||||
def to_json(self) -> str:
|
def to_json(self) -> str:
|
||||||
return self.me.to_json()
|
return self.me.to_json()
|
||||||
|
|
||||||
def is_valid(self) -> bool:
|
def is_valid(self) -> bool:
|
||||||
return self.client.is_connected() and self.me is not None
|
return self.client.is_connected() and self.me is not None
|
||||||
|
|
||||||
@_call_before_check
|
@_check_before_call
|
||||||
def _register_update_event(self, from_users: list[int] = []) -> None:
|
def _register_update_event(self, from_users: list[int] = []) -> None:
|
||||||
@self.client.on(events.NewMessage(incoming=True, from_users=from_users))
|
@self.client.on(events.NewMessage(incoming=True, from_users=from_users))
|
||||||
async def _incoming_new_message_handler(event) -> None:
|
async def _incoming_new_message_handler(event) -> None:
|
||||||
@ -343,12 +343,12 @@ class TgFileSystemClient(object):
|
|||||||
self.db.insert_by_message(self.me, msg)
|
self.db.insert_by_message(self.me, msg)
|
||||||
|
|
||||||
|
|
||||||
@_acall_before_check
|
@_acheck_before_call
|
||||||
async def get_message(self, chat_id: int, msg_id: int) -> types.Message:
|
async def get_message(self, chat_id: int, msg_id: int) -> types.Message:
|
||||||
msg = await self.client.get_messages(chat_id, ids=msg_id)
|
msg = await self.client.get_messages(chat_id, ids=msg_id)
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
@_acall_before_check
|
@_acheck_before_call
|
||||||
async def get_dialogs(self, limit: int = 10, offset: int = 0, refresh: bool = False) -> hints.TotalList:
|
async def get_dialogs(self, limit: int = 10, offset: int = 0, refresh: bool = False) -> hints.TotalList:
|
||||||
if self.dialogs_cache is not None and refresh is False:
|
if self.dialogs_cache is not None and refresh is False:
|
||||||
return self.dialogs_cache[offset:offset+limit]
|
return self.dialogs_cache[offset:offset+limit]
|
||||||
@ -378,13 +378,13 @@ class TgFileSystemClient(object):
|
|||||||
offset = first_id + offset
|
offset = first_id + offset
|
||||||
return offset
|
return offset
|
||||||
|
|
||||||
@_acall_before_check
|
@_acheck_before_call
|
||||||
async def get_messages(self, chat_id: int, limit: int = 10, offset: int = 0) -> hints.TotalList:
|
async def get_messages(self, chat_id: int, limit: int = 10, offset: int = 0) -> hints.TotalList:
|
||||||
offset = await self._get_offset_msg_id(chat_id, offset)
|
offset = await self._get_offset_msg_id(chat_id, offset)
|
||||||
res_list = await self.client.get_messages(chat_id, limit=limit, offset_id=offset)
|
res_list = await self.client.get_messages(chat_id, limit=limit, offset_id=offset)
|
||||||
return res_list
|
return res_list
|
||||||
|
|
||||||
@_acall_before_check
|
@_acheck_before_call
|
||||||
async def get_messages_by_search(self, chat_id: int, search_word: str, limit: int = 10, offset: int = 0, inner_search: bool = False, ignore_case: bool = False) -> hints.TotalList:
|
async def get_messages_by_search(self, chat_id: int, search_word: str, limit: int = 10, offset: int = 0, inner_search: bool = False, ignore_case: bool = False) -> hints.TotalList:
|
||||||
offset = await self._get_offset_msg_id(chat_id, offset)
|
offset = await self._get_offset_msg_id(chat_id, offset)
|
||||||
if inner_search:
|
if inner_search:
|
||||||
|
@ -34,13 +34,6 @@ app.add_middleware(
|
|||||||
allow_headers=["*"],
|
allow_headers=["*"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@app.post("/tg/api/v1/file/login")
|
|
||||||
@apiutils.atimeit
|
|
||||||
async def login_new_tg_file_client():
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
|
|
||||||
class TgToFileListRequestBody(BaseModel):
|
class TgToFileListRequestBody(BaseModel):
|
||||||
token: str
|
token: str
|
||||||
search: str = ""
|
search: str = ""
|
||||||
@ -156,17 +149,55 @@ async def get_tg_file_media_stream(token: str, cid: int, mid: int, request: Requ
|
|||||||
return Response(json.dumps({"detail": f"{err=}"}), status_code=status.HTTP_404_NOT_FOUND)
|
return Response(json.dumps({"detail": f"{err=}"}), status_code=status.HTTP_404_NOT_FOUND)
|
||||||
|
|
||||||
|
|
||||||
@app.get("/tg/api/v1/file/get/{file_name}")
|
@app.get("/tg/api/v1/file/get/{chat_id}/{msg_id}/{file_name}")
|
||||||
@apiutils.atimeit
|
@apiutils.atimeit
|
||||||
async def get_tg_file_media_stream2(file_name: str, sign: str, req: Request):
|
async def get_tg_file_media(chat_id: int|str, msg_id: int, file_name: str, sign: str, req: Request):
|
||||||
|
return await get_tg_file_media_stream(sign, chat_id, msg_id, req)
|
||||||
|
|
||||||
|
|
||||||
|
@app.post("/tg/api/v1/client/login")
|
||||||
|
@apiutils.atimeit
|
||||||
|
async def login_new_tg_file_client():
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
@app.get("/tg/api/v1/file/link_convert")
|
@app.get("/tg/api/v1/client/link_convert")
|
||||||
@apiutils.atimeit
|
@apiutils.atimeit
|
||||||
async def convert_tg_msg_link_media_stream(link: str, token: str):
|
async def convert_tg_msg_link_media_stream(link: str, token: str):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
class TgToChatListRequestBody(BaseModel):
|
||||||
|
token: str
|
||||||
|
search: str = ""
|
||||||
|
index: int = 0
|
||||||
|
length: int = 0
|
||||||
|
refresh: bool = False
|
||||||
|
|
||||||
|
@app.post("/tg/api/v1/client/chat")
|
||||||
|
@apiutils.atimeit
|
||||||
|
async def get_tg_client_chat_list(body: TgToChatListRequestBody, request: Request):
|
||||||
|
try:
|
||||||
|
res = hints.TotalList()
|
||||||
|
res_type = "chat"
|
||||||
|
client = await clients_mgr.get_client_force(body.token)
|
||||||
|
res_dict = {}
|
||||||
|
|
||||||
|
res = await client.get_dialogs(limit=body.length, offset=body.index, refresh=body.refresh)
|
||||||
|
res_dict = [{"id": item.id, "is_channel": item.is_channel,
|
||||||
|
"is_group": item.is_group, "is_user": item.is_user, "name": item.name, } for item in res]
|
||||||
|
|
||||||
|
response_dict = {
|
||||||
|
"client": json.loads(client.to_json()),
|
||||||
|
"type": res_type,
|
||||||
|
"length": len(res_dict),
|
||||||
|
"list": res_dict,
|
||||||
|
}
|
||||||
|
return Response(json.dumps(response_dict), status_code=status.HTTP_200_OK)
|
||||||
|
except Exception as err:
|
||||||
|
print(f"{err=}")
|
||||||
|
return Response(json.dumps({"detail": f"{err=}"}), status_code=status.HTTP_404_NOT_FOUND)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
param = configParse.get_TgToFileSystemParameter()
|
param = configParse.get_TgToFileSystemParameter()
|
||||||
uvicorn.run(app, host="0.0.0.0", port=param.base.port)
|
uvicorn.run(app, host="0.0.0.0", port=param.base.port)
|
||||||
|
@ -106,9 +106,9 @@ def do_search_req():
|
|||||||
st.session_state.search_res_select_list[index] = container_columns[0].checkbox(
|
st.session_state.search_res_select_list[index] = container_columns[0].checkbox(
|
||||||
url, label_visibility='collapsed')
|
url, label_visibility='collapsed')
|
||||||
|
|
||||||
expender_title = f"{(msg_ctx if len(msg_ctx) < 83 else msg_ctx[:80] + '...')} — *{file_size}*"
|
expender_title = f"{(msg_ctx if len(msg_ctx) < 103 else msg_ctx[:100] + '...')} — *{file_size}*"
|
||||||
popover = container_columns[1].popover(expender_title)
|
popover = container_columns[1].popover(expender_title, use_container_width=True)
|
||||||
popover_columns = popover.columns([1, 1])
|
popover_columns = popover.columns([1, 3])
|
||||||
popover_columns[0].video(url)
|
popover_columns[0].video(url)
|
||||||
popover_columns[1].markdown(f'{msg_ctx}')
|
popover_columns[1].markdown(f'{msg_ctx}')
|
||||||
popover_columns[1].markdown(f'**{file_name}**')
|
popover_columns[1].markdown(f'**{file_name}**')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user