Skip to content

Commit bace8e9

Browse files
Fix Jellyfin schema ProductionYear for Nullable instances
Gracefully handle validationErrors in Jellyfin
1 parent 7ec5a6f commit bace8e9

4 files changed

Lines changed: 116 additions & 110 deletions

File tree

mediux_posters/services/jellyfin/schemas.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class Show(BaseShow, JellyfinModel):
7777
validation_alias=AliasPath("ProviderIds", "TvRage"), default=None
7878
)
7979
tvdb_id: int | None = Field(validation_alias=AliasPath("ProviderIds", "Tvdb"), default=None)
80-
year: int = Field(alias="ProductionYear")
80+
year: int | None = Field(alias="ProductionYear", default=None)
8181

8282
@field_validator("premiere_date", mode="before")
8383
def datetime_to_date(cls, value: str | datetime | date | None) -> str | datetime | date | None:

mediux_posters/services/jellyfin/service.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -119,17 +119,23 @@ def validate(self) -> bool:
119119
return False
120120

121121
def list_episodes(self, show_id: str, season_id: str) -> list[Episode]:
122-
results = self._perform_get_request(
123-
endpoint=f"/Shows/{show_id}/Episodes",
124-
params={"seasonId": season_id, "fields": ["ProviderIds"]},
125-
).get("Items", [])
126-
return TypeAdapter(list[Episode]).validate_python(results)
122+
try:
123+
results = self._perform_get_request(
124+
endpoint=f"/Shows/{show_id}/Episodes",
125+
params={"seasonId": season_id, "fields": ["ProviderIds"]},
126+
).get("Items", [])
127+
return TypeAdapter(list[Episode]).validate_python(results)
128+
except ValidationError as err:
129+
raise ServiceError(err) from err
127130

128131
def list_seasons(self, show_id: str) -> list[Season]:
129-
results = self._perform_get_request(
130-
endpoint=f"/Shows/{show_id}/Seasons", params={"fields": ["ProviderIds"]}
131-
).get("Items", [])
132-
return TypeAdapter(list[Season]).validate_python(results)
132+
try:
133+
results = self._perform_get_request(
134+
endpoint=f"/Shows/{show_id}/Seasons", params={"fields": ["ProviderIds"]}
135+
).get("Items", [])
136+
return TypeAdapter(list[Season]).validate_python(results)
137+
except ValidationError as err:
138+
raise ServiceError(err) from err
133139

134140
def _list_shows(
135141
self,

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ dev = [
77
"pre-commit >= 4.2.0"
88
]
99
tests = [
10-
"pytest >= 8.4.0",
10+
"pytest >= 8.4.1",
1111
"pytest-cov >= 6.2.1",
1212
"pytest-httpx >= 0.35.0",
1313
"tox >= 4.27.0",
14-
"tox-uv >= 1.26.0"
14+
"tox-uv >= 1.26.1"
1515
]
1616

1717
[project]

0 commit comments

Comments
 (0)