Notify vorlesen N900: Unterschied zwischen den Versionen
Jochen (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „'''Desktop Notizen vorlesen lassen''' nachdem Stefan den Anfang mit "DBUS auf dem N900" nach dem Treffen [http://blogg.brokenpipe.de/2011/02/dbus-vs-schlange/ vo…“) |
Jochen (Diskussion | Beiträge) |
||
Zeile 2: | Zeile 2: | ||
nachdem Stefan den Anfang mit "DBUS auf dem N900" nach dem Treffen [http://blogg.brokenpipe.de/2011/02/dbus-vs-schlange/ vollendet] hat, hat es mich auch nicht mehr gehalten. DBUS ist zwar "fummelig" (wer braucht schon Fehlermeldungen ;-)), aber letztendlich funktioniert das Abgreifen der Desktopnachrichten und das Weiterleiten an espeak/mbrola nun. Ein Desktopwidget ist es (noch) nicht, aber zum Demonstrieren reichts allemal. | nachdem Stefan den Anfang mit "DBUS auf dem N900" nach dem Treffen [http://blogg.brokenpipe.de/2011/02/dbus-vs-schlange/ vollendet] hat, hat es mich auch nicht mehr gehalten. DBUS ist zwar "fummelig" (wer braucht schon Fehlermeldungen ;-)), aber letztendlich funktioniert das Abgreifen der Desktopnachrichten und das Weiterleiten an espeak/mbrola nun. Ein Desktopwidget ist es (noch) nicht, aber zum Demonstrieren reichts allemal. | ||
+ | |||
+ | Kurze Anleitung: | ||
+ | Es wird das Tweakr Plugin vorausgesetzt. Man muss angeben in welchem Profile die Sprachausgabe erfolgen soll. | ||
+ | Es wird nur dann vorgelesen wenn das passende Profil gesetzt ist und das N900 gesperrt ist oder wenn eine Bluetooth Audioverbindung (Auto freisprechen) aufgebaut ist. | ||
<pre> | <pre> |
Aktuelle Version vom 20. Februar 2011, 21:10 Uhr
Desktop Notizen vorlesen lassen
nachdem Stefan den Anfang mit "DBUS auf dem N900" nach dem Treffen vollendet hat, hat es mich auch nicht mehr gehalten. DBUS ist zwar "fummelig" (wer braucht schon Fehlermeldungen ;-)), aber letztendlich funktioniert das Abgreifen der Desktopnachrichten und das Weiterleiten an espeak/mbrola nun. Ein Desktopwidget ist es (noch) nicht, aber zum Demonstrieren reichts allemal.
Kurze Anleitung: Es wird das Tweakr Plugin vorausgesetzt. Man muss angeben in welchem Profile die Sprachausgabe erfolgen soll. Es wird nur dann vorgelesen wenn das passende Profil gesetzt ist und das N900 gesperrt ist oder wenn eine Bluetooth Audioverbindung (Auto freisprechen) aufgebaut ist.
#!/usr/bin/python import gobject import gconf import os import dbus from dbus.mainloop.glib import DBusGMainLoop config = {} config["tweakr_profile"] = "Home" config["speakprogram"] = "/home/user/mbespeak" lastname = "" playqueue = "" doplay = True gc = None def msg_filter(_bus, msg): global lastname,playqueue,doplay if msg.get_member() != "Notify": return args = msg.get_args_list() #print args if not doplay: return if len(args) >= 5: if lastname != args[3]: print "get: %s schreibt %s" % (args[3], args[4]) playqueue = "%s schreibt: %s" % (args[3], args[4]) lastname = args[3] else: print "get: %s" % (args[4]) playqueue = "%s" % (args[4]) elif args[2] == "Stop" and playqueue != "": print "playing: %s" % (playqueue) os.spawnl(os.P_WAIT, config["speakprogram"], config["speakprogram"], playqueue) playqueue = "" def systemmsg_filter(_bus, msg): global doplay,gc args = msg.get_args_list() #print args if msg.get_member() == "tklock_mode_ind" and len(args) == 1: gv = gc.get("/system/tweakr/current-preset") if gv.get_string() == config["tweakr_profile"]: if args[0] == "locked": doplay = True if args[0] == "unlocked": doplay = False if msg.get_member() == "PropertyChanged" and len(args) >= 2: if args[1] == "connected": doplay = True if args[1] == "disconnected": doplay = False if __name__ == '__main__': gc = gconf.client_get_default() DBusGMainLoop(set_as_default = True) bus = dbus.SessionBus() bus.add_match_string_non_blocking("type='method_call',interface='org.freedesktop.Notifications',member='Notify',path='/org/freedesktop/Notifications'") bus.add_match_string_non_blocking("type='signal',interface='org.freedesktop.DBus.Properties',member='Notify',path='/org/maemo/playback2'") bus.add_message_filter(msg_filter) sbus = dbus.SystemBus() sbus.add_match_string_non_blocking("type='signal',path='/com/nokia/mce/signal',interface='com.nokia.mce.signal',member='tklock_mode_ind'") sbus.add_match_string_non_blocking("type='signal',interface='org.bluez.Audio',member='PropertyChanged'") sbus.add_message_filter(systemmsg_filter) gobject.MainLoop().run()
oder Download unter [1] und das mbrola/espeak Skript samt Anleitung unter Mbrola_arm