X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Fmpdclient.py;h=45d3dcdf767ab4bbc21c77a2629d45a0b60a3bbc;hb=535ca42796e2785188482e2f4ee0cf3a277f8000;hp=fbd8cd8b32a157d778fd6e920c50f769b12657b3;hpb=d1ab072afd8e59267b7cad0e679a4d947fe7fd19;p=mpd-sima.git diff --git a/sima/mpdclient.py b/sima/mpdclient.py index fbd8cd8..45d3dcd 100644 --- a/sima/mpdclient.py +++ b/sima/mpdclient.py @@ -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: