80 lines
2.4 KiB
Python
80 lines
2.4 KiB
Python
import sys
|
|
import os
|
|
import json
|
|
import logging
|
|
from urllib.parse import quote
|
|
|
|
import requests
|
|
|
|
sys.path.append(os.getcwd() + "/../")
|
|
import configParse
|
|
|
|
logger = logging.getLogger(__file__.split("/")[-1])
|
|
|
|
param = configParse.get_TgToFileSystemParameter()
|
|
|
|
background_server_url = f"{param.base.exposed_url}"
|
|
|
|
|
|
login_api_route = "/tg/api/v1/client/login"
|
|
|
|
|
|
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:
|
|
logger.warning(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")
|
|
|
|
|
|
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)
|
|
if response.status_code != 200:
|
|
logger.warning(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"))
|
|
|
|
|
|
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 = {
|
|
"token": param.web.token,
|
|
"search": keyword,
|
|
"chat_id": param.web.chat_id[0],
|
|
"index": offset,
|
|
"length": limit,
|
|
"refresh": False,
|
|
"inner": False,
|
|
"inc": is_order,
|
|
}
|
|
|
|
response = requests.post(request_url, data=json.dumps(req_body))
|
|
if response.status_code != 200:
|
|
logger.warning(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
|
|
|
|
|
|
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"]
|