/[irc-logger]/trunk/bin/irc-logger.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/bin/irc-logger.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 37 by dpavlin, Sun Jun 25 17:40:59 2006 UTC revision 41 by dpavlin, Tue Oct 24 12:51:49 2006 UTC
# Line 50  my $DSN = 'DBI:Pg:dbname=' . $NICK; Line 50  my $DSN = 'DBI:Pg:dbname=' . $NICK;
50  my $ENCODING = 'ISO-8859-2';  my $ENCODING = 'ISO-8859-2';
51  my $TIMESTAMP = '%Y-%m-%d %H:%M:%S';  my $TIMESTAMP = '%Y-%m-%d %H:%M:%S';
52    
53    my $sleep_on_error = 5;
54    
55  ## END CONFIG  ## END CONFIG
56    
57    
# Line 363  C<me> if not specified will be C<0> (not Line 365  C<me> if not specified will be C<0> (not
365  sub save_message {  sub save_message {
366          my $a = {@_};          my $a = {@_};
367          $a->{me} ||= 0;          $a->{me} ||= 0;
368            $a->{time} ||= strftime($TIMESTAMP,localtime());
369    
370          print          print
371                  $a->{time} ? $a->{time} . " " : strftime($TIMESTAMP,localtime()),                  $a->{time}, " ",
372                  $a->{channel}, " ",                  $a->{channel}, " ",
373                  $a->{me} ? "***" . $a->{nick} : "<" . $a->{nick} . ">",                  $a->{me} ? "***" . $a->{nick} : "<" . $a->{nick} . ">",
374                  " " . $a->{msg} . "\n";                  " " . $a->{msg} . "\n";
# Line 475  POE::Session->create( inline_states => Line 478  POE::Session->create( inline_states =>
478                          my $nr = $1 || 10;                          my $nr = $1 || 10;
479    
480                          my $sth = $dbh->prepare(qq{                          my $sth = $dbh->prepare(qq{
481                                  select nick,count(*) from log group by nick order by count desc limit $nr                                  select
482                                            nick,
483                                            count(*) as count,
484                                            sum(length(message)) as len
485                                    from log
486                                    group by nick
487                                    order by len desc,count desc
488                                    limit $nr
489                          });                          });
490                          $sth->execute();                          $sth->execute();
491                          $res = "Top $nr users: ";                          $res = "Top $nr users: ";
492                          my @users;                          my @users;
493                          while (my $row = $sth->fetchrow_hashref) {                          while (my $row = $sth->fetchrow_hashref) {
494                                  push @users,$row->{nick} . ': ' . $row->{count};                                  push @users,$row->{nick} . ': ' . $row->{count} . '/' . $row->{len} . '=' . sprintf("%.2f", $row->{len}/$row->{count});
495                          }                          }
496                          $res .= join(" | ", @users);                          $res .= join(" | ", @users);
497                  } elsif ($msg =~ m/^last.*?\s*(\d*)/i) {                  } elsif ($msg =~ m/^last.*?\s*(\d*)/i) {
498    
499                          foreach my $res (get_from_log( limit => $1 )) {                          foreach my $res (get_from_log( limit => ($1 || 100) )) {
500                                  print "last: $res\n";                                  print "last: $res\n";
501                                  from_to($res, $ENCODING, 'UTF-8');                                  from_to($res, $ENCODING, 'UTF-8');
502                                  $_[KERNEL]->post( $IRC_ALIAS => privmsg => $nick, $res );                                  $_[KERNEL]->post( $IRC_ALIAS => privmsg => $nick, $res );
# Line 532  POE::Session->create( inline_states => Line 542  POE::Session->create( inline_states =>
542                  warn "## indetify $NICK\n";                  warn "## indetify $NICK\n";
543                  $_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "IDENTIFY $NICK" );                  $_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "IDENTIFY $NICK" );
544          },          },
545            irc_disconnected => sub {
546                    warn "## disconnected, reconnecting again\n";
547                    $_[KERNEL]->post($IRC_ALIAS => connect => $CONNECT);
548            },
549            irc_socketerr => sub {
550                    warn "## socket error... sleeping for $sleep_on_error seconds and retry";
551                    sleep($sleep_on_error);
552                    $_[KERNEL]->post($IRC_ALIAS => connect => $CONNECT);
553            },
554  #       irc_433 => sub {  #       irc_433 => sub {
555  #               print "# irc_433: ",$_[ARG1], "\n";  #               print "# irc_433: ",$_[ARG1], "\n";
556  #               warn "## indetify $NICK\n";  #               warn "## indetify $NICK\n";

Legend:
Removed from v.37  
changed lines
  Added in v.41

  ViewVC Help
Powered by ViewVC 1.1.26