aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVMiklos <vmiklos@frugalware.org>2007-08-21 23:37:43 +0200
committerVMiklos <vmiklos@frugalware.org>2007-08-21 23:37:43 +0200
commit395317200aad6fd04e3355477b8d5fcb1caa45f8 (patch)
tree71bf726b283c2a8b88f11f037dacb1131f61831d
parent0ac1b3e0a5ad6c2d3ecca685f80a30ba1ebc95e3 (diff)
skyped: automatically reconnect if skype is restarted
well, not 100% perfect because we detect the error when we send something. but far better than writing to devnull forever ;)
-rw-r--r--skype/skyped.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/skype/skyped.py b/skype/skyped.py
index ff275a15..12767bdc 100644
--- a/skype/skyped.py
+++ b/skype/skyped.py
@@ -85,7 +85,10 @@ class SkypeApi(dbus.service.Object):
sys.exit('Could not bind to Skype client')
reply = self.send('PROTOCOL 5')
- dbus.service.Object.__init__(self, bus, "/com/Skype/Client", bus_name='com.Skype.API')
+ try:
+ dbus.service.Object.__init__(self, bus, "/com/Skype/Client", bus_name='com.Skype.API')
+ except KeyError:
+ sys.exit()
# skype -> client (async)
@dbus.service.method(dbus_interface='com.Skype.API')
@@ -104,13 +107,17 @@ class SkypeApi(dbus.service.Object):
reply = self.skype_api.Invoke(msg_text)
except dbus.exceptions.DBusException, s:
reply = str(s)
+ if(reply.startswith("org.freedesktop.DBus.Error.ServiceUnknown")):
+ self.remove_from_connection(dbus.SessionBus(), "/com/Skype/Client")
+ mainloop.quit()
dprint('<< ' + reply)
return reply
if __name__=='__main__':
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
- skype = SkypeApi()
signal.signal(signal.SIGINT, sig_handler)
mainloop = gobject.MainLoop()
server('localhost', 2727)
- mainloop.run()
+ while True:
+ skype = SkypeApi()
+ mainloop.run()