browser: dynamic include of last 3 wikimedia dates
authorMischa POSLAWSKY <perl@shiar.org>
Mon, 27 May 2019 20:33:38 +0000 (22:33 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Wed, 3 Jul 2019 16:15:02 +0000 (18:15 +0200)
Replace hardcoded year by a comparison of the 3rd most recent day.

Loads the entire input in memory for simplicity, which is currently only 1MB
so do not care.

tools/mkusage-wikimedia

index 7a59ba54bc0e8af83469b53ae37e996a112d7b2b..4470c50394cc1d5ed6dfbc2ec257ac225f330e24 100755 (executable)
@@ -34,14 +34,21 @@ my %count = (
        -site   => 'https://analytics.wikimedia.org/',
 );
 
-my $recent = qr/^2019-/;
-
 (readline =~ y/\t//) == 3 or die "unexpected amount of columns in header\n";
+my @lines = readline;
+
+my $recent;  # minimum date to include
+for (reverse @lines) {
+       my ($date) = /(\S+)/;
+       $recent ne $date or next if $recent;  # same day
+       $recent = $date;  # override older date
+       last if state $i++ >= 2;  # repeat twice
+}
 
-while (my $row = readline) {
+for my $row (@lines) {
        $row =~ s/\r?\n\z//;
        my ($date, $name, $version, $pct) = split /\t/, $row;
-       $date =~ $recent or next;
+       $date ge $recent or next;
        $name =~ y/ /-/;
        my $browser = $BROWSERID{$name};
        if (not $browser) {