fix: format and optimize

This commit is contained in:
hehesheng 2024-06-10 09:21:08 +08:00
parent c559ece279
commit 459cd8f698
3 changed files with 37 additions and 25 deletions

View File

@ -1,7 +1,6 @@
import sys
import os
import json
import logging
import traceback
from urllib.parse import quote
@ -22,7 +21,7 @@ def login_client_by_qr_code_url() -> str:
request_url = background_server_url + login_api_route
response = requests.get(request_url)
if response.status_code != 200:
logging.warning(f"Could not login, err:{response.status_code}, {response.content.decode('utf-8')}")
print(f"Could not login, err:{response.status_code}, {response.content.decode('utf-8')}")
return None
url_info = json.loads(response.content.decode("utf-8"))
return url_info.get("url")
@ -35,7 +34,7 @@ def get_backend_client_status(flag: bool = False) -> dict[str, any]:
request_url = f"{background_server_url}{status_api_route}?flag={flag}"
response = requests.get(request_url)
if response.status_code != 200:
logging.warning(f"get_status, backend is running? err:{response.status_code}, {response.content.decode('utf-8')}")
print(f"get_status, backend is running? err:{response.status_code}, {response.content.decode('utf-8')}")
return None
return json.loads(response.content.decode("utf-8"))
@ -45,7 +44,7 @@ def get_white_list_chat_dict() -> dict[str, any]:
try:
return backend_status["clist"]
except Exception as err:
logging.warning(f"{err=},{traceback.format_exc()}")
print(f"{err=},{traceback.format_exc()}")
return {}
@ -67,7 +66,7 @@ def search_database_by_keyword(keyword: str, chat_list: list[int], offset: int,
response = requests.post(request_url, data=json.dumps(req_body))
if response.status_code != 200:
logging.warning(f"search_database_by_keyword err:{response.status_code}, {response.content.decode('utf-8')}")
print(f"search_database_by_keyword err:{response.status_code}, {response.content.decode('utf-8')}")
return None
search_res = json.loads(response.content.decode("utf-8"))
return search_res
@ -81,7 +80,7 @@ def convert_tg_link_to_proxy_link(link: str) -> str:
request_url = background_server_url + link_convert_api_route + f"?link={link}"
response = requests.get(request_url)
if response.status_code != 200:
logging.warning(f"link convert fail: {response.status_code}, {response.content.decode('utf-8')}")
print(f"link convert fail: {response.status_code}, {response.content.decode('utf-8')}")
return ""
response_js = json.loads(response.content.decode("utf-8"))
return response_js["url"]

View File

@ -1,6 +1,5 @@
import sys
import os
import logging
import traceback
import streamlit as st
@ -26,13 +25,13 @@ def loop():
st.query_params.search_res_limit = "10"
@st.experimental_fragment
def search_container():
def search_container(keyword, res_limit, isorder):
if "chat_dict" not in st.session_state:
wait_client_ready = st.empty()
wait_client_ready.status("Server Initializing")
st.session_state.chat_dict = api.get_white_list_chat_dict()
wait_client_ready.empty()
st.query_params.search_key = st.text_input("**搜索🔎**", value=st.query_params.search_key)
st.query_params.search_key = st.text_input("**搜索🔎**", value=keyword)
chat_list = []
for _, chat_info in st.session_state.chat_dict.items():
chat_list.append(chat_info["title"])
@ -40,17 +39,20 @@ def loop():
columns = st.columns([4, 4, 1])
with columns[0]:
st.query_params.search_res_limit = str(
st.number_input(
"**每页结果**", min_value=1, max_value=100, value=int(st.query_params.search_res_limit), format="%d"
)
st.number_input("**每页结果**", min_value=1, max_value=100, value=res_limit, format="%d")
)
with columns[1]:
st.session_state.chat_select_list = st.multiselect("**Search in**", chat_list, default=chat_list)
with columns[2]:
st.text("排序")
st.query_params.is_order = st.toggle("顺序", value=utils.strtobool(st.query_params.is_order))
st.query_params.is_order = st.toggle("顺序", value=isorder)
search_container()
search_limit_container = st.container()
with search_limit_container:
keyword = st.query_params.search_key
res_limit = int(st.query_params.search_res_limit)
isorder = utils.strtobool(st.query_params.is_order)
search_container(keyword, res_limit, isorder)
search_clicked = st.button("Search", type="primary", use_container_width=True)
if not st.session_state.force_skip and (
@ -77,7 +79,7 @@ def loop():
if chat_info["title"] in st.session_state.chat_select_list:
search_chat_id_list.append(int(chat_id))
except Exception as err:
logging.warning(f"{err=},{traceback.format_exc()}")
print(f"{err=},{traceback.format_exc()}")
search_res = api.search_database_by_keyword(
st.query_params.search_key, search_chat_id_list, offset_index, search_limit, is_order
)
@ -165,8 +167,8 @@ def loop():
download_url = v["download_url"]
download_url += f"?sign={sign_token}"
except Exception as err:
msg_ctx = f"{err=}\r\n\r\n" + msg_ctx
logging.warning(f"{err=},{traceback.format_exc()}")
msg_ctx = f"Not a filelike~\r\n\r\n" + msg_ctx
print(f"Not a filelike {err=},{traceback.format_exc()}")
url_list.append(download_url)
media_file_res_container(i, msg_ctx, file_name, file_size, download_url, src_link, mime_type)
page_switch_render()

View File

@ -10,13 +10,15 @@ from uvicorn.config import LOGGING_CONFIG
import configParse
from backend import backendapp
if not os.path.exists(os.path.dirname(__file__) + '/logs'):
os.mkdir(os.path.dirname(__file__) + '/logs')
with open('logging_config.yaml', 'r') as f:
if not os.path.exists(os.path.dirname(__file__) + "/logs"):
os.mkdir(os.path.dirname(__file__) + "/logs")
with open("logging_config.yaml", "r") as f:
logging.config.dictConfig(yaml.safe_load(f.read()))
LOGGING_CONFIG["formatters"]["default"]["fmt"] = "[%(levelname)s] %(asctime)s [uvicorn.default]:%(message)s"
LOGGING_CONFIG["formatters"]["access"]["fmt"] = '[%(levelname)s] %(asctime)s [uvicorn.access]:%(client_addr)s - "%(request_line)s" %(status_code)s'
LOGGING_CONFIG["formatters"]["access"][
"fmt"
] = '[%(levelname)s] %(asctime)s [uvicorn.access]:%(client_addr)s - "%(request_line)s" %(status_code)s'
LOGGING_CONFIG["handlers"]["timed_rotating_api_file"] = {
"class": "logging.handlers.TimedRotatingFileHandler",
"filename": "logs/app.log",
@ -32,23 +34,32 @@ LOGGING_CONFIG["loggers"]["uvicorn.access"]["handlers"].append("timed_rotating_a
logger = logging.getLogger(__file__.split("/")[-1])
for handle in logger.handlers:
if isinstance(handle, logging.handlers.TimedRotatingFileHandler):
handle.suffix = "%Y-%m-%d.log"
if __name__ == "__main__":
param = configParse.get_TgToFileSystemParameter()
async def run_web_server():
cmd = f"streamlit run {os.getcwd()}/frontend/home.py --server.port {param.web.port}"
proc = await asyncio.create_subprocess_shell(cmd, cwd=f"{os.path.dirname(__file__)}/frontend", stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE)
async def loop_get_cli_pipe(p, suffix = ""):
proc = await asyncio.create_subprocess_shell(
cmd, cwd=f"{os.path.dirname(__file__)}/frontend", stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE
)
async def loop_get_cli_pipe(p, suffix=""):
while True:
stdp = await p.readline()
if stdp:
logger.info(f"[web:{suffix}]{stdp.decode()[:-1]}")
else:
break
stdout_task = asyncio.create_task(loop_get_cli_pipe(proc.stdout, "out"))
stderr_task = asyncio.create_task(loop_get_cli_pipe(proc.stderr, "err"))
await asyncio.gather(*[stdout_task, stderr_task])
logger.info(f'[{cmd!r} exited with {proc.returncode}]')
logger.info(f"[{cmd!r} exited with {proc.returncode}]")
if param.web.enable:
ret = os.fork()
if ret == 0: