"""FastAPI application entry point.""" import asyncio from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from backend.config import settings from backend.api import upload, split, split_file, status, download, websocket, formats, info from backend.services import progress_publisher app = FastAPI( title="Audio Splitter Web API", description="Web interface for splitting audio files using a tracklist", version="0.1.0", ) # CORS middleware app.add_middleware( CORSMiddleware, allow_origins=settings.allow_origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.on_event("startup") async def startup_event(): """Store the main event loop for use in other threads.""" progress_publisher.MAIN_LOOP = asyncio.get_running_loop() # Include routers app.include_router(upload.router) app.include_router(split.router) app.include_router(split_file.router) # NEW app.include_router(status.router) app.include_router(download.router) app.include_router(websocket.router) app.include_router(formats.router) app.include_router(info.router) @app.get("/") async def root(): return {"status": "ok", "service": "Audio Splitter Web API"} @app.get("/health") async def health(): return {"status": "healthy"}