]> kaliko git repositories - mpd-sima.git/blobdiff - sima/mpdclient.py
Fixed crash when player.search_track returns nothing
[mpd-sima.git] / sima / mpdclient.py
index fbd8cd8b32a157d778fd6e920c50f769b12657b3..45d3dcdf767ab4bbc21c77a2629d45a0b60a3bbc 100644 (file)
@@ -59,7 +59,10 @@ def set_artist_mbid(func):
         result = func(*args, **kwargs)
         if Meta.use_mbid:
             if result and not result.mbid:
-                result.mbid = cls._find_musicbrainz_artistid(result)
+                mbid = cls._find_musicbrainz_artistid(result)
+                artist = Artist(name=result.name, mbid=mbid)
+                artist.add_alias(result)
+                return artist
         return result
     return wrapper
 
@@ -362,14 +365,15 @@ class MPD(MPDClient):
 # #### Search Methods #####
     def _find_musicbrainz_artistid(self, artist):
         """Find MusicBrainzArtistID when possible.
-        For artist with aliases having a mbid but not the main name, no mbid is
-        fetched…
-        Searching for Artist('Russian Circls') do not reslove the MBID
         """
         if not self.use_mbid:
             return None
-        mbids = self.list('MUSICBRAINZ_ARTISTID',
-                          f'(artist == "{artist.name_sz}")')
+        mbids = None
+        for name in artist.names_sz:
+            filt = f'((artist == "{name}") AND (MUSICBRAINZ_ARTISTID != ""))'
+            mbids = self.list('MUSICBRAINZ_ARTISTID', filt)
+            if mbids:
+                break
         if not mbids:
             return None
         if len(mbids) > 1: