zhenxun_bot/zhenxun/plugins/web_ui/public/__init__.py
2024-08-23 18:41:35 +08:00

35 lines
973 B
Python

from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from fastapi import APIRouter, FastAPI
from zhenxun.services.log import logger
from .config import PUBLIC_PATH
from .data_source import update_webui_assets
router = APIRouter()
@router.get("/")
async def index():
return FileResponse(PUBLIC_PATH / "index.html")
@router.get("/favicon.ico")
async def favicon():
return FileResponse(PUBLIC_PATH / "favicon.ico")
async def init_public(app: FastAPI):
try:
if not PUBLIC_PATH.exists():
await update_webui_assets()
app.include_router(router)
for pathname in ["css", "js", "fonts", "img"]:
app.mount(
f"/{pathname}",
StaticFiles(directory=PUBLIC_PATH / pathname, check_dir=True),
name=f"public_{pathname}",
)
except Exception as e:
logger.error(f"初始化 web ui assets 失败 e: {e}", "Web UI assets")