|
from fastapi import APIRouter, HTTPException, status |
|
from .Schema import EditorRequest, TaskInfo |
|
from App.Worker import celery_task |
|
from celery.result import AsyncResult |
|
|
|
videditor_router = APIRouter(tags=["vidEditor"]) |
|
|
|
|
|
@videditor_router.post("/create-video") |
|
async def create_video(videoRequest: EditorRequest): |
|
result = celery_task.delay(**videoRequest.dict()) |
|
return {"task_id": result.task_id} |
|
|
|
|
|
@videditor_router.get("/progress/{task_id}", response_model=TaskInfo) |
|
async def progress(task_id: str): |
|
task_result = AsyncResult( |
|
task_id, |
|
) |
|
if not task_result.ready(): |
|
progress = task_result.info.get("progress", 0) |
|
completed_tasks = task_result.info.get("completed_tasks", []) |
|
return { |
|
"task_id": task_id, |
|
"progress": progress, |
|
"completed_tasks": completed_tasks, |
|
} |
|
else: |
|
raise HTTPException( |
|
status_code=status.HTTP_404_NOT_FOUND, |
|
detail="Task not found", |
|
) |
|
|