]> kaliko git repositories - mpd-sima.git/blobdiff - sima/lib/meta.py
doc: Update docstrings
[mpd-sima.git] / sima / lib / meta.py
index 39b3197573c9e78456cdcbbfaf8f5854d90f18ae..725bfb00afde57b80d4caf39acb9e1968ca394ab 100644 (file)
@@ -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
 
@@ -56,6 +56,7 @@ def mbidfilter(func):
         func(*args, **kwargs)
     return wrapper
 
+
 def serialize(func):
     def wrapper(*args, **kwargs):
         ans = func(*args, **kwargs)
@@ -92,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)
 
@@ -182,6 +183,8 @@ class Album(Meta):
 
     @mbidfilter
     def __init__(self, name=None, mbid=None, **kwargs):
+        if kwargs.get('musicbrainz_albumid', False):
+            mbid = kwargs.get('musicbrainz_albumid')
         super().__init__(name=name, mbid=mbid, **kwargs)
 
     @property
@@ -195,16 +198,14 @@ class Artist(Meta):
     :param str name: Artist name
     :param str mbid: Musicbrainz artist ID
     :param str artist: Overrides "name" argument
-    :param str albumartist: Overrides "name" and "artist" argument
+    :param str albumartist: use "name" if not set
     :param str musicbrainz_artistid: Overrides "mbid" argument
-    :param str musicbrainz_albumartistid: Overrides "musicbrainz_artistid" argument
 
     :Example:
 
     >>> trk = {'artist':'Art Name',
     >>>        'albumartist': 'Alb Art Name',           # optional
     >>>        'musicbrainz_artistid': '<UUID4>',       # optional
-    >>>        'musicbrainz_albumartistid': '<UUID4>',  # optional
     >>>       }
     >>> artobj0 = Artist(**trk)
     >>> artobj1 = Artist(name='Tool')
@@ -213,16 +214,14 @@ 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 (kwargs.get('albumartist', False) and
-                kwargs.get('albumartist') != 'Various Artists'):
-            name = kwargs.get('albumartist').split(SEPARATOR)[0]
-        if (kwargs.get('musicbrainz_albumartistid', False) and
-                kwargs.get('musicbrainz_albumartistid') != '89ad4ac3-39f7-470e-963a-56509c546377'):
-            mbid = kwargs.get('musicbrainz_albumartistid').split(SEPARATOR)[0]
-        super().__init__(name=name, mbid=mbid)
+            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'))
+
 
 class MetaContainer(Set):