X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fshow%2Fgroups.pl;fp=cmd%2Fshow%2Fgroups.pl;h=02f2f006a71e70718ea31c2d65696341627f7ec6;hb=b26c5204bc58c12fc4d61725ba4f1cfc1a38be45;hp=0000000000000000000000000000000000000000;hpb=d4ff3dc3e6416f64e50a16e7b0daefa456f34048;p=spider.git diff --git a/cmd/show/groups.pl b/cmd/show/groups.pl new file mode 100644 index 00000000..02f2f006 --- /dev/null +++ b/cmd/show/groups.pl @@ -0,0 +1,95 @@ +# +# show recently used groups +# +# by Tommy SM3OSM +# +# $Id$ +# + +use Time::Local; +my $self = shift; +my $to = shift; + +if ($to =~ /\D/) { + return (1, "try sh/chatgroups xxx where xxx is the number of chat messages to search."); +} + +my @out; +my $g= {}; + +$to = 500 unless $to; + +my @chatlog = DXLog::print(undef, $to, $main::systime, 'chat', undef); +my $row; +my ($time, $call, $group); +my $found; +my %month = ( + Jan => 0, + Feb => 1, + Mar => 2, + Apr => 3, + May => 4, + Jun => 5, + Jul => 6, + Aug => 7, + Sep => 8, + Oct => 9, + Nov => 10, + Dec => 11, + ); + +@chatlog = reverse @chatlog; +foreach $row(@chatlog) { + ($time, $call, $group) = ($row =~ m/^(\S+) (\S+) -> (\S+) /o); + if (!exists $g->{$group}) { + $time =~ m/^(\d\d)(\w{3})(\d{4})\@(\d\d):(\d\d):(\d\d)/o; + $g->{$group}->{sec} = timegm($6, $5, $4, $1, $month{$2}, $3-1900); + $time =~ s/\@/ at /; + $g->{$group}->{last} = $time; + push @{ $g->{$group}->{calls} }, $call; + } else { + $found = 0; + foreach (@{ $g->{$group}->{calls} }) { + if (/$call/) { + $found = 1; + last; + } + } + push @{ $g->{$group}->{calls} }, $call unless $found; + } + $g->{$group}->{msgcount}++; +} + +push (@out, "Chat groups recently used:"); +push (@out, "($to messages searched)"); +push (@out, "--------------------------"); +my @calls; +my @l; +my $max = 6; +my $mtext; +foreach $group (sort { $g->{$b}->{sec} <=> $g->{$a}->{sec} } keys %$g) { + @calls = sort( @{ $g->{$group}->{calls} } ); + $mtext = " " . $g->{$group}->{msgcount} . " messages by:"; + push (@out, "$group: Last active " . $g->{$group}->{last}); + if (@calls <= $max) { + push (@out, "$mtext @calls"); + } else { + foreach $call(@calls) { + push @l, $call; + if (@l >= $max) { + if ($max == 6) { + push (@out, "$mtext @l"); + } else { + push (@out, " @l"); + } + @l = (); + $max = 8; + } + } + push (@out, " @l") if (@l); + $max = 6; + @l = (); + } + push (@out, "-"); +} +return (1, @out);