]> kaliko git repositories - mpd-sima.git/blobdiff - sima/lib/track.py
doc: Update docstrings
[mpd-sima.git] / sima / lib / track.py
index 846abce0f76ba4da1347573009f320afcc0cee47..a1a452af07fd8f1b955a63ca3e10f9d30e5f5bc8 100644 (file)
@@ -23,7 +23,8 @@
 
 import time
 
-from .meta import Artist, SEPARATOR
+from .meta import Artist, Album, SEPARATOR
+
 
 class Track:
     """
@@ -33,13 +34,14 @@ class Track:
     :param str file: media file, defaults to ``None``
     :param int duration: duration in second, defaults to 0
     :param int pos: position in queue, defaults to -1
-    :param str title|artist|album: defaults to ""
-    :param str musicbrainz_artistid|musicbrainz_albumartistid: MusicBrainz IDs, defaults to ``None``
+    :param str title|artist|album|albumartist: defaults to ""
+    :param str musicbrainz_{artistid|albumartistid|albumid|trackid}: MusicBrainz IDs, defaults to ``None``
     """
 
     def __init__(self, file=None, duration=0, pos=-1, **kwargs):
         self.title = self.artist = self.album = self.albumartist = ''
         self.musicbrainz_artistid = self.musicbrainz_albumartistid = None
+        self.musicbrainz_albumid = self.musicbrainz_trackid = None
         self.pos = int(pos)
         self._file = file
         self._empty = False
@@ -51,7 +53,7 @@ class Track:
                                  'genre', 'albumartist',
                                  'musicbrainz_artistid',
                                  'musicbrainz_albumartistid']
-        #  have tags been collapsed?
+        # Which tags have been collapsed?
         self.collapsed_tags = list()
         # Needed for multiple tags which returns a list instead of a string
         self._collapse_tags()
@@ -79,9 +81,9 @@ class Track:
 
     def __str__(self):
         return '{artist} - {album} - {title} ({length})'.format(
-                length=self.length,
-                **self.__dict__
-                )
+            length=self.length,
+            **self.__dict__
+        )
 
     def __int__(self):
         return int(self.duration)
@@ -127,8 +129,9 @@ class Track:
     def genres(self):
         """Fetches Genres for the track
         Multivalue genre are dealt with:
-          * when genre tag is multivalued
-          * when single tag uses coma or semi-colon separator
+
+        * when genre tag is multivalued
+        * when single tag uses coma or semi-colon separator
         """
         if 'genre' not in self.__dict__:
             return []
@@ -148,5 +151,12 @@ class Track:
             return Artist(name='[unknown]', **self.__dict__)
         return Artist(**self.__dict__)
 
+    @property
+    def Album(self):
+        """Get the :class:`sima.lib.meta.Album` associated to this track"""
+        if not self.album:
+            return Album(name='[unknown]', **self.__dict__)
+        return Album(name=self.album, **self.__dict__)
+
 # VIM MODLINE
 # vim: ai ts=4 sw=4 sts=4 expandtab