Files
Video-Cutter/backend/app/schemas.py
T
2026-06-04 17:42:38 +02:00

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