X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Flib%2Ftrack.py;h=a1a452af07fd8f1b955a63ca3e10f9d30e5f5bc8;hb=c7bfe1ff39adb2eed8d946abbba59f8f9748ca9b;hp=846abce0f76ba4da1347573009f320afcc0cee47;hpb=6052b321d0ac422af68da0732a5814394291e83b;p=mpd-sima.git diff --git a/sima/lib/track.py b/sima/lib/track.py index 846abce..a1a452a 100644 --- a/sima/lib/track.py +++ b/sima/lib/track.py @@ -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