summaryrefslogtreecommitdiffstats
path: root/py3status/modules/spotify.py
diff options
context:
space:
mode:
Diffstat (limited to 'py3status/modules/spotify.py')
-rw-r--r--py3status/modules/spotify.py40
1 files changed, 34 insertions, 6 deletions
diff --git a/py3status/modules/spotify.py b/py3status/modules/spotify.py
index a797bb3..f70afae 100644
--- a/py3status/modules/spotify.py
+++ b/py3status/modules/spotify.py
@@ -5,31 +5,58 @@ This module displays the current "artist - title" playing in Spotify.
Last modified: 2015-03-26
Author: Pierre Guilbert <pierre@1000mercis.com>
License: GNU GPL http://www.gnu.org/licenses/gpl.html
+
+You could conf it in your i3status.conf like so:
+
+
+
+spotify {
+ format = "{title} by {artist} -> {time}"
+}
+
+
"""
from time import time
-import dbus, dbus.proxies
+import dbus
+
class Py3status:
+ """
+ Confiuration parameters:
+ cache_timeout
+ Format of status string placeholders:
+ title - name of the song
+ artist - artiste name (first one)
+ album - album name
+ time - time duration of the song
+ """
# available configuration parameters
cache_timeout = 0
+ format = "{title}: {album} : {artist} : {time}"
def getText(self):
"""
Get the current song metadatas (artist - title)
"""
-
+
bus = dbus.SessionBus()
try:
- self.__bus = bus.get_object('com.spotify.qt', '/')
- self.player = dbus.Interface(self.__bus, 'org.freedesktop.MediaPlayer2')
+ self.__bus = bus.get_object('com.spotify.qt', '/')
+ self.player = dbus.Interface(
+ self.__bus, 'org.freedesktop.MediaPlayer2')
title = self.player.GetMetadata().get('xesam:title')
artist = self.player.GetMetadata().get('xesam:artist')[0]
album = self.player.GetMetadata().get('xesam:album')
- return title + " by " + artist
+ from datetime import timedelta
+ microtime = self.player.GetMetadata().get('mpris:length')
+ time = str(timedelta(microseconds=microtime))
+
+ return self.format.format(title=title,
+ artist=artist, album=album, time=time)
except Exception:
return "Spotify not running"
@@ -40,7 +67,8 @@ class Py3status:
response = {'full_text': ''}
response['cached_until'] = time() + self.cache_timeout
- response['full_text'] = self.getText() or 'py3status module not working as expected'
+ response['full_text'] = self.getText(
+ ) or 'py3status module not working as expected'
return response