""" Pydantic Models - GENERATED FILE Do not edit directly. Regenerate using modelgen. """ from datetime import datetime from enum import Enum from typing import Any, Dict, List, Optional from uuid import UUID from pydantic import BaseModel, Field class AssetStatus(str, Enum): PENDING = "pending" READY = "ready" ERROR = "error" class JobStatus(str, Enum): PENDING = "pending" PROCESSING = "processing" COMPLETED = "completed" FAILED = "failed" CANCELLED = "cancelled" class MediaAsset(BaseModel): """A video/audio file registered in the system.""" id: UUID filename: str file_path: str status: AssetStatus = "AssetStatus.PENDING" error_message: Optional[str] = None file_size: Optional[int] = None duration: Optional[float] = None video_codec: Optional[str] = None audio_codec: Optional[str] = None width: Optional[int] = None height: Optional[int] = None framerate: Optional[float] = None bitrate: Optional[int] = None properties: Dict[str, Any] comments: str = "" tags: List[str] = Field(default_factory=list) created_at: Optional[datetime] = None updated_at: Optional[datetime] = None class TranscodePreset(BaseModel): """A reusable transcoding configuration (like Handbrake presets).""" id: UUID name: str description: str = "" is_builtin: bool = False container: str = "mp4" video_codec: str = "libx264" video_bitrate: Optional[str] = None video_crf: Optional[int] = None video_preset: Optional[str] = None resolution: Optional[str] = None framerate: Optional[float] = None audio_codec: str = "aac" audio_bitrate: Optional[str] = None audio_channels: Optional[int] = None audio_samplerate: Optional[int] = None extra_args: List[str] = Field(default_factory=list) created_at: Optional[datetime] = None updated_at: Optional[datetime] = None class TranscodeJob(BaseModel): """A transcoding or trimming job in the queue.""" id: UUID source_asset_id: UUID preset_id: Optional[UUID] = None preset_snapshot: Dict[str, Any] trim_start: Optional[float] = None trim_end: Optional[float] = None output_filename: str = "" output_path: Optional[str] = None output_asset_id: Optional[UUID] = None status: JobStatus = "JobStatus.PENDING" progress: float = 0.0 current_frame: Optional[int] = None current_time: Optional[float] = None speed: Optional[str] = None error_message: Optional[str] = None celery_task_id: Optional[str] = None priority: int = 0 created_at: Optional[datetime] = None started_at: Optional[datetime] = None completed_at: Optional[datetime] = None