mirror of
https://github.com/myronblair/kino-app
synced 2026-07-27 21:18:43 -05:00
auto-commit for b082c1c8-f6e3-4cfd-82ee-0396c70d1a00
This commit is contained in:
+121
-2
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user