Skip to content

Commit e238b83

Browse files
Better handle exceptions
Add validate to tests
1 parent e9bef74 commit e238b83

5 files changed

Lines changed: 44 additions & 17 deletions

File tree

mediux_posters/__main__.py

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -160,11 +160,19 @@ def process_image(
160160
set_data.username,
161161
)
162162
should_log = False
163-
mediux.download_image(file_id=file.id, output=image_file)
163+
try:
164+
mediux.download_image(file_id=file.id, output=image_file)
165+
except ServiceError as err:
166+
LOGGER.error("[Mediux] %s", err)
167+
return
164168

165-
success = service.upload_image(
166-
object_id=obj.id, image_file=image_file, kometa_integration=kometa_integration
167-
)
169+
try:
170+
success = service.upload_image(
171+
object_id=obj.id, image_file=image_file, kometa_integration=kometa_integration
172+
)
173+
except ServiceError as err:
174+
LOGGER.error("[%s] %s", type(service).__name__, err)
175+
success = False
168176
setattr(obj, uploaded_attr, success)
169177
if success:
170178
service.cache.insert(
@@ -190,7 +198,12 @@ def process_image(
190198
filename="backdrop.jpg",
191199
)
192200
if isinstance(entry, Show) and isinstance(set_data, ShowSet):
193-
for season in entry.seasons or service.list_seasons(show_id=entry.id):
201+
try:
202+
seasons = service.list_seasons(show_id=entry.id)
203+
except ServiceError as err:
204+
LOGGER.error("[%s] %s", type(service).__name__, err)
205+
seasons = []
206+
for season in seasons:
194207
entry.seasons.append(season)
195208
mediux_season = next(
196209
(x for x in set_data.show.seasons if x.number == season.number), None
@@ -204,9 +217,12 @@ def process_image(
204217
parent=slugify(value=entry.display_name),
205218
filename=f"s{season.number:02}.jpg",
206219
)
207-
for episode in season.episodes or service.list_episodes(
208-
show_id=entry.id, season_id=season.id
209-
):
220+
try:
221+
episodes = service.list_episodes(show_id=entry.id, season_id=season.id)
222+
except ServiceError as err:
223+
LOGGER.error("[%s] %s", type(service).__name__, err)
224+
episodes = []
225+
for episode in episodes:
210226
season.episodes.append(episode)
211227
mediux_episode = next(
212228
(x for x in mediux_season.episodes if x.number == episode.number), None
@@ -221,7 +237,12 @@ def process_image(
221237
filename=f"s{season.number:02}e{episode.number:02}.jpg",
222238
)
223239
elif isinstance(entry, Collection) and isinstance(set_data, CollectionSet):
224-
for movie in service.list_collection_movies(collection_id=entry.id):
240+
try:
241+
movies = service.list_collection_movies(collection_id=entry.id)
242+
except ServiceError as err:
243+
LOGGER.error("[%s] %s", type(service).__name__, err)
244+
movies = []
245+
for movie in movies:
225246
entry.movies.append(movie)
226247
mediux_movie = next(
227248
(x for x in set_data.collection.movies if x.id == movie.tmdb_id), None

mediux_posters/mediux/service.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def __init__(self, base_url: str, token: str):
102102
headers={
103103
"Accept": "application/json",
104104
"Authorization": f"Bearer {token}",
105-
"User-Agent": f"{__project__}/{__version__}/{system()}: {release()}",
105+
"User-Agent": f"{__project__.title()}/{__version__}/{system()}: {release()}",
106106
},
107107
)
108108

@@ -130,8 +130,8 @@ def _perform_graphql_request(self, query: str) -> dict[str, Any]:
130130

131131
def validate(self) -> bool:
132132
try:
133-
# TODO: Do single set call to validate credentials
134-
return True
133+
results = self.list_movie_sets(tmdb_id=324857)
134+
return results != []
135135
except ServiceError as err:
136136
LOGGER.error("[Mediux] %s", err)
137137
return False

mediux_posters/services/jellyfin/service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def __init__(self, base_url: str, token: str):
3636
headers={
3737
"Accept": "application/json",
3838
"X-Emby-Token": token,
39-
"User-Agent": f"{__project__}/{__version__}/{system()}: {release()}",
39+
"User-Agent": f"{__project__.title()}/{__version__}/{system()}: {release()}",
4040
},
4141
)
4242

mediux_posters/services/plex/service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def __init__(self, base_url: str, token: str):
3535
headers={
3636
"Accept": "application/json",
3737
"X-Plex-Token": token,
38-
"User-Agent": f"{__project__}/{__version__}/{system()}: {release()}",
38+
"User-Agent": f"{__project__.title()}/{__version__}/{system()}: {release()}",
3939
},
4040
)
4141

tests/conftest.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ def mediux_token() -> str:
1919

2020
@pytest.fixture(scope="session")
2121
def mediux_session(mediux_base_url: str, mediux_token: str) -> Mediux:
22-
return Mediux(base_url=mediux_base_url, token=mediux_token)
22+
mediux = Mediux(base_url=mediux_base_url, token=mediux_token)
23+
assert mediux.validate() is True
24+
return mediux
2325

2426

2527
@pytest.fixture(scope="session")
@@ -35,7 +37,9 @@ def jellyfin_token() -> str | None:
3537
@pytest.fixture(scope="session")
3638
def jellyfin_session(jellyfin_base_url: str | None, jellyfin_token: str | None) -> Jellyfin | None:
3739
if jellyfin_base_url and jellyfin_token:
38-
return Jellyfin(base_url=jellyfin_base_url, token=jellyfin_token)
40+
jellyfin = Jellyfin(base_url=jellyfin_base_url, token=jellyfin_token)
41+
assert jellyfin.validate() is True
42+
return jellyfin
3943
return None
4044

4145

@@ -52,5 +56,7 @@ def plex_token() -> str | None:
5256
@pytest.fixture(scope="session")
5357
def plex_session(plex_base_url: str | None, plex_token: str | None) -> Plex | None:
5458
if plex_base_url and plex_token:
55-
return Plex(base_url=plex_base_url, token=plex_token)
59+
plex = Plex(base_url=plex_base_url, token=plex_token)
60+
assert plex.validate() is True
61+
return plex
5662
return None

0 commit comments

Comments
 (0)