auto-commit for b082c1c8-f6e3-4cfd-82ee-0396c70d1a00

This commit is contained in:
emergent-agent-e1
2026-07-23 22:18:08 +00:00
parent 34a052dabf
commit 22d8479b39
16 changed files with 1364 additions and 94 deletions
+121 -2
View File
@@ -175,21 +175,140 @@ class AppSettings(BaseModel):
tmdb_api_key: str = ""
radarr_url: str = ""
radarr_api_key: str = ""
auto_transcode: str = "off" # off | quick | abr
sonarr_url: str = ""
sonarr_api_key: str = ""
opensubs_api_key: str = ""
trakt_client_id: str = ""
trakt_client_secret: str = ""
auto_transcode: str = "off"
queue_paused: bool = False
class AppSettingsPublic(BaseModel):
"""Settings visible to admin UI (does not redact, since admin already has access)."""
tmdb_configured: bool = False
radarr_configured: bool = False
sonarr_configured: bool = False
opensubs_configured: bool = False
trakt_configured: bool = False
tmdb_api_key: str = ""
radarr_url: str = ""
radarr_api_key: str = ""
sonarr_url: str = ""
sonarr_api_key: str = ""
opensubs_api_key: str = ""
trakt_client_id: str = ""
trakt_client_secret: str = ""
auto_transcode: str = "off"
queue_paused: bool = False
# ---------- Shows / Episodes (Sonarr) ----------
class ShowBase(BaseModel):
title: str
description: str = ""
year: int = 2024
rating: str = "NR"
genres: List[str] = []
cast: List[str] = []
creator: str = ""
poster_url: str = ""
backdrop_url: str = ""
featured: bool = False
tvdb_id: Optional[int] = None
tmdb_id: Optional[int] = None
sonarr_id: Optional[int] = None
class Show(ShowBase):
model_config = ConfigDict(extra="ignore")
id: str = Field(default_factory=lambda: str(uuid.uuid4()))
episode_count: int = 0
season_count: int = 0
created_at: str = Field(default_factory=_now_iso)
class ShowCreate(ShowBase):
pass
class ShowUpdate(BaseModel):
title: Optional[str] = None
description: Optional[str] = None
year: Optional[int] = None
rating: Optional[str] = None
genres: Optional[List[str]] = None
poster_url: Optional[str] = None
backdrop_url: Optional[str] = None
featured: Optional[bool] = None
class EpisodeBase(BaseModel):
show_id: str
season_number: int
episode_number: int
title: str
description: str = ""
duration_minutes: int = 0
air_date: str = ""
still_url: str = ""
storage_type: str = "external" # local | sonarr | external
storage_path: Optional[str] = None
video_url: str = ""
class Episode(EpisodeBase):
model_config = ConfigDict(extra="ignore")
id: str = Field(default_factory=lambda: str(uuid.uuid4()))
sonarr_episode_id: Optional[int] = None
created_at: str = Field(default_factory=_now_iso)
class EpisodeCreate(EpisodeBase):
sonarr_episode_id: Optional[int] = None
class EpisodeProgressUpsert(BaseModel):
episode_id: str
position_seconds: float
duration_seconds: float
class SonarrSeriesDTO(BaseModel):
sonarr_id: int
title: str
year: Optional[int] = None
overview: str = ""
poster_url: str = ""
tvdb_id: Optional[int] = None
tmdb_id: Optional[int] = None
season_count: int = 0
episode_file_count: int = 0
# ---------- Trakt ----------
class TraktDeviceCodeResponse(BaseModel):
device_code: str
user_code: str
verification_url: str
expires_in: int
interval: int
class TraktStatus(BaseModel):
connected: bool
username: str = ""
# ---------- OpenSubtitles ----------
class OpenSubsResult(BaseModel):
file_id: int
language: str
label: str = ""
release: str = ""
fps: float = 0
downloads: int = 0
# ---------- Transcode Queue ----------
class TranscodeJob(BaseModel):
model_config = ConfigDict(extra="ignore")