Subsonic: UNKNOWN_ARTIST handling (#1464)
authorEric Munson <eric@munsonfam.org>
Sun, 7 Jul 2024 22:51:29 +0000 (18:51 -0400)
committerGitHub <noreply@github.com>
Sun, 7 Jul 2024 22:51:29 +0000 (00:51 +0200)
music_assistant/server/providers/opensubsonic/sonic_provider.py

index 28de9cebedae46cba27b7d52e407d60ed452529b..810ff201225e526987869cb45f08677e5fdab931 100644 (file)
@@ -320,6 +320,10 @@ class OpenSonicProvider(MusicProvider):
                 )
             )
         else:
+            logging.getLogger("libopensonic").info(
+                f"Unable to find an artist ID for album '{sonic_album.name}' with "
+                f"ID '{sonic_album.id}'."
+            )
             album.artists.append(
                 Artist(
                     item_id=UNKNOWN_ARTIST_ID,
@@ -400,6 +404,10 @@ class OpenSonicProvider(MusicProvider):
                 track.artists.append(self._get_item_mapping(MediaType.ARTIST, entry.id, entry.name))
 
         if not track.artists:
+            logging.getLogger("libopensonic").info(
+                f"Unable to find artist ID for track '{sonic_song.title}' with "
+                f"ID '{sonic_song.id}'."
+            )
             track.artists.append(
                 Artist(
                     item_id=UNKNOWN_ARTIST_ID,
@@ -681,6 +689,10 @@ class OpenSonicProvider(MusicProvider):
 
     async def get_artist_toptracks(self, prov_artist_id: str) -> list[Track]:
         """Get the top listed tracks for a specified artist."""
+        # We have seen top tracks requested for the UNKNOWN_ARTIST ID, protect against that
+        if prov_artist_id == UNKNOWN_ARTIST_ID:
+            return []
+
         try:
             sonic_artist: SonicArtist = await self._run_async(self._conn.getArtist, prov_artist_id)
         except DataNotFoundError as e: