| 15,17 → 15,17 |
| ## newsstat.pl |
| ## Copyright (C) 2011, 2012 Thomas Lahn <startrek@PointedEars.de> |
| ## Based on work by Garry Knight et al. |
| ## |
| ## |
| ## This program is free software: you can redistribute it and/or modify |
| ## it under the terms of the GNU General Public License as published by |
| ## the Free Software Foundation, either version 3 of the License, or |
| ## (at your option) any later version. |
| ## |
| ## |
| ## This program is distributed in the hope that it will be useful, |
| ## but WITHOUT ANY WARRANTY; without even the implied warranty of |
| ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| ## GNU General Public License for more details. |
| ## |
| ## |
| ## You should have received a copy of the GNU General Public License |
| ## along with this program. If not, see <http://www.gnu.org/licenses/>. |
| |
| 98,7 → 98,7 |
| |
| ## The name of the group to do stats for |
| my $newsgroup_name = $ARGV[0]; |
| $newsgroup_name or usage(); |
| $newsgroup_name // usage(); |
| |
| ## Check for removal flags |
| my $ix; |
| 249,7 → 249,7 |
| |
| ## Disregard article if timestamp is not in range |
| dmsg($timestamp) if DEBUG; |
| if ( $timestamp < $start or $timestamp >= $end ) |
| if ( $timestamp < $start || $timestamp >= $end ) |
| { |
| dmsg("Posting on $date ignored.") if DEBUG; |
| return; |
| 264,11 → 264,11 |
| my $filesize = -s $filename; # get total size of file |
| $totsize += $filesize; # bump total sizes of all files |
| |
| if ( ( not defined $earliest ) or $timestamp < $earliest ) |
| if ( ( not defined $earliest ) || $timestamp < $earliest ) |
| { |
| $earliest = $timestamp; |
| } |
| elsif ( ( not defined $latest ) or $timestamp > $latest ) |
| elsif ( ( not defined $latest ) || $timestamp > $latest ) |
| { |
| $latest = $timestamp; |
| } |
| 306,7 → 306,7 |
| |
| ## The User-Agent and/or X-Newsreader fields |
| ## for User-Agent by poster |
| my $ua = $msg->study('User-Agent') or $msg->study('X-Newsreader'); |
| my $ua = $msg->study('User-Agent') // $msg->study('X-Newsreader'); |
| if ( defined $ua ) |
| { |
| $data{$poster}{'agent'} = $ua; |
| 367,7 → 367,7 |
| } |
| ## are we in a quote line? |
| ## Bill Unruh uses ] quotes, and another poster uses :: |
| elsif ( m{^\s*[>\]]}o or m{^\s*::}o ) |
| elsif ( m{^\s*[>\]]}o || m{^\s*::}o ) |
| { |
| ## bump count of quoted chrs |
| $data{$poster}{'quoted'} += length($_); |
| 395,10 → 395,9 |
| { |
| my $msg = shift; |
| |
| my $ua = |
| $msg->study('User-Agent') |
| or $msg->study('X-Newsreader') |
| or $msg->study('X-Mailer'); |
| my $ua = $msg->study('User-Agent') // $msg->study('X-Newsreader') |
| // $msg->study('X-Mailer'); |
| |
| if ( not defined $ua ) |
| { |
| my $org = $msg->study('Organization'); |
| 672,7 → 671,7 |
| ( 'precision' => 1, 'mode' => 'iec' ) ); |
| printf __"Total number of user agents: %d\n", |
| $formatter->format_number( scalar keys %agents ); |
| print "\n", "=" x 76, "\n" ; |
| print "\n", "=" x 76, "\n"; |
| ######################################## |
| ## Show posters by article count Sec 1; |
| ######################################## |
| 738,6 → 737,8 |
| ##################################### |
| ## Show top posters for original text |
| ##################################### |
| my $topposters_real = 0; |
| |
| unless ( $skipSec{3} ) |
| { |
| if ( keys %data < $topposters ) |
| 748,6 → 749,7 |
| { |
| $count = $topposters; |
| } |
| |
| printf "%s\n", |
| centred( |
| __x( |
| 757,7 → 759,6 |
| 76 |
| ); |
| print "=" x 76, "\n"; |
| my $i = 0; |
| foreach my $poster ( |
| sort { $data{$b}{percent} <=> $data{$a}{percent} } |
| keys %data |
| 766,9 → 767,10 |
| next if $data{$poster}{quoted} == 0; |
| next if $data{$poster}{count} < 5; |
| my $name = substr( $poster, 0, 63 ); |
| printf "%2d. %-63s : %02.2f%%\n", $i + 1, rpad( $poster, 63, "." ), |
| printf "%2d. %-63s : %02.2f%%\n", $topposters_real + 1, |
| rpad( $poster, 63, "." ), |
| $data{$poster}{percent}; |
| last if ( ++$i == $count ); |
| last if ( ++$topposters_real == $count ); |
| } |
| print "\n", "=" x 76, "\n"; |
| } |
| 776,6 → 778,9 |
| ######################################## |
| ## Show bottom posters for original text |
| ######################################## |
| |
| $skipSec{4} = ( $topposters_real <= $topposters ) unless defined $skipSec{4}; |
| |
| unless ( $skipSec{4} ) |
| { |
| if ( keys %data < $topposters ) |
| 786,6 → 791,7 |
| { |
| $count = $topposters; |
| } |
| |
| printf "%s\n", |
| centred( |
| __x( |