-- statusd_quodlibet.lua -- Ivan Korostelev -- http://ivank.ru/usefull local defaults = { update_interval=1*1000, } local settings=table.join(statusd.get_config("quodlibet"), defaults) function get_quodlibet() local f=io.open(os.getenv('HOME')..'/.quodlibet/current') if not f then return 0, nil, nil else local qlfile = f:read('*a') f:close() local a,b,artist = string.find(qlfile, 'artist=([^\n]*)') if not artist then artist = 'Unknown' end local a,b,title = string.find(qlfile, 'title=([^\n]*)') if not title then local a,b,filename = string.find(qlfile, '~filename=([^\n]*)') if not filename then title = "Unknown" else a,b,title = string.find(filename, '.*/([^/]+)') if not title then title = "Unknown" end end end local a,b,rating = string.find(qlfile, '~#rating=(%d*\.?%d+)') if not rating then rating = 0 else rating = rating*4 end return rating, artist, title end end function update_quodlibet() local rating, artist, song = get_quodlibet() if artist and song then local strrating = "" for i=1,rating do strrating = strrating..'*' end if artist == "Unknown" then statusd.inform("quodlibet", strrating..song) elseif song == "Unknown" then statusd.inform("quodlibet", strrating..artist) else statusd.inform("quodlibet", strrating..artist..' - '..song) end else statusd.inform("quodlibet", "") end quodlibet_timer:set(settings.update_interval, update_quodlibet) end quodlibet_timer = statusd.create_timer() update_quodlibet() .artist..' - '..song) end else statusd.inform("quodlibet", "") end quodlibet_timer:set(settings.update_interval, update_quodlibet) end quodlibet_timer = statusd.create_timer() update_quodlibet()