]> kaliko git repositories - mpd-sima.git/blobdiff - sima/lib/track.py
Deal with unknown artist
[mpd-sima.git] / sima / lib / track.py
index 5b25bd33527bad5e94ef2eb043990a1eb4dc755b..2874a192ad59497161b7698db3cbabd5d088aab2 100644 (file)
@@ -33,18 +33,19 @@ class Track:
 
     def __init__(self, file=None, time=0, pos=-1, **kwargs):
         self.title = self.artist = self.album = self.albumartist = ''
-        self.musicbrainz_artistid = None
+        self.musicbrainz_artistid = self.musicbrainz_albumartistid = None
         self.pos = int(pos)
-        self._empty = False
         self._file = file
+        self._empty = False
+        self._time = time
         if not kwargs:
             self._empty = True
-        self._time = time
         self.__dict__.update(**kwargs)
         self.tags_to_collapse = ['artist', 'album', 'title', 'date',
-                                 'genre', 'albumartist']
+                                 'genre', 'albumartist',
+                                 'musicbrainz_artistid',
+                                 'musicbrainz_albumartistid']
         #  have tags been collapsed?
-        self.collapse_tags_bool = False
         self.collapsed_tags = list()
         # Needed for multiple tags which returns a list instead of a string
         self.collapse_tags()
@@ -58,12 +59,11 @@ class Track:
             if tag not in self.tags_to_collapse:
                 continue
             if isinstance(value, list):
-                self.collapse_tags_bool = True
                 self.collapsed_tags.append(tag)
                 self.__dict__.update({tag: ', '.join(set(value))})
 
     def __repr__(self):
-        return '%s(artist="%s", album="%s", title="%s", filename="%s")' % (
+        return '%s(artist="%s", album="%s", title="%s", file="%s")' % (
             self.__class__.__name__,
             self.artist,
             self.album,
@@ -126,12 +126,15 @@ class Track:
             fmt = '%M:%S'
         return time.strftime(fmt, temps)
 
-    def get_artist(self):
-       """Get artist object from track"""
-       name = self.artist
-       if self.albumartist and self.albumartist != 'Various Artists':
-           name = self.albumartist
-       return Artist(name=name, mbid=self.musicbrainz_artistid)
+    @property
+    def Artist(self):
+        """Get artist object from track"""
+        if not self.artist:
+            if not self.musicbrainz_artistid:
+                return Artist(name='[unknown]',
+                              mbid='125ec42a-7229-4250-afc5-e057484327fe')
+            return Artist(name='[unknown]', **self.__dict__)
+        return Artist(**self.__dict__)
 
 # VIM MODLINE
 # vim: ai ts=4 sw=4 sts=4 expandtab