From 864781a511ff6b1820b1e3777b94f678c3b6560a Mon Sep 17 00:00:00 2001 From: Hehesheng Date: Sat, 8 Jun 2024 12:13:09 +0800 Subject: [PATCH] feat: fronted change --- frontend/home.py | 7 +++++-- frontend/link_convert.py | 12 ++++++++++++ frontend/remote_api.py | 25 +++++++++++++++++++++++-- 3 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 frontend/link_convert.py diff --git a/frontend/home.py b/frontend/home.py index 2e21f35..f31c56d 100644 --- a/frontend/home.py +++ b/frontend/home.py @@ -13,13 +13,16 @@ for v in backend_status["clients"]: if need_login: import login + login.loop() st.stop() search_tab, link_convert_tab = st.tabs(["Search", "Link Convert"]) with search_tab: import search + search.loop() with link_convert_tab: - st.header("施工中<( ̄︶ ̄)↗[GO!]") - st.markdown("# 404 Not Found") + import link_convert + + link_convert.loop() diff --git a/frontend/link_convert.py b/frontend/link_convert.py new file mode 100644 index 0000000..aa4d3b1 --- /dev/null +++ b/frontend/link_convert.py @@ -0,0 +1,12 @@ +import streamlit as st + +import remote_api as api + + +def loop(): + input_link = st.text_input("Telegram share link:", placeholder="https://t.me/c/xxx/xxx/ or https://t.me/xxx/xxx") + button_clicked = st.button("Convert", type="primary", use_container_width=True) + res = "" + if button_clicked and input_link != "": + res = api.convert_tg_link_to_proxy_link(input_link) + st.text_area("Convert res text area", value=res, label_visibility="hidden") diff --git a/frontend/remote_api.py b/frontend/remote_api.py index 89c2c97..cd55381 100644 --- a/frontend/remote_api.py +++ b/frontend/remote_api.py @@ -2,6 +2,7 @@ import sys import os import json import logging +from urllib.parse import quote import requests @@ -13,8 +14,8 @@ logger = logging.getLogger(__file__.split("/")[-1]) param = configParse.get_TgToFileSystemParameter() background_server_url = f"{param.base.exposed_url}" -search_api_route = "/tg/api/v1/file/search" -status_api_route = "/tg/api/v1/client/status" + + login_api_route = "/tg/api/v1/client/login" @@ -28,6 +29,9 @@ def login_client_by_qr_code_url() -> str: return url_info.get("url") +status_api_route = "/tg/api/v1/client/status" + + def get_backend_client_status() -> dict[str, any]: request_url = background_server_url + status_api_route response = requests.get(request_url) @@ -37,6 +41,9 @@ def get_backend_client_status() -> dict[str, any]: return json.loads(response.content.decode("utf-8")) +search_api_route = "/tg/api/v1/file/search" + + def search_database_by_keyword(keyword: str, offset: int, limit: int, is_order: bool) -> list[any] | None: request_url = background_server_url + search_api_route req_body = { @@ -56,3 +63,17 @@ def search_database_by_keyword(keyword: str, offset: int, limit: int, is_order: return None search_res = json.loads(response.content.decode("utf-8")) return search_res + + +link_convert_api_route = "/tg/api/v1/client/link_convert" + + +def convert_tg_link_to_proxy_link(link: str) -> str: + link = quote(link, safe="") + request_url = background_server_url + link_convert_api_route + f"?link={link}" + response = requests.get(request_url) + if response.status_code != 200: + logger.warning(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"]