Archived
update: 将代码中的单引号更换为双引号
This commit is contained in:
8 files changed
+67
-67
No files matched your search
@@ -11,5 +11,5 @@ from src import create_app
|
|||||||
|
|
||||||
app = create_app()
|
app = create_app()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == "__main__":
|
||||||
uvicorn.run(app, host='0.0.0.0')
|
uvicorn.run(app, host="0.0.0.0")
|
||||||
+1
-1
@@ -5,4 +5,4 @@ aiofiles
|
|||||||
requests~=2.28.1
|
requests~=2.28.1
|
||||||
PyMySQL
|
PyMySQL
|
||||||
cryptography
|
cryptography
|
||||||
deta
|
deta[async]==1.1.0a2
|
||||||
+1
-1
@@ -18,5 +18,5 @@ def create_app():
|
|||||||
"""
|
"""
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
app.include_router(main)
|
app.include_router(main)
|
||||||
app.include_router(api, prefix='/api')
|
app.include_router(api, prefix="/api")
|
||||||
return app
|
return app
|
||||||
+28
-28
@@ -15,62 +15,62 @@ from fastapi.responses import JSONResponse
|
|||||||
|
|
||||||
|
|
||||||
async def _time():
|
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):
|
async def query(name: str):
|
||||||
data = await Database().query(name)
|
data = await Database().query(name)
|
||||||
name = data[0]
|
name = data[0]
|
||||||
times = data[1]
|
times = data[1]
|
||||||
response = {
|
response = {
|
||||||
'code': 200,
|
"code": 200,
|
||||||
'time': await _time(),
|
"time": await _time(),
|
||||||
'data': {
|
"data": {
|
||||||
'name': name,
|
"name": name,
|
||||||
'times': times
|
"times": times
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
@api.get('/query/alldata')
|
@api.get("/query/alldata")
|
||||||
async def query_all(limit: int = 30):
|
async def query_all(limit: int = 30):
|
||||||
result = await Database().query_all()
|
result = await Database().query_all()
|
||||||
data = result[:limit]
|
|
||||||
response = {
|
response = {
|
||||||
'code': 200,
|
"code": 200,
|
||||||
'time': await _time(),
|
"time": await _time(),
|
||||||
'data': []
|
"data": []
|
||||||
}
|
}
|
||||||
|
data = result[:limit]
|
||||||
for i in data:
|
for i in data:
|
||||||
response['data'].append({
|
response["data"].append({
|
||||||
'name': i[0],
|
"name": i[0],
|
||||||
'times': i[1]
|
"times": i[1]
|
||||||
})
|
})
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
@api.get('/export')
|
@api.get("/export")
|
||||||
async def export():
|
async def export():
|
||||||
if os.path.exists('/tmp/data.sqlite'):
|
if os.path.exists("/tmp/data.sqlite"):
|
||||||
return FileResponse('/tmp/data.sqlite')
|
return FileResponse("/tmp/data.sqlite")
|
||||||
return FileResponse('./src/db/data.sqlite')
|
return FileResponse("./src/db/data.sqlite")
|
||||||
|
|
||||||
|
|
||||||
@api.get('/query/theme/{name}')
|
@api.get("/query/theme/{name}")
|
||||||
async def query_theme(name: str):
|
async def query_theme(name: str):
|
||||||
data = await Database().query_image(name)
|
data = await Database().query_image(name)
|
||||||
response = {
|
response = {
|
||||||
'code': 200,
|
"code": 200,
|
||||||
'time': await _time(),
|
"time": await _time(),
|
||||||
'data': []
|
"data": []
|
||||||
}
|
}
|
||||||
for i in data:
|
for i in data:
|
||||||
response['data'].append({
|
response["data"].append({
|
||||||
'index': i[0],
|
"index": i[0],
|
||||||
'image': i[1],
|
"image": i[1],
|
||||||
'width': i[2],
|
"width": i[2],
|
||||||
'height': i[3]
|
"height": i[3]
|
||||||
})
|
})
|
||||||
return JSONResponse(response)
|
return JSONResponse(response)
|
||||||
+1
-1
@@ -14,6 +14,6 @@ class Config:
|
|||||||
mysql -> user:pwd@host:port/db
|
mysql -> user:pwd@host:port/db
|
||||||
deta -> deta
|
deta -> deta
|
||||||
"""
|
"""
|
||||||
database = os.getenv('COUNTER_DB') or "sqlite3" # 数据库类型
|
database = os.getenv("COUNTER_DB") or "sqlite3" # 数据库类型
|
||||||
if os.getenv("PJ_DETA") is not None:
|
if os.getenv("PJ_DETA") is not None:
|
||||||
database = "deta" # 自动设置为deta
|
database = "deta" # 自动设置为deta
|
||||||
+8
-8
@@ -14,19 +14,19 @@ database = Config.database # operator
|
|||||||
|
|
||||||
|
|
||||||
def download_file(path: str):
|
def download_file(path: str):
|
||||||
print('Downloading database file. Please wait...')
|
print("Downloading database file. Please wait...")
|
||||||
file_url = 'https://static.rtast.cn/data.sqlite'
|
file_url = "https://static.rtast.cn/data.sqlite"
|
||||||
urlretrieve(file_url, path) # standard lib for downloading file
|
urlretrieve(file_url, path) # standard lib for downloading file
|
||||||
print('Download database file successfully.')
|
print("Download database file successfully.")
|
||||||
|
|
||||||
|
|
||||||
if database == 'sqlite3':
|
if database == "sqlite3":
|
||||||
if not os.path.exists('./src/db/data.sqlite'):
|
if not os.path.exists("./src/db/data.sqlite"):
|
||||||
download_file('./src/db/data.sqlite')
|
download_file("./src/db/data.sqlite")
|
||||||
|
|
||||||
if database == 'sqlite3':
|
if database == "sqlite3":
|
||||||
from src.db.db import SQLite as Database
|
from src.db.db import SQLite as Database
|
||||||
elif database == 'deta':
|
elif database == "deta":
|
||||||
from src.db.db import DetaBase as Database
|
from src.db.db import DetaBase as Database
|
||||||
else:
|
else:
|
||||||
from src.db.db import MySQL as Database
|
from src.db.db import MySQL as Database
|
||||||
|
|||||||
+14
-14
@@ -13,28 +13,28 @@ from fastapi.responses import RedirectResponse
|
|||||||
from fastapi.responses import FileResponse
|
from fastapi.responses import FileResponse
|
||||||
from fastapi.templating import Jinja2Templates
|
from fastapi.templating import Jinja2Templates
|
||||||
|
|
||||||
template = Jinja2Templates('./src/templates')
|
template = Jinja2Templates("./src/templates")
|
||||||
|
|
||||||
|
|
||||||
@main.get('/favicon.ico')
|
@main.get("/favicon.ico")
|
||||||
async def favicon():
|
async def favicon():
|
||||||
return FileResponse('./src/static/favicon.ico')
|
return FileResponse("./src/static/favicon.ico")
|
||||||
|
|
||||||
|
|
||||||
@main.get('/')
|
@main.get("/")
|
||||||
async def redirect_index():
|
async def redirect_index():
|
||||||
return RedirectResponse('/_redirect')
|
return RedirectResponse("/_redirect")
|
||||||
|
|
||||||
|
|
||||||
@main.get('/{name}')
|
@main.get("/{name}")
|
||||||
async def index(req: Request, name: str, length: int = 7, theme: str = 'lewd'):
|
async def index(req: Request, name: str, length: int = 7, theme: str = "lewd"):
|
||||||
if length > 10:
|
if length > 10:
|
||||||
return {'code': -200, 'msg': 'Length Error'}
|
return {"code": -200, "msg": "Length Error"}
|
||||||
response = await resp(name, length, theme)
|
response = await resp(name, length, theme)
|
||||||
|
|
||||||
return template.TemplateResponse('index.html',
|
return template.TemplateResponse("index.html",
|
||||||
context={'request': req,
|
context={"request": req,
|
||||||
'context': response['context'],
|
"context": response["context"],
|
||||||
'g_width': response['g_width'],
|
"g_width": response["g_width"],
|
||||||
'g_height': response['g_height']},
|
"g_height": response["g_height"]},
|
||||||
headers=response['headers'])
|
headers=response["headers"])
|
||||||
+12
-12
@@ -9,7 +9,7 @@
|
|||||||
from src.db import Database
|
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
|
generate dict response
|
||||||
include all information
|
include all information
|
||||||
@@ -22,27 +22,27 @@ async def resp(_id: str, length: int = 7, theme: str = 'lewd') -> dict:
|
|||||||
times = result[1]
|
times = result[1]
|
||||||
str_number = str(times) # 将整形转换为字符串
|
str_number = str(times) # 将整形转换为字符串
|
||||||
len_number = len(str_number) # 再获取字符串长度
|
len_number = len(str_number) # 再获取字符串长度
|
||||||
g_length = length * '0' # 根据输入的位数来生成0的数量
|
g_length = length * "0" # 根据输入的位数来生成0的数量
|
||||||
show_number = str(g_length[:-len_number] + str_number)
|
show_number = str(g_length[:-len_number] + str_number)
|
||||||
context = []
|
context = []
|
||||||
headers = {'cache-control': 'max-age=0, no-cache, no-store, must-revalidate',
|
headers = {"cache-control": "max-age=0, no-cache, no-store, must-revalidate",
|
||||||
'Content-Type': 'image/svg+xml; charset=utf-8'}
|
"Content-Type": "image/svg+xml; charset=utf-8"}
|
||||||
data = await Database().query_image(theme)
|
data = await Database().query_image(theme)
|
||||||
height = data[0][-1]
|
height = data[0][-1]
|
||||||
width = data[0][-2]
|
width = data[0][-2]
|
||||||
counter = 0
|
counter = 0
|
||||||
for i, n in zip(data, show_number):
|
for i, n in zip(data, show_number):
|
||||||
context.append({
|
context.append({
|
||||||
'position': i[-2] * counter,
|
"position": i[-2] * counter,
|
||||||
'width': i[-2],
|
"width": i[-2],
|
||||||
'height': i[-1],
|
"height": i[-1],
|
||||||
'base64': data[int(n)][1]
|
"base64": data[int(n)][1]
|
||||||
})
|
})
|
||||||
counter += 1
|
counter += 1
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'context': context,
|
"context": context,
|
||||||
'g_width': length * width,
|
"g_width": length * width,
|
||||||
'g_height': height,
|
"g_height": height,
|
||||||
'headers': headers
|
"headers": headers
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user