91 lines
2.7 KiB
Python
91 lines
2.7 KiB
Python
"""
|
|
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
|
|
execution_arn: Optional[str] = None
|
|
priority: int = 0
|
|
created_at: Optional[datetime] = None
|
|
started_at: Optional[datetime] = None
|
|
completed_at: Optional[datetime] = None
|