Skip to content

Instantly share code, notes, and snippets.

@FreeSlave
Created November 2, 2018 17:58
Show Gist options
  • Save FreeSlave/75cc12ca80368aac2208499c78c617f7 to your computer and use it in GitHub Desktop.
Save FreeSlave/75cc12ca80368aac2208499c78c617f7 to your computer and use it in GitHub Desktop.
Writing currently playing clementine track to file
#!/usr/bin/python
import dbus
import dbus.mainloop.glib
import glib
dbus.mainloop.glib.DBusGMainLoop (set_as_default = True)
session_bus = dbus.SessionBus()
def write_track(track):
f = open( 'now_playing.txt', 'w' )
f.write( track )
f.close()
def get_track():
global properties_manager
metadata = properties_manager.Get('org.mpris.MediaPlayer2.Player', 'Metadata')
return (metadata['xesam:artist'][0] if 'xesam:artist' in metadata else 'Unknown') + ' - ' + (metadata['xesam:title'] if 'xesam:title' in metadata else 'Unknown')
def property_changed(one,two,three):
global properties_manager
global track
metadata = properties_manager.Get('org.mpris.MediaPlayer2.Player', 'Metadata')
track2 = get_track()
if track != track2:
track = track2
write_track(track)
player = session_bus.get_object('org.mpris.MediaPlayer2.clementine', '/org/mpris/MediaPlayer2')
properties_manager = dbus.Interface(player, 'org.freedesktop.DBus.Properties')
metadata = properties_manager.Get('org.mpris.MediaPlayer2.Player', 'Metadata')
track = get_track()
write_track(track)
properties_manager.connect_to_signal ("PropertiesChanged", property_changed)
mainloop = glib.MainLoop()
mainloop.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment