This commit is contained in:
2026-04-27 01:30:29 +08:00
parent 4c48525b3a
commit ec804afc60

View File

@@ -2,6 +2,7 @@ import asyncio
import contextlib import contextlib
import html import html
import importlib.util import importlib.util
import inspect
import io import io
import json import json
import logging import logging
@@ -29,6 +30,23 @@ logger = logging.getLogger("uvicorn.error")
app = FastAPI(title="Telegram Scraper Web Console") app = FastAPI(title="Telegram Scraper Web Console")
templates = Jinja2Templates(directory=str(TEMPLATES_DIR)) templates = Jinja2Templates(directory=str(TEMPLATES_DIR))
# Starlette 较新版本TemplateResponse(request, name, context);旧版:(name, context)
_template_response_new_style: Optional[bool] = None
def template_response(request: Request, name: str, context: Dict[str, Any]):
global _template_response_new_style
if _template_response_new_style is None:
keys = list(inspect.signature(templates.TemplateResponse).parameters.keys())
if keys and keys[0] == "self":
keys = keys[1:]
_template_response_new_style = bool(keys) and keys[0] == "request"
ctx = dict(context)
ctx.setdefault("request", request)
if _template_response_new_style:
return templates.TemplateResponse(request, name, ctx)
return templates.TemplateResponse(name, ctx)
@app.on_event("startup") @app.on_event("startup")
async def _verify_runtime_files() -> None: async def _verify_runtime_files() -> None:
@@ -616,10 +634,10 @@ async def index(request: Request):
account_channels = await service.list_account_channels() account_channels = await service.list_account_channels()
except Exception as e: except Exception as e:
err = str(e) err = str(e)
return templates.TemplateResponse( return template_response(
request,
"index.html", "index.html",
{ {
"request": request,
"fields": fields, "fields": fields,
"binary_env_keys": list(BINARY_ENV_KEYS), "binary_env_keys": list(BINARY_ENV_KEYS),
"monitored": monitored, "monitored": monitored,