Merge pull request '0.1.1' (#1) from 0.1.1 into main

Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
2025-12-10 02:44:51 +01:00
2 changed files with 13 additions and 8 deletions

4
changelog/0.1.1.md Normal file
View File

@@ -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

View File

@@ -16,7 +16,7 @@ class JellyfinApiClient:
self.logger.info("Connecting to Jellyfin server...") self.logger.info("Connecting to Jellyfin server...")
self.client = JellyfinClient() 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.client.config.data['auth.ssl'] = True
self.last_auth_time = None self.last_auth_time = None
@@ -50,7 +50,7 @@ class JellyfinApiClient:
session_id = session.get('Id') session_id = session.get('Id')
current_item = self.client.jellyfin.get_now_playing(session_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.") self.logger.info("Current playback information fetched.")
return self.to_model(current_item) return self.to_model(current_item)
@@ -71,8 +71,6 @@ class JellyfinApiClient:
elif media_type == 'Movie': elif media_type == 'Movie':
return self.to_movie_model(item) return self.to_movie_model(item)
raise ValueError(f"Unsupported media type: {media_type}")
def get_playback_info(self, media: dict) -> tuple[int, int]: def get_playback_info(self, media: dict) -> tuple[int, int]:
play_state = media.get('PlayState') play_state = media.get('PlayState')
@@ -89,6 +87,7 @@ class JellyfinApiClient:
def to_music_model(self, item: dict) -> JellyfinMediaItem: def to_music_model(self, item: dict) -> JellyfinMediaItem:
media_id = item.get('Id') media_id = item.get('Id')
parent_id = item.get('ParentId')
premiere_date = item.get('PremiereDate') premiere_date = item.get('PremiereDate')
premiere_year = datetime.fromisoformat(premiere_date).year if premiere_date else None premiere_year = datetime.fromisoformat(premiere_date).year if premiere_date else None
@@ -99,7 +98,7 @@ class JellyfinApiClient:
id=media_id, id=media_id,
name=item.get('Name'), name=item.get('Name'),
type=JellyfinMediaType.AUDIO, type=JellyfinMediaType.AUDIO,
image_url=self.get_image_url(media_id), image_url=self.get_image_url(parent_id),
start=start, start=start,
end=end, end=end,
metadata={ metadata={
@@ -128,11 +127,13 @@ class JellyfinApiClient:
def to_episode_model(self, item: dict) -> JellyfinMediaItem: def to_episode_model(self, item: dict) -> JellyfinMediaItem:
media_id = item.get('Id') media_id = item.get('Id')
seris_name = item.get('SeriesName') parent = self.client.jellyfin.get_item(item.get('ParentId'))
parent_id = item.get('ParentId')
series_name = item.get('SeriesName')
season_number = item.get('ParentIndexNumber') season_number = item.get('ParentIndexNumber')
episode_number = item.get('IndexNumber') 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) (start, end) = self.get_playback_info(item)
@@ -140,7 +141,7 @@ class JellyfinApiClient:
id=media_id, id=media_id,
name=item.get('Name'), name=item.get('Name'),
type=JellyfinMediaType.EPISODE, type=JellyfinMediaType.EPISODE,
image_url=self.get_image_url(media_id), image_url=self.get_image_url(parent_id),
start=start, start=start,
end=end, end=end,
metadata={ metadata={