From 0183d42d559a6601dea93a74d0214670213dad8d Mon Sep 17 00:00:00 2001 From: Zvonimir Rudinski Date: Wed, 10 Dec 2025 02:37:25 +0100 Subject: [PATCH 1/3] get music image from parent id --- jellyfin/api_client.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/jellyfin/api_client.py b/jellyfin/api_client.py index 2c66427..562b00c 100644 --- a/jellyfin/api_client.py +++ b/jellyfin/api_client.py @@ -16,7 +16,7 @@ class JellyfinApiClient: self.logger.info("Connecting to Jellyfin server...") self.client = JellyfinClient() - self.client.config.app('jellydisc', '0.1.0', machine_name, unique_id) + self.client.config.app('jellydisc', '0.1.1', machine_name, unique_id) self.client.config.data['auth.ssl'] = True self.last_auth_time = None @@ -89,6 +89,7 @@ class JellyfinApiClient: def to_music_model(self, item: dict) -> JellyfinMediaItem: media_id = item.get('Id') + parent_id = item.get('ParentId') premiere_date = item.get('PremiereDate') premiere_year = datetime.fromisoformat(premiere_date).year if premiere_date else None @@ -99,7 +100,7 @@ class JellyfinApiClient: id=media_id, name=item.get('Name'), type=JellyfinMediaType.AUDIO, - image_url=self.get_image_url(media_id), + image_url=self.get_image_url(parent_id), start=start, end=end, metadata={ @@ -128,6 +129,7 @@ class JellyfinApiClient: def to_episode_model(self, item: dict) -> JellyfinMediaItem: media_id = item.get('Id') + parent_id = item.get('ParentId') seris_name = item.get('SeriesName') season_number = item.get('ParentIndexNumber') episode_number = item.get('IndexNumber') @@ -140,7 +142,7 @@ class JellyfinApiClient: id=media_id, name=item.get('Name'), type=JellyfinMediaType.EPISODE, - image_url=self.get_image_url(media_id), + image_url=self.get_image_url(parent_id), start=start, end=end, metadata={ -- 2.49.1 From fd2ff8ac6b6e8bce590e0ebabd7f659a19646358 Mon Sep 17 00:00:00 2001 From: Zvonimir Rudinski Date: Wed, 10 Dec 2025 02:38:58 +0100 Subject: [PATCH 2/3] fix current item type check --- jellyfin/api_client.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/jellyfin/api_client.py b/jellyfin/api_client.py index 562b00c..0a20abc 100644 --- a/jellyfin/api_client.py +++ b/jellyfin/api_client.py @@ -50,7 +50,7 @@ class JellyfinApiClient: session_id = session.get('Id') current_item = self.client.jellyfin.get_now_playing(session_id) - if current_item: + if current_item and current_item.get('Type') in ['Audio', 'Episode', 'Movie']: self.logger.info("Current playback information fetched.") return self.to_model(current_item) @@ -71,8 +71,6 @@ class JellyfinApiClient: elif media_type == 'Movie': return self.to_movie_model(item) - raise ValueError(f"Unsupported media type: {media_type}") - def get_playback_info(self, media: dict) -> tuple[int, int]: play_state = media.get('PlayState') -- 2.49.1 From 210aa0b85ec860c8b532008741292e7eb4f723c0 Mon Sep 17 00:00:00 2001 From: Zvonimir Rudinski Date: Wed, 10 Dec 2025 02:43:49 +0100 Subject: [PATCH 3/3] fetch image by parent id --- changelog/0.1.1.md | 4 ++++ jellyfin/api_client.py | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 changelog/0.1.1.md diff --git a/changelog/0.1.1.md b/changelog/0.1.1.md new file mode 100644 index 0000000..c89ec39 --- /dev/null +++ b/changelog/0.1.1.md @@ -0,0 +1,4 @@ +# 0.1.1 + +- Updated Jellyfin item fetching logic to skip items that are not `Audio`, `Episode`, or `Movie` types, preventing errors when unsupported media types are encountered +- Updated Jellyfin image fetching logic to use `ParentId` for episodes and music tracks to ensure correct artwork is displayed in Discord Rich Presence diff --git a/jellyfin/api_client.py b/jellyfin/api_client.py index 0a20abc..bd1e5d1 100644 --- a/jellyfin/api_client.py +++ b/jellyfin/api_client.py @@ -127,12 +127,13 @@ class JellyfinApiClient: def to_episode_model(self, item: dict) -> JellyfinMediaItem: media_id = item.get('Id') + parent = self.client.jellyfin.get_item(item.get('ParentId')) parent_id = item.get('ParentId') - seris_name = item.get('SeriesName') + series_name = item.get('SeriesName') season_number = item.get('ParentIndexNumber') episode_number = item.get('IndexNumber') - subtitle=f"S{season_number:02}E{episode_number:02} of {seris_name}" + subtitle=f"S{season_number:02}E{episode_number:02} of {series_name}" (start, end) = self.get_playback_info(item) -- 2.49.1