
Otóż na razie udało mi się podmienić co mi się udało (czyli że niewiele) i powiedzmy że byłoby okej, bo Pingwin zagruchał, czy też zagadał. Byłoby, gdyby nie dwie rzeczy. Używam Jabbera, a Pidgin nie usuwa z treści wiadomości znaczników XML i wychodzi mi coś w stylu:
Chciałbym aby znaczniki (i ewentualnie adresy [url]http://,[/url] ftp:// i inne) były wycinane czy też zamieniane na spacje. Ponadto do programu który opiekuje się "mówieniem" warto byłoby przerzucać ciągi w jakimś normalnym kodowaniu (i teraz nie wiem czy to ma być utf8 czy iso8859-2).wieksze body mniejsze Czesc co porabiasz? wieksze przez body mniejsze
Kod: Zaznacz cały
#!/usr/bin/env python
def speak(account, sender, message, conversation, flags):###### TTS ###############################
bus = dbus.SessionBus()
obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")
UINnick = {} ########### Dictionary for conversion UIN->Nickname ###############
try: #if entry exists use nickname from dictionary UINnick
nick = UINnick[sender]
except KeyError: #else use UIN
nick = sender
tmp = open('/tmp/pidginsay.tmp','w') #tmp file for TTS
text = '%s' % (message)
import sys ############ Encode text -> system encoding #######################
# Encoding der Standardausgabe herausfinden
stdout_encoding = sys.stdout.encoding or sys.getfilesystemencoding()
# Nachricht umwandeln (unicode -> Ausgabe-Encoding)
text_out = text.encode(stdout_encoding)
tmp.write(text_out) ############ write file ###########################################
tmp.close()
import os ############ execute TTS script ###################################
import subprocess
cmd = 'milena_say -F /tmp/pidginsay.tmp'
subprocess.call(cmd,shell=True)
tmp = open('/tmp/pidginsay.tmp','w')#### clear file - why not... ####################
tmp.close()
import dbus, gobject ############ get DBUS signal ######################################
from dbus.mainloop.glib import DBusGMainLoop
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
bus.add_signal_receiver(speak,
dbus_interface="im.pidgin.purple.PurpleInterface",
signal_name="ReceivedImMsg")
loop = gobject.MainLoop()
loop.run()
// edit: w którejś linijce należy zmienić (stdout_encoding) na (iso8859-2), względnie do polecenia dodać odpowiednie opcje
// edit: viewtopic.php?t=98770