65 lines
1.3 KiB
Python
65 lines
1.3 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import Optional
|
|
import datetime
|
|
|
|
|
|
class VideoOut(BaseModel):
|
|
id: int
|
|
filename: str
|
|
duration: Optional[float] = None
|
|
status: str
|
|
output_path: Optional[str] = None
|
|
error_message: Optional[str] = None
|
|
created_at: datetime.datetime
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class VideoListOut(BaseModel):
|
|
videos: list[VideoOut]
|
|
|
|
|
|
class SegmentOut(BaseModel):
|
|
id: int
|
|
video_id: int
|
|
speaker_label: Optional[str] = None
|
|
start_time: float
|
|
end_time: float
|
|
english_text: Optional[str] = None
|
|
danish_text: Optional[str] = None
|
|
status: str
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class SegmentUpdate(BaseModel):
|
|
english_text: Optional[str] = None
|
|
danish_text: Optional[str] = None
|
|
speaker_label: Optional[str] = None
|
|
|
|
|
|
class TranscriptOut(BaseModel):
|
|
video_id: int
|
|
segments: list[SegmentOut]
|
|
|
|
|
|
class JobOut(BaseModel):
|
|
id: int
|
|
video_id: int
|
|
job_type: str
|
|
status: str
|
|
progress: float
|
|
error_message: Optional[str] = None
|
|
created_at: datetime.datetime
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class JobListOut(BaseModel):
|
|
jobs: list[JobOut]
|
|
|
|
|
|
class ProcessResponse(BaseModel):
|
|
job_id: int
|
|
message: str
|