Spotify: Changing and displaying song information using dbus interface

Published: by

  • Categories:

I used d-feet to get the information about the methods available to me.

spotify_getinfo.py

#!/usr/bin/python2

import dbus
bus = dbus.SessionBus()
player = bus.get_object('com.spotify.qt', '/')
iface = dbus.Interface(player, 'org.freedesktop.MediaPlayer2')
info = iface.GetMetadata()
# OUT: [dbus.String(u'xesam:album'), dbus.String(u'xesam:title'), dbus.String(u'xesam:trackNumber'), dbus.String(u'xesam:artist'), dbus.String(u'xesam:discNumber'), dbus.String(u'mpris:trackid'), dbus.String(u'mpris:length'), dbus.String(u'mpris:artUrl'), dbus.String(u'xesam:autoRating'), dbus.String(u'xesam:contentCreated'), dbus.String(u'xesam:url')]
print str(info['xesam:artist'][0]) + " - " + str(info['xesam:title'])

spotify_next.sh

#!/bin/bash

dbus-send --print-reply --session --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next

spotify_prev.sh

#!/bin/bash

dbus-send --print-reply --session --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous

You can add global shortcuts. In openbox, I did:

<keybind key="A-w">
  <action name="execute">

	<execute>/home/shadyabhi/spotify_next.sh</execute>
  </action>
</keybind>
<keybind key="A-S-w">
  <action name="execute">

	<execute>/home/shadyabhi/spotify_prev.sh</execute>

  </action>
</keybind>

You can also add the current song notification to your conky.

Spotify: ${color FFFFFF}${execi 1 ~/spotify_getinfo.py}