MusicUtils / models.py
sathvik77's picture
feat(backend): POST /jobs/youtube + GET /jobs/youtube/{id}
b989bc8
Raw
History Blame Contribute Delete
1.14 kB
from enum import Enum
from pydantic import BaseModel, Field
class JobState(str, Enum):
pending = "pending"
processing = "processing"
done = "done"
error = "error"
class JobStatus(BaseModel):
job_id: str
state: JobState
progress: int = Field(default=0, ge=0, le=100)
error: str | None = None
stems: dict[str, str] | None = None
original_filename: str | None = None
# Analysis metadata for creators.
bpm: float | None = Field(default=None, ge=30, le=260)
bpm_confidence: float | None = Field(default=None, ge=0, le=1)
musical_key: str | None = None
key_scale: str | None = None
key_confidence: float | None = Field(default=None, ge=0, le=1)
# Rhythm / tala metadata.
tala: str | None = None
time_signature: str | None = None
class DownloadRecord(BaseModel):
job_id: str
original_filename: str
stem: str
timestamp: str
class UploadResponse(BaseModel):
job_id: str
class YoutubeJobRequest(BaseModel):
url: str
class YoutubeJobStatus(BaseModel):
id: str
status: str
error: str | None = None
slug: str | None = None