Jellyfin: Don't fail entire sync if a single track or album have an invalid mbid...
authorJc2k <john.carr@unrouted.co.uk>
Mon, 10 Jun 2024 21:59:51 +0000 (22:59 +0100)
committerGitHub <noreply@github.com>
Mon, 10 Jun 2024 21:59:51 +0000 (23:59 +0200)
music_assistant/server/providers/jellyfin/__init__.py

index 13459f27f94660d5b5d0a672b2c402bc2fea1478..f2a7a78bf0aa3a135db6e1776bd1e2a569bb3464 100644 (file)
@@ -318,11 +318,16 @@ class JellyfinProvider(MusicProvider):
         if ITEM_KEY_OVERVIEW in current_jellyfin_album:\r
             album.metadata.description = current_jellyfin_album[ITEM_KEY_OVERVIEW]\r
         if ITEM_KEY_MUSICBRAINZ_RELEASE_GROUP in current_jellyfin_album[ITEM_KEY_PROVIDER_IDS]:\r
-            musicbrainzid = current_jellyfin_album[ITEM_KEY_PROVIDER_IDS][\r
-                ITEM_KEY_MUSICBRAINZ_RELEASE_GROUP\r
-            ]\r
-            if len(musicbrainzid.split("-")) == 5:\r
-                album.mbid = musicbrainzid\r
+            try:\r
+                album.mbid = current_jellyfin_album[ITEM_KEY_PROVIDER_IDS][\r
+                    ITEM_KEY_MUSICBRAINZ_RELEASE_GROUP\r
+                ]\r
+            except InvalidDataError as error:\r
+                self.logger.warning(\r
+                    "Jellyfin has an invalid musicbrainz id for album %s",\r
+                    album.name,\r
+                    exc_info=error if self.logger.isEnabledFor(logging.DEBUG) else None,\r
+                )\r
         if ITEM_KEY_SORT_NAME in current_jellyfin_album:\r
             album.sort_name = current_jellyfin_album[ITEM_KEY_SORT_NAME]\r
         if ITEM_KEY_ALBUM_ARTIST in current_jellyfin_album:\r
@@ -482,7 +487,15 @@ class JellyfinProvider(MusicProvider):
             )  # 10000000 ticks per millisecond\r
         track.track_number = current_jellyfin_track.get(ITEM_KEY_INDEX_NUMBER, 99)\r
         if ITEM_KEY_MUSICBRAINZ_TRACK in current_jellyfin_track[ITEM_KEY_PROVIDER_IDS]:\r
-            track.mbid = current_jellyfin_track[ITEM_KEY_PROVIDER_IDS][ITEM_KEY_MUSICBRAINZ_TRACK]\r
+            track_mbid = current_jellyfin_track[ITEM_KEY_PROVIDER_IDS][ITEM_KEY_MUSICBRAINZ_TRACK]\r
+            try:\r
+                track.mbid = track_mbid\r
+            except InvalidDataError as error:\r
+                self.logger.warning(\r
+                    "Jellyfin has an invalid musicbrainz id for track %s",\r
+                    track.name,\r
+                    exc_info=error if self.logger.isEnabledFor(logging.DEBUG) else None,\r
+                )\r
         return track\r
 \r
     async def _parse_playlist(self, jellyfin_playlist: dict[str, Any]) -> Playlist:\r