36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
"""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)}")
|