fix: fix bugs

This commit is contained in:
hehesheng 2024-06-02 18:57:12 +08:00
parent 361bfdb470
commit 6b7067a8d0
5 changed files with 150 additions and 146 deletions

View File

@ -167,7 +167,9 @@ class MediaChunkHolderManager(object):
def __init__(self) -> None: def __init__(self) -> None:
self.chunk_lru = collections.OrderedDict() self.chunk_lru = collections.OrderedDict()
self.disk_chunk_cache = diskcache.Cache(f"{os.path.dirname(__file__)}/cache_media") self.disk_chunk_cache = diskcache.Cache(
f"{os.path.dirname(__file__)}/cache_media", size_limit=MediaChunkHolderManager.MAX_CACHE_SIZE
)
self._restore_cache() self._restore_cache()
def _restore_cache(self) -> None: def _restore_cache(self) -> None:
@ -178,6 +180,8 @@ class MediaChunkHolderManager(object):
self._set_media_chunk_index(holder.info) self._set_media_chunk_index(holder.info)
except Exception as err: except Exception as err:
logger.warning(f"restore, {err=},{traceback.format_exc()}") logger.warning(f"restore, {err=},{traceback.format_exc()}")
while self.current_cache_size > self.MAX_CACHE_SIZE:
self._remove_pop_chunk()
def get_chunk_holder_by_info(self, info: ChunkInfo) -> MediaChunkHolder: def get_chunk_holder_by_info(self, info: ChunkInfo) -> MediaChunkHolder:
holder = self.incompleted_chunk.get(info.id) holder = self.incompleted_chunk.get(info.id)

View File

@ -42,7 +42,7 @@ class TgFileSystemClient(object):
# task should: (task_id, callabledFunc) # task should: (task_id, callabledFunc)
task_queue: asyncio.Queue task_queue: asyncio.Queue
task_id: int = 0 task_id: int = 0
me: Union[types.User, types.InputPeerUser] me: Union[types.User, types.InputPeerUser] = None
# client config # client config
client_param: configParse.TgToFileSystemParameter.ClientConfigPatameter client_param: configParse.TgToFileSystemParameter.ClientConfigPatameter

View File

@ -13,5 +13,7 @@ for v in backend_status["clients"]:
if need_login: if need_login:
import login import login
login.loop()
else: else:
import search import search
search.loop()

View File

@ -4,21 +4,21 @@ import os
import streamlit as st import streamlit as st
import qrcode import qrcode
sys.path.append(os.getcwd() + "/../")
import configParse
import utils import utils
import remote_api as api import remote_api as api
url = api.login_client_by_qr_code_url() @st.experimental_fragment
def loop():
url = api.login_client_by_qr_code_url()
if url is None or url == "": if url is None or url == "":
st.text("Something wrong, no login url got.") st.text("Something wrong, no login url got.")
st.stop() st.stop()
st.markdown("### Please scan the qr code by telegram client.") st.markdown("### Please scan the qr code by telegram client.")
qr = qrcode.make(url) qr = qrcode.make(url)
st.image(qr.get_image()) st.image(qr.get_image())
st.markdown("**Click the Refrash button if you have been scaned**") st.markdown("**Click the Refrash button if you have been scaned**")
if st.button("Refresh"): if st.button("Refresh"):
st.rerun() st.rerun()

View File

@ -3,27 +3,25 @@ import os
import streamlit as st import streamlit as st
sys.path.append(os.getcwd() + "/../")
import configParse
import utils import utils
import remote_api as api import remote_api as api
param = configParse.get_TgToFileSystemParameter() @st.experimental_fragment
def loop():
if 'page_index' not in st.session_state: if 'page_index' not in st.session_state:
st.session_state.page_index = 1 st.session_state.page_index = 1
if 'force_skip' not in st.session_state: if 'force_skip' not in st.session_state:
st.session_state.force_skip = False st.session_state.force_skip = False
if 'search_key' not in st.query_params: if 'search_key' not in st.query_params:
st.query_params.search_key = "" st.query_params.search_key = ""
if 'is_order' not in st.query_params: if 'is_order' not in st.query_params:
st.query_params.is_order = False st.query_params.is_order = False
if 'search_res_limit' not in st.query_params: if 'search_res_limit' not in st.query_params:
st.query_params.search_res_limit = "10" st.query_params.search_res_limit = "10"
@st.experimental_fragment @st.experimental_fragment
def search_container(): def search_container():
st.query_params.search_key = st.text_input("**搜索🔎**", value=st.query_params.search_key) st.query_params.search_key = st.text_input("**搜索🔎**", value=st.query_params.search_key)
columns = st.columns([7, 1]) columns = st.columns([7, 1])
with columns[0]: with columns[0]:
@ -33,19 +31,19 @@ def search_container():
st.text("排序") 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=utils.strtobool(st.query_params.is_order))
search_container() search_container()
search_clicked = st.button('Search', type='primary', use_container_width=True) search_clicked = st.button('Search', type='primary', use_container_width=True)
if not st.session_state.force_skip and (not search_clicked or st.query_params.search_key == "" or st.query_params.search_key is None): if not st.session_state.force_skip and (not search_clicked or st.query_params.search_key == "" or st.query_params.search_key is None):
st.stop() st.stop()
if not st.session_state.force_skip: if not st.session_state.force_skip:
st.session_state.page_index = 1 st.session_state.page_index = 1
if st.session_state.force_skip: if st.session_state.force_skip:
st.session_state.force_skip = False st.session_state.force_skip = False
@st.experimental_fragment @st.experimental_fragment
def do_search_req(): def do_search_req():
search_limit = int(st.query_params.search_res_limit) search_limit = int(st.query_params.search_res_limit)
offset_index = (st.session_state.page_index - 1) * search_limit offset_index = (st.session_state.page_index - 1) * search_limit
is_order = utils.strtobool(st.query_params.is_order) is_order = utils.strtobool(st.query_params.is_order)
@ -148,4 +146,4 @@ def do_search_req():
show_search_res(search_res) show_search_res(search_res)
do_search_req() do_search_req()