| Home | Site Map | | ||
| CUBISTCODE | ||
|
Notification window for Xmms2 track change
#!/usr/bin/env python
# display_track.py
# show osd notification on xmms2 track change
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()
Tags: python, scripts, xmms2
|
| Home | Site Map | |