webForumDet fria alternativet

IRCstats och smileys?

Webbutvecklingur Webbutveckling - Övrigt

11 svar · 655 visningar · startad av Tengblad

Medlem sedan dec. 19998 277 inlägg
Frågan#1

Vi som sitter och leker i #webforum har just skaffat oss lite stats (igen). Nu kör vi med Pisg som är ett perl-baserat script för att läsa loggfiler och generera statistik. En del i statistiken är hur ofta smileys används i kanalen, men alla smileys som vi använder känns inte igen och jag blir inte klok på hur jag fixar detta.

# Who smiles the most?
                    my $e = '[8;:=%]'; # eyes
                    my $n = '[-oc*^]'; # nose
                    # smileys including asian-style (^^ ^_^' ^^; \o/)
                    if ($saying =~ /(>?$e'?$n[\)pPD\}\]>]|[\(\{\[<]$n'?$e<?|[;:]\)|\([;:]|\^[_o-]*\^[';]|\\[o.]\/)/o) {
                        $stats->{smiles}{$nick}++;
                        $stats->{smileys}{$1}++;
                        $stats->{smileynicks}{$1} = $nick;
                    }

                    # asian frown: ;_;
                    if ($saying =~ /($e'?$n[\(\[\\\/\{|]|[\)\]\\\/\}|]$n'?$e|[;:]\(|\):|;_+;|T_+T|-[._]+-)/o and
                        $saying !~ /\w+:\/\//o) {
                        $stats->{frowns}{$nick}++;
                        $stats->{smileys}{$1}++;
                        $stats->{smileynicks}{$1} = $nick;
                    }

Smileys som vi bl.a vill ska kännas igen:

:o :O :OO  :e :p :P §e :D

Hur får jag till detta?

/red Försökte få bara text för smileys inom kodtaggen men funka inget vidare.

/red2 Nuså, tack Peeer ;)

Medlem sedan dec. 19998 277 inlägg
#2

Ingen som känner sig manad :(

Medlem sedan juni 20004 308 inlägg
#3

Vi försöker i Reguljära uttryck.

Medlem sedan jan. 20021 122 inlägg
#4

Ändra dessa rader:

my $e = '[§8;:=%]';
my $n = '[-oc*^]';
if ($saying =~ /(>?$e'?$n?([\)opPD\}\]>]|O{2})|[\(\{\[<]$n?'?$e<?|[;:]\)|\([;:]|\^[_o-]*\^[';]|\\[o.]\/)/o) {
    $stats->{smiles}{$nick}++;
    $stats->{smileys}{$2}++;
    $stats->{smileynicks}{$2} = $nick;
}

Detta ska acceptera smilies från :) till >§'*OO, jag förutser att den senare kommer bli en stor framgång pga sitt kompakta format och lätt ihågkommna teckensekvens :OO

Medlem sedan dec. 19998 277 inlägg
#5

pettsson skrev:

Ändra dessa rader:

my $e = '[§8;:=%]';
my $n = '[-oc*^]';
if ($saying =~ /(>?$e'?$n?([\)opPD\}\]>]|O{2})|[\(\{\[<]$n?'?$e<?|[;:]\)|\([;:]|\^[_o-]*\^[';]|\\[o.]\/)/o) {
    $stats->{smiles}{$nick}++;
    $stats->{smileys}{$2}++;
    $stats->{smileynicks}{$2} = $nick;
}

Detta ska acceptera smilies från :) till >§'*OO, jag förutser att den senare kommer bli en stor framgång pga sitt kompakta format och lätt ihågkommna teckensekvens :OO

Det där funka inget vidare. Den enda han klara av att känna igen nu var :( dvs det blev sämre än innan.

Medlem sedan jan. 20021 122 inlägg
#6

Nämenvaf, Den funkar för mig...
Pröva med detta ($e och $n insatta)

(>?[§8;:=%]'?[-oc*^]?([\)opPD\}\]>]|O{2})|[\(\{\[<][-oc*^]?'?[§8;:=%]<?|[;:]\)|\([;:]|\^[_o-]*\^[';]|\\[o.]\/)
Medlem sedan dec. 19998 277 inlägg
#7

pettsson skrev:

Nämenvaf, Den funkar för mig...
Pröva med detta ($e och $n insatta)

(>?[§8;:=%]'?[-oc*^]?([\)opPD\}\]>]|O{2})|[\(\{\[<][-oc*^]?'?[§8;:=%]<?|[;:]\)|\([;:]|\^[_o-]*\^[';]|\\[o.]\/)

De vill sig inte heller :(

C:\Program Files\pisg>perl pisg
pisg v0.66 - Perl IRC Statistics Generator

Using config file: pisg.cfg

Statistics for channel #webforum @ DALnet by FarbrorBarbro

Using language template: SE

String found where operator expected at modules//Pisg/Parser/Logfile.pm line 409
, near "$e'?$n[\(\[\\\/\{|]|[\)\]\\\/\}|]$n'"
        (Missing operator before '?$n[\(\[\\\/\{|]|[\)\]\\\/\}|]$n'?)
Backslash found where operator expected at modules//Pisg/Parser/Logfile.pm line
409, near "]\"
        (Missing operator before \?)
Could not load stats analyzer for 'Logfile': syntax error at modules//Pisg/Parse
r/Logfile.pm line 409, near "if ($saying =~ /("
  (Might be a runaway multi-line // string starting on line 402)
syntax error at modules//Pisg/Parser/Logfile.pm line 409, near "+;"
syntax error at modules//Pisg/Parser/Logfile.pm line 453, near "elsif"
Compilation failed in require at (eval 8) line 1.
BEGIN failed--compilation aborted at (eval 8) line 1.
Medlem sedan jan. 20021 122 inlägg
#8

Det är möjligt att ':ar tolkas på något sätt som inte görs i min editor (ConTEXT). Ska det finnas några ' i smilies? Om det ska det, pröva att ersätta ' med \'

Medlem sedan dec. 19998 277 inlägg
#9

pettsson skrev:

Det är möjligt att ':ar tolkas på något sätt som inte görs i min editor (ConTEXT). Ska det finnas några ' i smilies? Om det ska det, pröva att ersätta ' med \'

Inte nödvändigtvis. Men alltså den kod ja skrev i första inlägget funkar som den ska med :) ;) :(. Låt säga att jag bara vill lägga till :e de tycker man ju inte borde vara några problem?

Medlem sedan jan. 20021 122 inlägg
#10

Första koden borde inte funka med smilies utan näsor tycker jag... Jag missar nåt här, jag återkommer i morgon med något mer vaket sinne ;) Att lägga till kolon-e om det funkar ska dock bara vara att lägga till e i denna [\)pPD\}\].

Medlem sedan jan. 20021 122 inlägg
#11

Nu laddade jag ner perl för att prova, och allt utom §-varianterna fungerar (fixade de skumma japanska, ex.vis ^_^ funkade inte med orginalet) Att § inte vill kännas igen förstår jag inte, men det verkar vara något perl-specifikt.

my $e = '[8§;:=%]'; # eyes
my $n = '[-oc*^]'; # nose
# smileys including asian-style (^^ ^_^' ^^; \o/)
if ($saying =~ /(>?$e'?$n?(O{2}|[\)eoOpPD\}\]>])|[\(\{\[<]$n?'?$e<?|\^[_o-]*\^[';]?|\\[o.]\/)/o) {
    $stats->{smiles}{$nick}++;
    $stats->{smileys}{$1}++;
    $stats->{smileynicks}{$1} = $nick;
}

Ovanstående funkar för mig på senaste perlversionen, 5.8.7.

Medlem sedan dec. 19998 277 inlägg
#12

pettsson skrev:

Nu laddade jag ner perl för att prova, och allt utom §-varianterna fungerar (fixade de skumma japanska, ex.vis ^_^ funkade inte med orginalet) Att § inte vill kännas igen förstår jag inte, men det verkar vara något perl-specifikt.

my $e = '[8§;:=%]'; # eyes
my $n = '[-oc*^]'; # nose
# smileys including asian-style (^^ ^_^' ^^; \o/)
if ($saying =~ /(>?$e'?$n?(O{2}|[\)eoOpPD\}\]>])|[\(\{\[<]$n?'?$e<?|\^[_o-]*\^[';]?|\\[o.]\/)/o) {
    $stats->{smiles}{$nick}++;
    $stats->{smileys}{$1}++;
    $stats->{smileynicks}{$1} = $nick;
}

Ovanstående funkar för mig på senaste perlversionen, 5.8.7.

Underbart, funkar kalas! Tackar :D

142 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)