PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stats Script


ShAm2k
29.08.2002, 20:43
hi,
ich hatte letztens einen Script gesehen es war in einer HTML File viele Infos: wie z.b. in welchen chan's er ist, sein nick, sein host, sein server, aktuelle querys, und nun wollte ich fragen wie man sowas macht.
bitte kommt jetzt nciht so an: das macht man mit sockets und set, dann bitte etwas genauer *g*


Codeq
29.08.2002, 21:06
hmmm
die queries erstellt der auch? aber dann nur von sich selbst oder?

also wenn du nen bot haben willst, der solche infos erstellt, dann kommt so leid es mir tut um sockets nicht herum ;)

bevor du aber anfängst zu scripten würd ich mir aber erstmal einen plan machen was du überhaupt ausgewertet haben willst. neben den ganzen events on join,text,part,quit,kick,... usw.. gibts ja noch sowas wie, wie viele zeichen jemand pro zeile schreibt, wie viele smilies, wi eoft online... usw..

wenn du das hast, dann kannst du ja anfangen die ganzen events dazu zu schreiben. und dein ergebnis in ne .ini oder normale text datei ablegen...
wenns wirklich live sein soll, dann musst du die daten in eine datenbank eintragen, wenn sie nur einmal am tag oder so aktualisert werden sollen, dann brauchst du nen netten alias der dir deine daten aus den .ini files in ein brauchbares html umwandelt und es dann hochlädt...

also wenn du es noch genauer haben willst von anfang bis ende, dann kann ich gleich loslegen und das scripten... :D
najo ma schaun evtl mach ich dsa ja.. *g*

leg einfach los, wenns irgendwo klemmt, dann kann man dir bestimmt konkreter helfen...

btw.. meinst du sowas?
http://www.coding-board.de/ircstats/
das ding istn C++ programm das die logs durchparst. was ich aber nicht so doll finde, da ab 50MB logs die kiste arg lange braucht... dann lieber live vorrechnen und dann eintragen und beim auswerten der daten den letzten rest errechnen...

ShAm2k
29.08.2002, 21:24
hi,
es ist so eine form:

nick
Verbunden zu: $server
Hostmask: hostmark
Aktuelle Channel: @#channel1
+#channel2
#channel3
Aktuelle Query: Nick1
nick 2

Ausgewähltes Fenster: #channel1

Codeq
29.08.2002, 21:52
also doch nur ne statistik von einem selbst...

öhm.. jonalles was du machst fleissig mitzählen, wann ein channel aufgeht, ein query, hostmask und nick is ja nicht das problem.. dann noch auf wie vielen servern du bist..

und das ganze dann in eine .ini legen... dann in html generieren oder direkt...
solltest dir evtl nen template anlegen damit du mit nem ssi ähnlichem system die html files erstellen kannst... sollte die einfachste lösung sein...

ShAm2k
29.08.2002, 22:38
dann also mit set %....

Codeq
30.08.2002, 00:09
wird auch drin vor kommen ja :)

wo ist nu genau dein problem? wenn du totaler neuling in sachen mircscript bist solltest evtl mit etwas anderem anfange... obwohl das html generieren wohl hier die grösste schwierigkeit darstellt...

ShAm2k
30.08.2002, 07:15
ich bin kein neuling, aber ich weiß nicht wie das klappen soll :(

Codeq
30.08.2002, 11:30
hmmm.. da du ned neu bist sollte das durchzählen der aktiven fenster usw ja ned das problem sein :)
stell dir nun vor du hast dsa ergebnis in einer .ini datei
[stats]
channelfenster=4
channels=#bla,#blub,#coding-board,#ka
nick=Codeq
queryfenster=2
querys=Codeq,ShAm2k

so zB.
dann erstellst du dir eine HTML datei so, wie du es halt angezeigt haben willst
<html><head></head><body bgcolor="black">
...
<font size="+1" color="blue">%%channels%%</font>
...
</body></html>

nun lässt du dir die komplette zeilen anzahl ausgeben und gehst die html datei zeile für zeile durch. und wenn dort nun ein %%*%% vorhanden ist, dann soll dieser durch den wert aus der .ini datei mit dem selben namen, aber ohne %%, ersetzt werden

if (%%*%% iswm $read(template.htm_,%i)) { write -l $+ %i online.html $replace($read(template.htm_,%i),$readini(template.htm_,stats,$remove($ifmatch,%%))) }
else { write -l $+ %i online.html $read(template.htm_,%i) }

so in der art.. und dann die online.html anschauen... wenn du grosse html files parsen willst, dann ist die methode absoluter dreck, da müsstest du dann einen vernünftigen such algorithmus benutzen. string matching oder sowas...