]> kaliko git repositories - mpd-sima.git/blobdiff - sima/lib/track.py
Fixed Track object with MPD >= 0.20 (Closes #12)
[mpd-sima.git] / sima / lib / track.py
index a774a4ceafdceeb7ec7c0c5c57d819c20a35d378..936177851b0d2aa0ea74abc75034f2db945b4aa8 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009, 2010, 2011, 2013, 2014, 2015 Jack Kaliko <kaliko@azylum.org>
+# Copyright (c) 2009, 2010, 2011, 2013, 2014, 2015, 2016 Jack Kaliko <kaliko@azylum.org>
 # Copyright (c) 2009 J. Alexander Treuman (Tag collapse method)
 # Copyright (c) 2008 Rick van Hattem
 #
 # Copyright (c) 2009 J. Alexander Treuman (Tag collapse method)
 # Copyright (c) 2008 Rick van Hattem
 #
@@ -28,7 +28,13 @@ from .meta import Artist, SEPARATOR
 class Track:
     """
     Track object.
 class Track:
     """
     Track object.
-    Instanciate with Player replies.
+    Instantiate with Player replies.
+
+    :param str file: media file, defaults to ``None``
+    :param int time: 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``
     """
 
     def __init__(self, file=None, time=0, pos=-1, **kwargs):
     """
 
     def __init__(self, file=None, time=0, pos=-1, **kwargs):
@@ -48,9 +54,9 @@ class Track:
         #  have tags been collapsed?
         self.collapsed_tags = list()
         # Needed for multiple tags which returns a list instead of a string
         #  have tags been collapsed?
         self.collapsed_tags = list()
         # Needed for multiple tags which returns a list instead of a string
-        self.collapse_tags()
+        self._collapse_tags()
 
 
-    def collapse_tags(self):
+    def _collapse_tags(self):
         """
         Necessary to deal with tags defined multiple times.
         These entries are set as lists instead of strings.
         """
         Necessary to deal with tags defined multiple times.
         These entries are set as lists instead of strings.
@@ -72,8 +78,8 @@ class Track:
         )
 
     def __str__(self):
         )
 
     def __str__(self):
-        return '{artist} - {album} - {title} ({duration})'.format(
-                duration=self.duration,
+        return '{artist} - {album} - {title} ({length})'.format(
+                length=self.length,
                 **self.__dict__
                 )
 
                 **self.__dict__
                 )
 
@@ -116,12 +122,12 @@ class Track:
         """set time property"""
         self._time = int(value)
 
         """set time property"""
         self._time = int(value)
 
-    time = property(get_time, set_time, doc='song duration in seconds')
+    time = property(get_time, set_time, doc='song duration in seconds (use :attr:`length` for human readable time)')
 
     @property
 
     @property
-    def duration(self):
-        """Compute fancy duration"""
-        temps = time.gmtime(int(self.time))
+    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
         if temps.tm_hour:
             fmt = '%H:%M:%S'
         else:
         if temps.tm_hour:
             fmt = '%H:%M:%S'
         else:
@@ -130,7 +136,7 @@ class Track:
 
     @property
     def Artist(self):
 
     @property
     def Artist(self):
-        """Get artist object from track"""
+        """Get the :class:`sima.lib.meta.Artist` associated to this track"""
         if not self.artist:
             if not self.musicbrainz_artistid:
                 return Artist(name='[unknown]',
         if not self.artist:
             if not self.musicbrainz_artistid:
                 return Artist(name='[unknown]',