import os from pathlib import Path from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles from server.routes.adb import router as adb_router from server.routes.auth import router as auth_router from server.routes.catalog import router as catalog_router from server.routes.covers import router as covers_router from server.routes.device import router as device_router from server.routes.downloads import router as downloads_router from server.routes.live import router as live_router from server.routes.play import router as play_router from server.routes.proxy import router as proxy_router from server.routes.session import router as session_router from server.services.downloads import downloads def create_app() -> FastAPI: app = FastAPI(title="RaptDrama") app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"], ) app.include_router(auth_router) app.include_router(session_router) app.include_router(adb_router) app.include_router(device_router) app.include_router(catalog_router) app.include_router(covers_router) app.include_router(downloads_router) app.include_router(play_router) app.include_router(live_router) app.include_router(proxy_router) @app.on_event("startup") def start_downloads() -> None: downloads.start() @app.get("/health") def health(): return {"ok": True} static_dir = os.environ.get("RAPTD_STATIC", "").strip() if static_dir and Path(static_dir).is_dir(): app.mount("/", StaticFiles(directory=static_dir, html=True), name="ui") return app app = create_app()