| from typing import List, Optional | |
| from pydantic import BaseModel, HttpUrl | |
| from pydantic import validator | |
| class LinkInfo(BaseModel): | |
| file_name: str | |
| link: HttpUrl | |
| class Constants(BaseModel): | |
| task: Optional[str] | |
| chunk: Optional[int] | |
| duration: Optional[int] | |
| height: Optional[int] | |
| width: Optional[int] | |
| text: Optional[dict] | |
| frames: Optional[dict] | |
| instructions: Optional[bool] = False | |
| class Assets(BaseModel): | |
| type: str | |
| sequence: List[dict] | |
| def valid_type(cls, v): | |
| if v not in ["video", "audio", "text", "image", "sfx", "background"]: | |
| raise ValueError("Invalid asset type") | |
| return v | |
| class EditorRequest(BaseModel): | |
| links: Optional[List[LinkInfo]] # List of LinkInfo objects | |
| assets: List[Assets] | |
| constants: Optional[Constants] | |
| class TaskInfo(BaseModel): | |
| task_id: str | |
| progress: int | |
| completed_tasks: List[str] | |