#!/usr/bin/env python # -*- coding: utf-8 -*- # ---------------------------------------------------------------------------- # # Rhythmsig # # author: Armin Ronacher <armin.ronacher@active-4.com> # # licensed under the GPL # # ---------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or # # modify it under the terms of the GNU General Public License # # as published by the Free Software Foundation; either version 2 # # of the License, or (at your option) any later version. # # ---------------------------------------------------------------------------- # KEY = "GEHEIMER_KEY" ADRESS = "http://meinserver.tdl/pfad/zur/signatur.png" TRACKSTR = "$artist - $title" ################################################################################ from bonobo.activation import activate as get_handle from bonobo.ui import main as mainloop from bonobo import event_source_client_add_listener as add_listener from urllib import urlopen as connect, urlencode from time import sleep import re, sys from os import popen as execute def get_trackinfo(): rhythmbox = get_handle("repo_ids.has('IDL:GNOME/Rhythmbox:1.0')", [], 4) try: details = rhythmbox.getPlayerProperties().getValue("song").value() except: return 0 try: output = {"artist":"", "album":"", "index":"", "title":""} if details.artist: output["artist"] = details.artist if details.album: output["album"] = details.album if details.track_number: output["index"] = details.track_number if details.title: output["title"] = details.title return output except: return 0 def publish_information(trackinfo=None): if trackinfo is None: trackstring = "" else: trackstring = re.sub(r"\$([a-z]*)", r"%(\1)s", TRACKSTR) % trackinfo url = ADRESS + "?" + urlencode({"key": KEY, "update": trackstring}) try: connect(url) except: pass def update(mir=None, doch=None, komplett=None, egal=None): trackinfo = get_trackinfo() if trackinfo == 0: publish_information() else: publish_information(trackinfo) def quit(mir=None, doch=None, komplett=None, egal=None): publish_information() sys.exit() if __name__ == "__main__": execute("rhythmbox &") sleep(5) rhythmbox = get_handle("repo_ids.has('IDL:GNOME/Rhythmbox:1.0')", [], 4) add_listener(rhythmbox.getPlayerProperties(), update, "Bonobo/Property:change:song") add_listener(rhythmbox.getPlayerProperties(), quit, "WIE GEHT DIE ID ZUM PROGRAMMENDE?") #FIXME mainloop()
Das ist der Programmcode.
Aber ich habe keine Ahnung, wie ich die ID rauskriege, um eine Funktion einem Programmende zuzuweisen.
Hat da jemand eine Idee? Oder wie kriege ich dir raus?
btw: bonobo ist geil. Und ich dachte es gibt keine Gnome DCOP Alternative 😉