summaryrefslogtreecommitdiff
path: root/foostats.pl
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-12-24 11:14:45 +0200
committerPaul Buetow <paul@buetow.org>2024-12-24 11:14:45 +0200
commit402bb8d48a17d14829c68dbbb64b2c05148192bf (patch)
tree5f7f38180106d06f2e327aa39d8b051b04e685d0 /foostats.pl
parent7fab9bf623d00d37f0a490d4e39ea314cee9aa95 (diff)
more on this
Diffstat (limited to 'foostats.pl')
-rw-r--r--foostats.pl45
1 files changed, 26 insertions, 19 deletions
diff --git a/foostats.pl b/foostats.pl
index fa43d6e..1b9c777 100644
--- a/foostats.pl
+++ b/foostats.pl
@@ -345,7 +345,7 @@ package Foostats::Aggregator {
}
}
-package Foostats::Outputter {
+package Foostats::FileOutputter {
use JSON;
use Sys::Hostname;
use PerlIO::gzip;
@@ -428,7 +428,9 @@ package Foostats::Reporter {
sub report_for_date ($stats_dir, $date) {
my @stats = stats_for_date($stats_dir, $date);
- print Dumper report_feed_subscribers(@stats);
+ my %data = report_feed_subscribers(@stats);
+
+ printf "%s: Total:%d\n", $date, $data{Total};
}
sub merge_ips ($a, $b) {
@@ -445,27 +447,32 @@ package Foostats::Reporter {
} elsif (ref($a->{$key}) eq 'HASH' && ref($val) eq 'HASH') {
merge($a->{$key}, $val);
} else {
- die "Unable to merge $a and $b";
+ printf "Not merging key '%s': '%s' with '%s'", $key, $a->{$key}, $val;
}
}
}
sub report_feed_subscribers (@stats) {
my (%gemini, %web);
-
+
for my $stats (@stats) {
my $merge = $stats->{proto} eq 'web' ? \%web : \%gemini;
merge_ips($merge, $stats->{feed_ips});
- }
-
- my %report = (
- 'Feed subscribers' => {
- 'Web' => Dumper %web,
- }
+ }
+
+ my %total;
+ merge_ips(\%total, $web{$_}) for keys %web;
+ merge_ips(\%total, $gemini{$_}) for keys %gemini;
+
+ my %data = (
+ 'Total' => scalar keys %total,
+ 'Gemini Gemfeed' => scalar keys $gemini{gemfeed}->%*,
+ 'Gemini Atom' => scalar keys $gemini{atom_feed}->%*,
+ 'Web Gemfeed' => scalar keys $web{gemfeed}->%*,
+ 'Web Atom' => scalar keys $web{atom_feed}->%*,
);
-
- return %report;
+ return %data;
}
sub stats_for_date ($stats_dir, $date) {
@@ -489,7 +496,7 @@ package main {
use Sys::Hostname;
sub parse_logs ($stats_dir) {
- my $out = Foostats::Outputter->new(stats_dir => $stats_dir);
+ my $out = Foostats::FileOutputter->new(stats_dir => $stats_dir);
$out->{stats} = Foostats::Logreader::parse_logs(
$out->last_processed_date('web'),
@@ -507,12 +514,12 @@ package main {
? 'blowfish.buetow.org' : 'fishfinger.buetow.org';
# TODO: Add help output
- GetOptions 'parse-logs' => \$parse_logs,
- 'replicate' => \$replicate,
- 'report' => \$report,
- 'all' => \$all,
- 'stats-dir' => \$stats_dir,
- 'partner-node' => \$partner_node;
+ GetOptions 'parse-logs!' => \$parse_logs,
+ 'replicate!' => \$replicate,
+ 'report!' => \$report,
+ 'all!' => \$all,
+ 'stats-dir=s' => \$stats_dir,
+ 'partner-node=s' => \$partner_node;
parse_logs $stats_dir if $parse_logs or $all;
Foostats::Replicator::replicate($stats_dir, $partner_node) if $replicate or $all;