www.Rivin.de
https://www.rivin.de/forum/

Python Skript zum Logs verarbeiten.
https://www.rivin.de/forum/viewtopic.php?f=26&t=9176
Seite 1 von 1

Autor:  Desmond [ Sa 22. Nov 2014, 20:09 ]
Betreff des Beitrags:  Python Skript zum Logs verarbeiten.

Hallo,

ich arbeite derzeit an einem kleinen Skript um die NWN-Logs in eine etwas lesbarer Form zu bringen.

Bis her kommt das folgende heraus:

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.

Ideen was man noch machen sollte, damit es noch besser Lesbar wird?

Autor:  Feuervogel [ Sa 22. Nov 2014, 20:49 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Hört sich gut an und ich bin interessiert, früher hatte ich den Logcutter, läuft aber unter WIn7 bei mir nicht.

Autor:  m8thy [ So 23. Nov 2014, 01:36 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Sieht sehr gut aus und ist viel übersichtlicher. Kann man eventuell bei den Namen noch was kürzen? Da reicht vielleicht der Vorname - das kürzt noch mal etwas Platz

Autor:  anima [ So 23. Nov 2014, 01:50 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Find ich gut!

Autor:  Lionet [ So 23. Nov 2014, 02:00 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Geil. Wie vewrwende ich das?

Autor:  Luna [ So 23. Nov 2014, 09:53 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Ich find das so schon ok, auch mit den vollständigen Namen. Ähnlich oder mehrfache Vornamen können ja immer mal vorkommen. Daher würde ich as auch so wie es ist nutzen.

Autor:  Desmond [ So 23. Nov 2014, 11:44 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Bisher sieht das ganze so aus und läuft unter Python 2.X.

Das ist noch alles andere als elegant programmiert.

Code:
# -*- coding: utf-8 -*-
"""
Spyder Editor

"""

import pylab

with open('/home/aldero/test.txt','r') as f: #<-------------- Hier muss der Pfad zu eurem Log hin
    content = f.readlines()

content2=[]

for line in content:
    if '[Talk]' in line:
        info,text=line.split(': [Talk]')
        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)


with open('/home/aldero/Log_Forum.txt','w') as f:  #<--------- Hier kommt der Pfad zur Datei
    for i in xrange(content2.shape[0]):
        if i==0:
            f.write('[b]'+content3[i,0]+' [i]'+ content3[i,1] +'[/i] :[/b] \n' +content2[i,1])
        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' +content2[i,1])
               
f.close()
#"""


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*
*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.*
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.
*nickt gen Amua* Grüße Baronin.

Autor:  Kay [ So 23. Nov 2014, 12:11 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Ich persönlich fand es angenehmer zu lesen und übersichtlicher, als die Namen links direkt neben dem Gesagten waren.

Autor:  Ameng Xilo [ So 23. Nov 2014, 13:02 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Ja, ich auch. ^^ Ist aber ziemlich geil, das Ding.

Autor:  Luna [ So 23. Nov 2014, 13:08 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Ich find auch die erste Version besser zu lesen.^^

Autor:  Necrobaw [ So 23. Nov 2014, 13:16 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Wenn es noch eine Möglichkeit geben würde, jedem Sprecher eine eigene Farbe zuzuordnen... aber das mag vielleicht einen Schritt zu weit gehen.

Autor:  Animus [ So 23. Nov 2014, 15:01 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Necrobaw hat geschrieben:
Wenn es noch eine Möglichkeit geben würde, jedem Sprecher eine eigene Farbe zuzuordnen... aber das mag vielleicht einen Schritt zu weit gehen.

Wäre natürlich wünschenswert, aber ich nehme an, dass es kaum einstellbar sein dürfte, da das Script selbstständig unterschiedliche Farben entsprechend der Zeichenfolge setzen müsste. Solange wir nicht unterschiedliche Namens-Farben direkt in den IG-Chat einbetten, wird das also auch im Script normalerweise nicht ohne unangemessene Umstände möglich sein.

Betreffend der Lesbarkeit allerdings würde ich auf die fettschrift verzichten und stattdessen einfach Namen und gesprochene Zeilen in unterschiedlicher Schriftfarbe markieren. Evtl. ein helles Blau für gesprochenen Text und Gold für die Namen. Das fette tut jedenfalls in den Augen weh.

Autor:  Desmond [ So 23. Nov 2014, 15:50 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Ich mag die fett geschriebenen Namen eigentlich *g*
Jetzt einmal mit Farbe für jeden Sprecher. Das wirkt nicht wirklich übersichtlicher auf mich.

Vielleicht nur die Namen Einfärben?
Emotes ebenfalls Einfärben?


Meinungen?


20:13 Jessica Telarion von Artief : *sie hebt knapp eine Braue* Vertretet ihr die Kanzlerin?
20:14 Fira Feuerschweif Kaeri : Ich bin die Kanzlerin. Ich schrieb doch, dass Ihr nicht verwundert sein sollt mich zu erblicken nach dem Zwischenfall.
20:15 Jessica Telarion von Artief : *sie blickt ein wenig zweifelnd drein und sieht fragend zu Ralthus*
20:15 Ralthus von Hohezinn : *nickt* Es ist die Kanzlerin Feuerschweif.
20:15 Jessica Telarion von Artief : *sie... nickt.. langsam*
20:16 Fira Feuerschweif Kaeri : Mein Bericht zu diesem Vorfall ist jedoch erst für einen späteren Zeitpunkt angesetzt.
20:16 Jessica Telarion von Artief : Nun, wenn der Hofmagus es bestätigt, will ich es nicht in Zweifel ziehen - bitte verzeiht meinen Argwohn, Kanzlerin. Aber trotz zehnjähriger Erfahrung auf dem Schlachtfeld habe ich dergleichen noch nicht erlebt.
20:16 Jessica Telarion von Artief : ((sorry)9
20:17 Amua Neftarie Tua von Kassar : zwischenfall?
20:17 Ralthus von Hohezinn : Ihr seid mit den Wahlmöglichkeiten für die Sitzungsordnung vertraut?
20:18 Jessica Telarion von Artief : Ja, sie sind mir geläufig und ich las das Protokoll der letzten Sitzung. Eine unnötige Verkomplizierung. Es wäre ausreichend gewesen, die Leitung bei der Kanzlerin zu lassen.
20:18 Fira Feuerschweif Kaeri : Ich hatte einen kurzen Bericht hierzu hinterlassen. Es gab einen Angriff vor Franks Taverne.
20:19 Ralthus von Hohezinn : Bedauerlich das ihr bei der letzten Sitzung nicht anwesend wart. Eine Stimme der Vernunft mehr hätte nicht geschadet.
20:19 Fira Feuerschweif Kaeri : Doch hätte sie das Stimmgewicht nicht durchbrochen.
20:20 Lucian Grave : Nabend
20:20 Ralthus von Hohezinn : Guten Abend Baron Grave.
20:20 Lucian Grave : brennt das irgendwo, es riecht etwas verbrannt hier *nachhakend*
20:20 Fira Feuerschweif Kaeri : Meinen Gruß
20:20 Amua Neftarie Tua von Kassar : Guten abend euch, baron Grave
20:21 Bartlen Lenbach : *er kommt mit einigen Akten heran* Guten Abend, Baron Grave, Baronin Kassar, Marschall von Artief, Hofmagus von Hohezinn, Kanzlerin Feuerschweif.
20:21 Ralthus von Hohezinn : Herr Lenbach *nickt Bartlen zu*
20:21 Fira Feuerschweif Kaeri : Ich verstehe, Ihr habt noch nach dem Feuer sehen müssen.
20:21 Bartlen Lenbach : Es tut mir leid, dass es so kurzfristig war, konnte mein Punkt noch in die Tagesordnung übernommen werden?
20:21 Amua Neftarie Tua von Kassar : euch eben so, herr Lenbach ein guten Abend
20:21 Lucian Grave : *nimmt Platz*
20:21 Ralthus von Hohezinn : *nickt* Ich habe es aufgenommen.

Autor:  Ameng Xilo [ So 23. Nov 2014, 15:52 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Ich finde das eigentlich ganz gut! ^^

Autor:  Lafaellar [ So 23. Nov 2014, 16:00 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Ich fände es besser die Namen der Sprecher zu färben und den Text in Emotes und Gesprochenes farblich zu trennen.

Autor:  Necrobaw [ So 23. Nov 2014, 16:35 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Wir kommen wohl in den Bereich der Geschmackssache.

Autor:  Desmond [ So 23. Nov 2014, 17:06 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

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*

Autor:  Necrobaw [ So 23. Nov 2014, 17:32 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

nice.

Autor:  Ameng Xilo [ So 23. Nov 2014, 17:57 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Und wie genau nutze ich das konkret für Leute, die zum ersten Mal von Python hören? :D

Heruntergeladen habe ich mir das Python 2.7.8 schon und den Pfad meiner Logdatei hab ich an der angegebenen Stelle hinterlegt. Aber wie bringe ich das Skript da rein und wie sorge ich dafür, dass es das ausführt?

Autor:  Desmond [ So 23. Nov 2014, 19:12 ]
Betreff des Beitrags:  Re: Python Skript zum Logs verarbeiten.

Welches Betriebssystem benutzt du?

Ich empfehle das Paket hier:

http://sourceforge.net/projects/winpyth ... 7/2.7.6.3/

Da ist Python drin und eine gute Entwicklungsumgebung (Spyder)
In der erstellt man ein neues File und kopiert den Text von hier einfach rein.
Dann die Anpassungen und man kann die Datei durchlaufen lassen. (Grünes Dreieck ob in der Werkzeugleiste)

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/