[solved] [python] Pomoc przy modyfikacji skryptu

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
kozlov
Sędziwy Jeż
Sędziwy Jeż
Posty: 50
Rejestracja: 14 kwie 2007, 18:10
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

[solved] [python] Pomoc przy modyfikacji skryptu

Post autor: kozlov »

Po najpierwsze, znalazłem na sieci taki poradnik (http://ubuntuforums.org/showthread.php?t=1029385) do czytakowania wiadomości w Pidginie. Jako że w Pythonie jestem zielony :bag: - proszę o pomoc.

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:
wieksze body mniejsze Czesc co porabiasz? wieksze przez body mniejsze
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).

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()

Somebody?

// 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
EpoX 8PDA3 + Pentium 4 3 GHz (HT) + 2560 MB RAM + GF 7600GT + Microdia. Z Ubu normalnie nie działa tylko HP SJ 2400c.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 7 gości