Protect artist retrieval in Subsonic get_artist_toptracks() (#1454)
authorEric Munson <eric@munsonfam.org>
Sat, 6 Jul 2024 08:51:27 +0000 (04:51 -0400)
committerGitHub <noreply@github.com>
Sat, 6 Jul 2024 08:51:27 +0000 (10:51 +0200)
music_assistant/server/providers/opensubsonic/sonic_provider.py

index 438b7e20fbffff989777380147bd63636bcb25b9..28de9cebedae46cba27b7d52e407d60ed452529b 100644 (file)
@@ -681,7 +681,11 @@ class OpenSonicProvider(MusicProvider):
 
     async def get_artist_toptracks(self, prov_artist_id: str) -> list[Track]:
         """Get the top listed tracks for a specified artist."""
-        sonic_artist: SonicArtist = await self._run_async(self._conn.getArtist, prov_artist_id)
+        try:
+            sonic_artist: SonicArtist = await self._run_async(self._conn.getArtist, prov_artist_id)
+        except DataNotFoundError as e:
+            msg = f"Artist {prov_artist_id} not found"
+            raise MediaNotFoundError(msg) from e
         songs: list[SonicSong] = await self._run_async(self._conn.getTopSongs, sonic_artist.name)
         return [self._parse_track(entry) for entry in songs]