Code:
# -*- coding: utf-8 -*-
"""
Spyder Editor
This temporary script file is located here:
/home/aldero/.spyder2/.temp.py
"""
import pylab
########################################
# Einstellungen
#######################################
Show_Talk=True # Zeige normalen Chat
Show_Whisper=False # Zeige geflüsterte Nachtrichten
Show_Tell=False # Zeige PMs
Color_Speaker=True # Färbe Text ein
Color_Speaker_Emote=True # Färbe Emotes wie Sprecher
Color_Name=True # Färbe Name des Sprechers
Outputformat='Line' # 'Block' # Format der Ausgabe Line - Jede Zeile wird vollständig angegeben. Block - Falls ein Sprecher mehrfach nacheinander spricht wird der Name nur einmal angezeigt bis der Sprecher wechselt
Loginfo=True
########################################
# Programm
########################################
with open('/home/aldero/test.txt','r') as f: #<------- Pfad zum Log
content = f.readlines()
content2=[]
for line in content:
if Show_Talk:
if '[Talk]' in line:
info,text=line.split(': [Talk]')
content2.append([info,text])
if Show_Tell:
if '[Tell]' in line:
info,text=line.split(': [Tell]')
content2.append([info,text])
if Show_Whisper:
if '[Whisper]' in line:
info,text=line.split(': [Whisper]')
content2.append([info,text])
content2=pylab.array(content2)
for i in xrange(content2.shape[0]):
content2[i,1]=content2[i,1].replace('<','[')
content2[i,1]=content2[i,1].replace('>',']')
if len(content2[i,0].split(']'))>2:
content2[i,0]=content2[i,0].split(']')[0][1:] +' '+ content2[i,0].split(']')[2]
elif len(content2[i,0].split(']'))==2:
content2[i,0]=content2[i,0].split(']')[0][1:] +' '+ content2[i,0].split(']')[1]
content3=[]
for i in xrange(content2.shape[0]):
content3.append([content2[i,0].split(' ')[0],content2[i,0].split(' ')[1],content2[i,1]])
content3=pylab.array(content3)
#Scan for speakers
names=pylab.sort(content3[:,1])
name_List=[]
for name in names:
if (name in name_List) ==False:
name_List.append(name)
#Check if Speaker name contains board syntax
for i in xrange(len(name_List)):
if ('[' in name_List[i]) and not(']' in name_List[i].split('[')[-1]):
name_List[i]=name_List[i]+']'
for j in xrange(content3.shape[0]):
if content3[j,1] in name_List[i]:
content3[j,1]=name_List[i]
color=['AntiqueWhite','Aqua','Aquamarine','Blue','BlueViolet','Brown','BurlyWood','Chartreuse','Chocolate','Coral','CornflowerBlue','Cornsilk','Crimson','DarkGoldenRod','DarkGreen','DarkOrange','DimGray','ForestGreen','Gold','GreenYellow','IndianRed','Khaki','LightSalmon']
names_to_color={name_List[i]:color[i] for i in xrange(len(name_List))}
if Color_Speaker:
for i in xrange(content3.shape[0]):
content3[i,2]=content3[i,2].replace('white',names_to_color[content3[i,1]])
if Color_Speaker_Emote:
for i in xrange(content3.shape[0]):
content3[i,2]=content3[i,2].replace('lightgreen',names_to_color[content3[i,1]])
if Color_Name:
for i in xrange(content3.shape[0]):
content3[i,1]='[color='+names_to_color[content3[i,1]]+']'+content3[i,1]+'[/color]'
with open('/home/aldero/Log_Forum.txt','w') as f: #<------ Pfad zur Output Datei
if Loginfo==True:
if Show_Talk and Show_Tell and Show_Whisper:
f.write('Das Log zeigt private Nachrichten, geflüsterten Text und normalen Chat an. \n')
elif (Show_Talk and not Show_Tell and not Show_Whisper):
f.write('Das Log zeigt [b]keine[/b] private Nachrichten, [b]keine[/b]geflüsterten Nachrichten und normalen Chat an. \n')
elif (not Show_Talk and Show_Tell and not Show_Whisper):
f.write('Das Log zeigt [b]nur[/b] private Nachrichten, [b]keine[/b] geflüsterten Nachrichten und [b]keinen[/b] normalen Chat an. \n')
f.write('Folgende Sprecher tauchen in diesem Skript auf: \n')
for name in name_List:
f.write('[color='+names_to_color[name]+']'+name+'[/color] \n' )
f.write('\n \n \n')
if Outputformat=='Block':
for i in xrange(content3.shape[0]):
if i==0:
f.write('[b]'+content3[i,0]+' [i]'+ content3[i,1] +'[/i] :[/b] \n' +content3[i,2])
else:
if content3[i,1]==content3[i-1,1]:
f.write('\t \t'+content2[i,1])
else:
f.write('[b]'+content3[i,0]+' [i]'+ content3[i,1] +'[/i] :[/b] \n' +content3[i,2])
elif Outputformat=='Line':
for i in xrange(content3.shape[0]):
f.write('[b]'+content3[i,0]+' [i]'+ content3[i,1] +'[/i] :[/b] ' +content3[i,2])
f.close()
#"""
Unter Einstellungen kann man im Skript jetzt selbst Einstellen was angezeigt wird und wie der Text eingefärbt wird.
Zitat:
Das Log zeigt keine private Nachrichten, keinegeflüsterten Nachrichten und normalen Chat an.
Folgende Sprecher tauchen in diesem Skript auf:
Ameng [SL]
Amua Neftarie Tua von Kassar
Bartlen Lenbach
Burgwache
Elona Wolkenmeer Geli'tar
Fira Feuerschweif Kaeri
Jessica Telarion von Artief
Lucian Grave
Ralthus von Hohezinn
Renata Jolana de Teril
Risaku Hiroki
19:46 Ralthus von Hohezinn : *mustert die Frau zu seiner linken*
19:47 Fira Feuerschweif Kaeri : *Die grün erstrahlenden Augen schauen zu Ralthus hinauf als sie sich ihm zuwendet. Sie faltet ihre Hände andächtig vor ihrem Schoß.*
19:49 Ralthus von Hohezinn : *mustert die Robe und dann wieder das Gesicht*
19:49 Ralthus von Hohezinn : *legt die Stirn in Falten*
19:49 Fira Feuerschweif Kaeri : *Die elfischen Züge in ihrem Gesicht sind unübersehbar. Ebenso die Ansätze des flammend roten Haares welches sich unter der Kapuze zeigt.*
19:50 Fira Feuerschweif Kaeri : Uluvathae, Ralthus. *Spricht sie im weichen klang der elfischen Stimme.*
19:50 Ralthus von Hohezinn : Fira?
19:51 Fira Feuerschweif Kaeri : Avavaen.
19:52 Ralthus von Hohezinn : Du bist gestorben? *ungläubig*
19:53 Fira Feuerschweif Kaeri : Ich bin verbrannt und aus meiner Asche wiederauferstanden auf den Willen der Mutter Mystra hin.
19:53 Ralthus von Hohezinn : Und sie gab dir diese Form?
19:53 Fira Feuerschweif Kaeri : Sie ist notwendig Ralthus. Nur eine Elfe vermag Devon zu bezwingen wie du weißt.
19:54 Amua Neftarie Tua von Kassar : Grüße allerseits
19:54 Ralthus von Hohezinn : *nickt* Sie stehen uns also doch bei.
19:54 Ralthus von Hohezinn : *nickt gen Amua* Grüße Baronin.
19:54 Fira Feuerschweif Kaeri : Mystra steht den Tapferen immer bei.
19:54 Fira Feuerschweif Kaeri : Uluvathae
19:55 Ralthus von Hohezinn : Gehen wir in den Sitzungsraum?
19:55 Fira Feuerschweif Kaeri : Avavaen, ich bin auf die Reaktionen gespannt.
19:56 Ralthus von Hohezinn : *spricht dann noch etwas leiser*