96 lines
2.3 KiB
Python
96 lines
2.3 KiB
Python
from pydantic import BaseModel, Field
|
|
|
|
|
|
class ProjectCreate(BaseModel):
|
|
name: str = Field(default="Default")
|
|
segments_count: int = Field(ge=1)
|
|
intro_seconds: float = Field(ge=0)
|
|
outro_seconds: float = Field(ge=0)
|
|
reencode_enabled: bool = False
|
|
encoding_passes: int = Field(default=1, ge=1, le=2)
|
|
target_os: str = Field(default="windows")
|
|
ffmpeg_pass1_template: str | None = None
|
|
ffmpeg_pass2_template: str | None = None
|
|
|
|
|
|
class ProjectUpdate(BaseModel):
|
|
name: str | None = None
|
|
segments_count: int | None = Field(default=None, ge=1)
|
|
intro_seconds: float | None = Field(default=None, ge=0)
|
|
outro_seconds: float | None = Field(default=None, ge=0)
|
|
reencode_enabled: bool | None = None
|
|
encoding_passes: int | None = Field(default=None, ge=1, le=2)
|
|
target_os: str | None = None
|
|
ffmpeg_pass1_template: str | None = None
|
|
ffmpeg_pass2_template: str | None = None
|
|
|
|
|
|
class ProjectOut(BaseModel):
|
|
id: str
|
|
name: str
|
|
segments_count: int
|
|
intro_seconds: float
|
|
outro_seconds: float
|
|
reencode_enabled: bool
|
|
encoding_passes: int
|
|
target_os: str
|
|
ffmpeg_pass1_template: str | None = None
|
|
ffmpeg_pass2_template: str | None = None
|
|
created_at: str
|
|
updated_at: str
|
|
|
|
|
|
class VideoOut(BaseModel):
|
|
id: str
|
|
project_id: str
|
|
filename: str
|
|
file_path: str
|
|
duration_seconds: float
|
|
is_exported: bool = False
|
|
created_at: str
|
|
|
|
|
|
class MarkersUpdate(BaseModel):
|
|
markers: list[float]
|
|
|
|
|
|
class SegmentEdit(BaseModel):
|
|
segment_key: str
|
|
start_seconds: float = Field(ge=0)
|
|
end_seconds: float = Field(ge=0)
|
|
color: str | None = None
|
|
|
|
|
|
class SegmentEditsUpdate(BaseModel):
|
|
segments: list[SegmentEdit]
|
|
|
|
|
|
class SegmentEditOut(SegmentEdit):
|
|
modified_at: str
|
|
|
|
|
|
class AutoCutRequest(BaseModel):
|
|
window_seconds: float | None = None
|
|
|
|
|
|
class SplitRequest(BaseModel):
|
|
markers: list[float] | None = None
|
|
output_prefix: str | None = None
|
|
|
|
|
|
class SplitAllRequest(BaseModel):
|
|
video_ids: list[str] | None = None
|
|
|
|
|
|
class JobOut(BaseModel):
|
|
id: str
|
|
kind: str
|
|
status: str
|
|
progress: float
|
|
message: str | None = None
|
|
details: dict | None = None
|
|
logs: list[dict] = Field(default_factory=list)
|
|
result: dict | None = None
|
|
created_at: str
|
|
updated_at: str
|