#!/usr/bin/env python import xmmsclient import os import sys import time def xmms_connect(name): xmms = xmmsclient.XMMS(name) try: xmms.connect(os.getenv("XMMS_PATH")) except IOError, detail: print "Connection failed:", detail sys.exit(1) return xmms # retrieve current playing id def xmms_playback_id(xmms): result = xmms.playback_current_id() result.wait() if result.iserror(): return 0 id = result.value() return id def get_current_track(xmms, playback_id): result = xmms.medialib_get_info(playback_id) result.wait() if result.iserror(): print "medialib get info returns error, %s" % result.get_error() return None minfo = result.value() try: artist = minfo["artist"] except KeyError: artist = "No Artist" try: title = minfo["title"] except KeyError: title = "No Title" try: bitrate = minfo["bitrate"] except KeyError: bitrate = 0 return "%s - %s [%s]" % (artist, title, bitrate) def main(): last_playback_id = 0 osd_options="\ --font='-b&h-lucida-medium-normal-*-96-*-*-*-p-*-iso10646-1' \ -B black \ -R white \ -b 100 \ --x-offset=50 \ --y-offset=-50 \ --width=900" xmms = xmms_connect("aosd_display") while 1: playback_id = xmms_playback_id(xmms) if playback_id != 0 and playback_id != last_playback_id: last_playback_id = playback_id track = get_current_track(xmms, playback_id) os.system("echo '%s' | /usr/bin/aosd_cat %s" % (track, osd_options)) time.sleep(2) main()