Files
openapi/source/main.py
T
RRRosmontis 5a43bce45d fix: 补齐 99543c9 遗漏的内容改动(该提交的 git add 因 pathspec 报错未生效)
上一个 refactor 提交只落到 main.py 的重命名,端口与路径的实际改动漏掉了,此提交补齐:
- source/main.py: PIXIV_BACKEND 9088->9007, BILIBILI_BACKEND 19990->9006, port 9888->9008
- nginx/openapi.rrrosmontis.icu.conf: 3 处 proxy_pass -> 127.0.0.1:9008
- systemd/openapi.service: WorkingDirectory/ExecStart 同步为 source/
2026-09-13 02:26:54 +08:00

56 lines
1.7 KiB
Python

from aiohttp import web, ClientSession, ClientTimeout
PIXIV_BACKEND = "http://127.0.0.1:9007"
BILIBILI_BACKEND = "http://127.0.0.1:9006"
async def handle_pixiv(request):
pid = request.query.get("id", "")
if not pid:
return web.json_response({"error": "missing id parameter"}, status=400)
target = f"{PIXIV_BACKEND}/{pid}"
return await proxy(request, target)
async def handle_bilibili(request):
qs = request.query_string
target = f"{BILIBILI_BACKEND}/bilibili/get_video"
if qs:
target += "?" + qs
return await proxy(request, target)
async def proxy(request, target):
timeout = ClientTimeout(total=300)
async with ClientSession(timeout=timeout) as session:
try:
async with session.get(target) as resp:
body = await resp.read()
headers = {}
for key in ("Content-Type", "Content-Disposition", "Cache-Control"):
if key in resp.headers:
headers[key] = resp.headers[key]
return web.Response(
body=body,
status=resp.status,
headers=headers,
)
except Exception as e:
return web.json_response(
{"error": "backend unreachable", "detail": str(e)}, status=502
)
async def handle_root(request):
raise web.HTTPFound("https://rrrosmontis.icu/articles/index.html?id=00003")
app = web.Application()
app.router.add_get("/", handle_root)
app.router.add_get("/pixiv/get_image", handle_pixiv)
app.router.add_get("/bilibili/get_video", handle_bilibili)
if __name__ == "__main__":
web.run_app(app, host="127.0.0.1", port=9008)