"""Endpoint to retrieve stream information for an uploaded file.""" from fastapi import APIRouter, HTTPException from backend.config import settings from backend.services.file_manager import FileManager from backend.services.task_manager import task_manager from backend.ffmpeg import get_stream_info router = APIRouter(prefix="/api", tags=["info"]) @router.get("/info/{task_id}") async def get_task_info(task_id: str): """ Return stream information (has_audio, has_video, has_subtitle) for the uploaded file. """ if not task_manager.has_task(task_id): raise HTTPException(status_code=404, detail=f"Task {task_id} not found") input_path = FileManager.get_input_path(task_id) if not input_path or not input_path.exists(): raise HTTPException(status_code=404, detail="Input file not found") try: info = get_stream_info(str(input_path)) return { "task_id": task_id, "has_audio": info["has_audio"], "has_video": info["has_video"], "has_subtitle": info["has_subtitle"], "audio_codec": info["audio_codec"], } except Exception as e: raise HTTPException(status_code=500, detail=f"Failed to retrieve stream info: {str(e)}")