X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Flib%2Fmeta.py;h=5a2305eceb09169663860083bc43b3122a03e4ab;hb=b36c71a;hp=3f6a641c3460938966eb2ef84431c55b3222667e;hpb=703c89bb8361c1d5bc7456ef47a91b5e63dcb74b;p=mpd-sima.git diff --git a/sima/lib/meta.py b/sima/lib/meta.py index 3f6a641..5a2305e 100644 --- a/sima/lib/meta.py +++ b/sima/lib/meta.py @@ -27,7 +27,7 @@ import logging import re UUID_RE = r'^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[89AB][a-f0-9]{3}-[a-f0-9]{12}$' -# The Track Object is collapsing multiple tags into a single string using this +#: The Track Object is collapsing multiple tags into a single string using this # separator. It is used then to split back the string to tags list. SEPARATOR = chr(0x1F) # ASCII Unit Separator @@ -93,13 +93,13 @@ class Meta: if not isinstance(kwargs.get('name'), str): raise MetaException('"name" argument not a string') else: - self.__name = kwargs.pop('name') + self.__name = kwargs.pop('name').split(SEPARATOR)[0] if 'mbid' in kwargs and kwargs.get('mbid'): - if is_uuid4(kwargs.get('mbid')): - self.__mbid = kwargs.pop('mbid').lower() + mbid = kwargs.get('mbid').lower().split(SEPARATOR)[0] + if is_uuid4(mbid): + self.__mbid = mbid else: - self.log.warning('Wrong mbid %s:%s', self.__name, - kwargs.get('mbid')) + self.log.warning('Wrong mbid %s:%s', self.__name, mbid) # mbid immutable as hash rests on self.__dict__.update(**kwargs) @@ -158,6 +158,13 @@ class Meta: def mbid(self): return self.__mbid + @mbid.setter + def mbid(self, mbid): + if mbid and not is_uuid4(mbid): + self.log.warning('Wrong mbid %s:%s', self.__name, mbid) + return + self.__mbid = mbid + @property def aliases(self): return self.__aliases @@ -184,7 +191,7 @@ class Album(Meta): @mbidfilter def __init__(self, name=None, mbid=None, **kwargs): if kwargs.get('musicbrainz_albumid', False): - mbid = kwargs.get('musicbrainz_albumid').split(SEPARATOR)[0] + mbid = kwargs.get('musicbrainz_albumid') super().__init__(name=name, mbid=mbid, **kwargs) @property @@ -214,11 +221,11 @@ class Artist(Meta): @mbidfilter def __init__(self, name=None, mbid=None, **kwargs): if kwargs.get('artist', False): - name = kwargs.get('artist').split(SEPARATOR)[0] + name = kwargs.get('artist') if kwargs.get('musicbrainz_artistid', False): - mbid = kwargs.get('musicbrainz_artistid').split(SEPARATOR)[0] - if not kwargs.get('albumartist', False): - kwargs['albumartist'] = name + mbid = kwargs.get('musicbrainz_artistid') + if name and not kwargs.get('albumartist', False): + kwargs['albumartist'] = name.split(SEPARATOR)[0] super().__init__(name=name, mbid=mbid, albumartist=kwargs.get('albumartist'))