aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--skype/skyped.py73
1 files changed, 36 insertions, 37 deletions
diff --git a/skype/skyped.py b/skype/skyped.py
index 12a54742..7c9afdb8 100644
--- a/skype/skyped.py
+++ b/skype/skyped.py
@@ -34,39 +34,54 @@ def utf8_encode(local_str):
return local_str
def sig_handler(signum, frame):
- print 'Caught signal %d, exiting.' % signum
mainloop.quit()
def input_handler(fd, io_condition):
input = fd.recv(1024)
for i in input.split("\n"):
- if i:
- fd.send(skype.send(i.strip()) + "\n")
+ if i:
+ fd.send(skype.send(i.strip()) + "\n")
return True
+def server(host, port):
+ sock = socket.socket()
+ sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ sock.bind((host, port))
+ sock.listen(1)
+ gobject.io_add_watch(sock, gobject.IO_IN, listener)
+
+def listener(sock, *args):
+ global conn
+ conn, addr = sock.accept()
+ fileno = conn.fileno()
+ gobject.io_add_watch(conn, gobject.IO_IN, input_handler)
+ return True
+
+def dprint(msg):
+ if len(sys.argv) > 1 and sys.argv[1] == "-d":
+ print msg
+
class SkypeApi(dbus.service.Object):
def __init__(self):
bus = dbus.SessionBus()
+ try:
+ self.skype_api = bus.get_object(SKYPE_SERVICE, '/com/Skype')
+ except dbus.exceptions.DBusException:
+ sys.exit("Can't find any Skype instance. Are you sure you have started Skype?")
- try:
- self.skype_api = bus.get_object(SKYPE_SERVICE, '/com/Skype')
- except dbus.exceptions.DBusException:
- sys.exit("Can't find any Skype instance. Are you sure you have started Skype?")
-
- reply = self.send('NAME ' + CLIENT_NAME)
- if reply != 'OK':
- 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')
+ reply = self.send('NAME ' + CLIENT_NAME)
+ if reply != 'OK':
+ 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')
# skype -> client (async)
@dbus.service.method(dbus_interface='com.Skype.API')
def Notify(self, msg_text):
global conn
text = utf8_decode(msg_text)
- print '<<', text
+ dprint('<< ' + text)
if conn:
conn.send(msg_text + "\n")
@@ -74,34 +89,18 @@ class SkypeApi(dbus.service.Object):
def send(self, msg_text):
if not len(msg_text):
return
- print '>> ', msg_text
+ dprint('>> ' + msg_text)
try:
reply = utf8_decode(self.skype_api.Invoke(utf8_encode(msg_text)))
except dbus.exceptions.DBusException, s:
reply = str(s)
- print '<< ', reply
+ dprint('<< ' + reply)
return reply
-dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
-skype = SkypeApi()
-signal.signal(signal.SIGINT, sig_handler)
-
-mainloop = gobject.MainLoop()
-
-def server(host, port):
- '''Initialize server and start listening.'''
- sock = socket.socket()
- sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- sock.bind((host, port))
- sock.listen(1)
- gobject.io_add_watch(sock, gobject.IO_IN, listener)
-def listener(sock, *args):
- '''Asynchronous connection listener. Starts a handler for each connection.'''
- global conn
- conn, addr = sock.accept()
- fileno = conn.fileno()
- gobject.io_add_watch(conn, gobject.IO_IN, input_handler)
- return True
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()