X-Git-Url: http://royale.zerezo.com/git/?p=irssistats;a=blobdiff_plain;f=irssistats.c;h=b7a855ca2ec362c4e8b13465d5796e67c3bd2a89;hp=579fc39d2c99b55cdb92d54aef73473121b45af8;hb=3908ded2c18f259d9eea9f31600020cf940ada3e;hpb=4f1235aec09bf9214b3ed89ed887024c04aea555 diff --git a/irssistats.c b/irssistats.c index 579fc39..b7a855c 100644 --- a/irssistats.c +++ b/irssistats.c @@ -1,9 +1,10 @@ -/* Usage: cat /path/to/file.log | ./irssistats channel maintainer language theme > /path/to/file.html */ +/* Usage: cat /path/to/file.log | ./irssistats channel maintainer language theme [nickfile] > /path/to/file.html */ #include #include #include #include +#include /* Config */ #define MAXUSERS 5000 @@ -18,7 +19,7 @@ #define MINWORDLENGTH 5 /* irssistats */ -#define VERSION "0.31" +#define VERSION "0.4" #define URL "http://royale.zerezo.com/programmation/irssistats/" /* Counters */ @@ -39,7 +40,7 @@ char *counters[NBCOUNTERS]={"C_SMILE","C_FROWN","C_EXCLAM","C_QUESTION","C_ME","C_TOPIC","C_MODE","C_KICK","C_KICKED","C_URL","C_JOIN","C_NICK","C_MONOLOGUE"}; /* Languages */ -#define NBLANGUAGES 3 +#define NBLANGUAGES 4 #define NBKEYS 38 char *keys[NBLANGUAGES][NBKEYS+1][2]= /* first key used for language name and abbreviation */ { @@ -125,8 +126,50 @@ char *keys[NBLANGUAGES][NBKEYS+1][2]= /* first key used for language name and ab { "C_NICK", "change souvent de nick" }, { "C_MONOLOGUE", "parle beaucoup de monologues" } }, + { /* German language */ + /* contributed by Valentin Gelhorn */ + { "German", "de" }, + { "HEADER", "Statistiken für #%s von %s" }, + { "LEGEND", "Legende" }, + { "LASTDAYS", "Statistik der letzten Tage" }, + { "TOPHOURS", "Stündliche Statistik" }, + { "TOPUSERS", "Die aktivsten Personen" }, + { "OTHERS", "Es bleiben noch %d uneingetragene" }, + { "NBLINES", "Zeilen" }, + { "NICK", "Nick" }, + { "AVGLETTERS", "Buchstaben/Zeile" }, + { "HOURS", "Stunden" }, + { "QUOTE", "Zufällig ausgewaehlte Zitate" }, + { "TOPUSERSTIME", "Die aktivsten Personen zur bestimmten Tageszeit" }, + { "RANDTOPICS", "Ein paar Topics" }, + { "CHANGEDBY", "Gesetzt von" }, + { "NEWTOPIC", "Neues topic" }, + { "RANDURLS", "Ein paar URLs" }, + { "POSTEDBY", "Geschrieben von" }, + { "POSTEDURL", "URL" }, + { "TOPWORDS", "Am häufigsten benutze Wörter" }, + { "WORD", "Wort" }, + { "OCCURRENCES", "Vorkommen" }, + { "BIGNUMBERS", "Ein paar grosse Zahlen" }, + { "NUMBERS", "Zahlen" }, + { "TIME", "%d Zeilen analysiert in %d Sekunden" }, + { "FOOTER", "Statistiken wurden erstellt von" }, + { "C_SMILE", "ist oft glüklich :)" }, + { "C_FROWN", "ist oft traurig :(" }, + { "C_EXCLAM", "schreit oft !" }, + { "C_QUESTION", "stellt viele Fragen ?" }, + { "C_ME", "mag /me'en" }, + { "C_TOPIC", "aendert oft das Topico" }, + { "C_MODE", "aendert oft die Modes" }, + { "C_KICK", "mag /kick'en" }, + { "C_KICKED", "wird oft gekickt"}, + { "C_URL", "schreibt viele URLs"}, + { "C_JOIN", "kann sich nicht entscheiden ob er bleiben oder gehen soll" }, + { "C_NICK", "ändert oft seinen Nick" }, + { "C_MONOLOGUE", "spricht oft Monologe" } + }, { /* Spanish language */ - /* Submitted by Alex */ + /* contributed by Alex */ { "Spanish", "es" }, { "HEADER", "Estadísticas de #%s por %s" }, { "LEGEND", "Leyenda" }, @@ -418,12 +461,14 @@ int main(int argc,char *argv[]) char c; char *nick,*message; char line[MAXLINELENGTH]; + FILE *fic; + regex_t preg; /*** INIT ***/ - if (argc!=5) + if ((argc<5) || (argc>6)) { - fprintf(stderr,"Usage: cat /path/to/file.log | ./irssistats channel maintainer language theme > /path/to/file.html\n\n"); + fprintf(stderr,"Usage: cat /path/to/file.log | ./irssistats channel maintainer language theme [nickfile] > /path/to/file.html\n\n"); fprintf(stderr,"Version :\nirssistats %s\n\n",VERSION); fprintf(stderr,"Supported languages :\n"); for (i=0;i') /* 00:00 <>>>?Nick<<<> the personal message */ + /* 00:00 <>>?Nick<<> the personal message */ { - for (i=11;line[i]!='<';i++); - nick=&line[11]; + for (i=10;line[i]!='<';i++); + nick=&line[10]; + if (line[9]=='>') nick++; message=&line[i+5]; } else /* 00:00 the message */ @@ -594,6 +639,39 @@ int main(int argc,char *argv[]) bestwords(words,0); + /*** ALIAS ***/ + + if (argc==6) + { + if ((fic=fopen(argv[5],"rt"))==NULL) { fprintf(stderr,"can't open nick file\n"); exit(1); } + while (fscanf(fic,"%s",line)==1) + { + user=dichotomic(line); + fscanf(fic,"%s",line); + if (regcomp(&preg,line,0)!=0) { fprintf(stderr,"error in nick file"); exit(1); } + temp=users[user].lines; + for (i=0;i=0)) + { + if (users[i].lines>temp) /* for nick alias, keep the random quote of the most used nick */ + { + strcpy(users[user].quote,users[i].quote); + temp=users[i].lines; + } + users[user].lines+=users[i].lines; + users[user].letters+=users[i].letters; + for (j=0;j<4;j++) users[user].hours[j]+=users[i].hours[j]; + for (j=0;jmax) max=users[user=j].lines; if (user!=-1) { @@ -659,10 +737,12 @@ int main(int argc,char *argv[]) } } printf("\n"); - if (nbusers>NBUSERS) + temp=0; + for (i=0;i<=nbusers;i++) if (users[i].lines>=0) temp++; + if (temp>0) { printf("
"); - printf(L("OTHERS"),nbusers-50); + printf(L("OTHERS"),temp); printf("
\n"); } printf("

\n\n"); @@ -678,7 +758,7 @@ int main(int argc,char *argv[]) for (j=0;j<4;j++) { user=-1; - max=-1; + max=0; for (k=0;kmax) max=users[user=k].hours[j]; if (user!=-1) {