X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Flib%2Ftrack.py;h=503008b6b1a5a844a58b4538c404421dba394589;hb=0f198b5c08dad8fa7d03a70ee57d9142c4e73d21;hp=329392c93746c8098cfe6b6fb99b8e63ac59c5a3;hpb=f2d54b31a8da9852fc532cc90b29623eabe27b9d;p=mpd-sima.git diff --git a/sima/lib/track.py b/sima/lib/track.py index 329392c..503008b 100644 --- a/sima/lib/track.py +++ b/sima/lib/track.py @@ -23,7 +23,7 @@ import time -from .meta import Artist, SEPARATOR +from .meta import Artist, Album, SEPARATOR class Track: """ @@ -31,19 +31,20 @@ class Track: Instantiate with Player replies. :param str file: media file, defaults to ``None`` - :param int time: duration in second, defaults to 0 + :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, time=0, pos=-1, **kwargs): + 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 - self._time = time + self.duration = float(duration) if not kwargs: self._empty = True self.__dict__.update(**kwargs) @@ -84,13 +85,13 @@ class Track: ) def __int__(self): - return self.time + return int(self.duration) def __add__(self, other): - return Track(time=self.time + other.time) + return Track(duration=self.duration + other.duration) def __sub__(self, other): - return Track(time=self.time - other.time) + return Track(duration=self.duration - other.duration) def __hash__(self): if self.file: @@ -113,20 +114,10 @@ class Track: """file is an immutable attribute that's used for the hash method""" return self._file - def get_time(self): - """get time property""" - return self._time - - def set_time(self, value): - """set time property""" - self._time = int(value) - - time = property(get_time, set_time, doc='song duration in seconds (use :attr:`length` for human readable time)') - @property def length(self): - """Get a fancy duration as ``%H:%M:%S`` (use :attr:`time` to get duration in second only)""" - temps = time.gmtime(int(self.time)) #TODO: returns a date not a duration + """Get a fancy duration as ``%H:%M:%S`` (use :attr:`duration` to get duration in second only)""" + temps = time.gmtime(self.duration) #TODO: returns a date not a duration if temps.tm_hour: fmt = '%H:%M:%S' else: @@ -158,5 +149,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