From 681a53568522dd45b43a23be2557b20bf6569617 Mon Sep 17 00:00:00 2001 From: RTAkland Date: Fri, 30 Dec 2022 16:42:03 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E5=B0=86=E4=BB=A3=E7=A0=81=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E5=8D=95=E5=BC=95=E5=8F=B7=E6=9B=B4=E6=8D=A2=E4=B8=BA?= =?UTF-8?q?=E5=8F=8C=E5=BC=95=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 4 ++-- requirements.txt | 2 +- src/__init__.py | 2 +- src/api/view.py | 56 +++++++++++++++++++++---------------------- src/config.py | 2 +- src/db/__init__.py | 16 ++++++------- src/main/view.py | 28 +++++++++++----------- src/utils/response.py | 24 +++++++++---------- 8 files changed, 67 insertions(+), 67 deletions(-) diff --git a/main.py b/main.py index 34ecd3f..c091cad 100644 --- a/main.py +++ b/main.py @@ -11,5 +11,5 @@ from src import create_app app = create_app() -if __name__ == '__main__': - uvicorn.run(app, host='0.0.0.0') +if __name__ == "__main__": + uvicorn.run(app, host="0.0.0.0") diff --git a/requirements.txt b/requirements.txt index 624ad59..9141905 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,4 @@ aiofiles requests~=2.28.1 PyMySQL cryptography -deta \ No newline at end of file +deta[async]==1.1.0a2 \ No newline at end of file diff --git a/src/__init__.py b/src/__init__.py index c91c08f..85062e5 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -18,5 +18,5 @@ def create_app(): """ app = FastAPI() app.include_router(main) - app.include_router(api, prefix='/api') + app.include_router(api, prefix="/api") return app diff --git a/src/api/view.py b/src/api/view.py index 52f2729..3dbe5be 100644 --- a/src/api/view.py +++ b/src/api/view.py @@ -15,62 +15,62 @@ from fastapi.responses import JSONResponse async def _time(): - return time.time() + return str(time.time()).split(".")[0] -@api.get('/query/times/{name}') +@api.get("/query/times/{name}") async def query(name: str): data = await Database().query(name) name = data[0] times = data[1] response = { - 'code': 200, - 'time': await _time(), - 'data': { - 'name': name, - 'times': times + "code": 200, + "time": await _time(), + "data": { + "name": name, + "times": times } } return response -@api.get('/query/alldata') +@api.get("/query/alldata") async def query_all(limit: int = 30): result = await Database().query_all() - data = result[:limit] response = { - 'code': 200, - 'time': await _time(), - 'data': [] + "code": 200, + "time": await _time(), + "data": [] } + data = result[:limit] for i in data: - response['data'].append({ - 'name': i[0], - 'times': i[1] + response["data"].append({ + "name": i[0], + "times": i[1] }) return response -@api.get('/export') +@api.get("/export") async def export(): - if os.path.exists('/tmp/data.sqlite'): - return FileResponse('/tmp/data.sqlite') - return FileResponse('./src/db/data.sqlite') + if os.path.exists("/tmp/data.sqlite"): + return FileResponse("/tmp/data.sqlite") + return FileResponse("./src/db/data.sqlite") -@api.get('/query/theme/{name}') +@api.get("/query/theme/{name}") async def query_theme(name: str): data = await Database().query_image(name) response = { - 'code': 200, - 'time': await _time(), - 'data': [] + "code": 200, + "time": await _time(), + "data": [] } for i in data: - response['data'].append({ - 'index': i[0], - 'image': i[1], - 'width': i[2], - 'height': i[3] + response["data"].append({ + "index": i[0], + "image": i[1], + "width": i[2], + "height": i[3] }) return JSONResponse(response) diff --git a/src/config.py b/src/config.py index 79dc0ed..8c4b9de 100644 --- a/src/config.py +++ b/src/config.py @@ -14,6 +14,6 @@ class Config: mysql -> user:pwd@host:port/db deta -> deta """ - database = os.getenv('COUNTER_DB') or "sqlite3" # 数据库类型 + database = os.getenv("COUNTER_DB") or "sqlite3" # 数据库类型 if os.getenv("PJ_DETA") is not None: database = "deta" # 自动设置为deta diff --git a/src/db/__init__.py b/src/db/__init__.py index 0add4cf..c812451 100644 --- a/src/db/__init__.py +++ b/src/db/__init__.py @@ -14,19 +14,19 @@ database = Config.database # operator def download_file(path: str): - print('Downloading database file. Please wait...') - file_url = 'https://static.rtast.cn/data.sqlite' + print("Downloading database file. Please wait...") + file_url = "https://static.rtast.cn/data.sqlite" urlretrieve(file_url, path) # standard lib for downloading file - print('Download database file successfully.') + print("Download database file successfully.") -if database == 'sqlite3': - if not os.path.exists('./src/db/data.sqlite'): - download_file('./src/db/data.sqlite') +if database == "sqlite3": + if not os.path.exists("./src/db/data.sqlite"): + download_file("./src/db/data.sqlite") -if database == 'sqlite3': +if database == "sqlite3": from src.db.db import SQLite as Database -elif database == 'deta': +elif database == "deta": from src.db.db import DetaBase as Database else: from src.db.db import MySQL as Database diff --git a/src/main/view.py b/src/main/view.py index 9f68bb5..a0f0153 100644 --- a/src/main/view.py +++ b/src/main/view.py @@ -13,28 +13,28 @@ from fastapi.responses import RedirectResponse from fastapi.responses import FileResponse from fastapi.templating import Jinja2Templates -template = Jinja2Templates('./src/templates') +template = Jinja2Templates("./src/templates") -@main.get('/favicon.ico') +@main.get("/favicon.ico") async def favicon(): - return FileResponse('./src/static/favicon.ico') + return FileResponse("./src/static/favicon.ico") -@main.get('/') +@main.get("/") async def redirect_index(): - return RedirectResponse('/_redirect') + return RedirectResponse("/_redirect") -@main.get('/{name}') -async def index(req: Request, name: str, length: int = 7, theme: str = 'lewd'): +@main.get("/{name}") +async def index(req: Request, name: str, length: int = 7, theme: str = "lewd"): if length > 10: - return {'code': -200, 'msg': 'Length Error'} + return {"code": -200, "msg": "Length Error"} response = await resp(name, length, theme) - return template.TemplateResponse('index.html', - context={'request': req, - 'context': response['context'], - 'g_width': response['g_width'], - 'g_height': response['g_height']}, - headers=response['headers']) + return template.TemplateResponse("index.html", + context={"request": req, + "context": response["context"], + "g_width": response["g_width"], + "g_height": response["g_height"]}, + headers=response["headers"]) diff --git a/src/utils/response.py b/src/utils/response.py index 62d48f7..67b28fc 100644 --- a/src/utils/response.py +++ b/src/utils/response.py @@ -9,7 +9,7 @@ from src.db import Database -async def resp(_id: str, length: int = 7, theme: str = 'lewd') -> dict: +async def resp(_id: str, length: int = 7, theme: str = "lewd") -> dict: """ generate dict response include all information @@ -22,27 +22,27 @@ async def resp(_id: str, length: int = 7, theme: str = 'lewd') -> dict: times = result[1] str_number = str(times) # 将整形转换为字符串 len_number = len(str_number) # 再获取字符串长度 - g_length = length * '0' # 根据输入的位数来生成0的数量 + g_length = length * "0" # 根据输入的位数来生成0的数量 show_number = str(g_length[:-len_number] + str_number) context = [] - headers = {'cache-control': 'max-age=0, no-cache, no-store, must-revalidate', - 'Content-Type': 'image/svg+xml; charset=utf-8'} + headers = {"cache-control": "max-age=0, no-cache, no-store, must-revalidate", + "Content-Type": "image/svg+xml; charset=utf-8"} data = await Database().query_image(theme) height = data[0][-1] width = data[0][-2] counter = 0 for i, n in zip(data, show_number): context.append({ - 'position': i[-2] * counter, - 'width': i[-2], - 'height': i[-1], - 'base64': data[int(n)][1] + "position": i[-2] * counter, + "width": i[-2], + "height": i[-1], + "base64": data[int(n)][1] }) counter += 1 return { - 'context': context, - 'g_width': length * width, - 'g_height': height, - 'headers': headers + "context": context, + "g_width": length * width, + "g_height": height, + "headers": headers }