#!/usr/bin/env python import os import sys import gobject import dbus if getattr(dbus, 'version', (0,0,0)) >= (0,41,0): import dbus.glib class GajimSpeech: def __init__(self): """ Configuration vars """ self.conf = { 'language' : "spanish" } self.bus = dbus.SessionBus() self.obj = self.bus.get_object("org.gajim.dbus", "/org/gajim/dbus/RemoteObject") self.gajim = dbus.Interface(self.obj, "org.gajim.dbus.RemoteInterface") self.gajim.connect_to_signal('NewMessage', self.on_new_message) def on_new_message(self, udi): account = udi[0] sender = udi[1][0] msg = udi[1][1] sender = sender[:sender.find('/')] for contact in self.gajim.list_contacts(account): jid = contact['jid'] if (jid == sender) and (sender != ""): sender = contact['name'] break f = open(os.environ['HOME'] + "/.gajim-festival.txt", "w+") f.write("%s dice %s" % (sender,msg)) f.close() if (os.fork() == 0): os.execvp("festival", ["festival", "--language", self.conf['language'], "--tts", os.environ['HOME'] + "/.gajim-festival.txt"]) def run(self): self.mainloop = gobject.MainLoop() self.mainloop.run() if __name__ == '__main__': gs = GajimSpeech() gs.run()