index: release v1.18 with only altgr index linked
[sheet.git] / tools / mkusage-wikimedia
1 #!/usr/bin/perl
2 use 5.014;
3 use warnings;
4
5 use Data::Dump 'pp';
6
7 our $VERSION = '1.03';
8
9 my %BROWSERID = qw(
10         IE                      edge
11         IE-Mobile               ie_mob
12         Edge                    edge
13         Edge-Mobile             edge
14         Firefox                 firefox
15         Firefox-Mobile          and_ff
16         Safari                  safari
17         Mobile-Safari           ios_saf
18         Mobile-Safari-UIWebView ios_saf
19         Chrome                  chrome
20         Chromium                chrome
21         Chrome-Mobile           and_chr
22         Chrome-Mobile-iOS       and_chr
23         Android                 and_chr
24         Opera                   opera
25         Opera-Mini              op_mini
26         BlackBerry-WebKit       bb
27         UC-Browser              and_uc
28         Samsung-Internet        samsung
29         Google                  0
30         Other                   0
31 );
32
33 my %count = (
34         -title  => 'Wikimedia',
35         -site   => 'https://analytics.wikimedia.org/',
36 );
37
38 (readline =~ y/\t//) == 3 or die "unexpected amount of columns in header\n";
39 my @lines = readline;
40
41 my $recent;  # minimum date to include
42 for (reverse @lines) {
43         my ($date) = /(\S+)/;
44         $recent ne $date or next if $recent;  # same day
45         $recent = $date;  # override older date
46         last if state $i++ >= 2;  # repeat twice
47 }
48
49 for my $row (@lines) {
50         $row =~ s/\r?\n\z//;
51         my ($date, $name, $version, $pct) = split /\t/, $row;
52         $date ge $recent or next;
53         $name =~ y/ /-/;
54         my $browser = $BROWSERID{$name};
55         if (not $browser) {
56                 warn "unknown browser: $name v$version ($pct)\n"
57                         unless defined $browser or $pct < .005;
58                 next;
59         }
60         $version =~ s/\A-\z/0/;
61         $count{$browser}{$version} += $pct;
62         $count{-total} += $pct;
63         $count{-date} = $date;
64 }
65
66 my $mult = 100 / delete $count{-total};
67 for (values %count) {
68         ref $_ eq 'HASH' or next;
69         $_ *= $mult for values %{$_};
70 }
71
72 say '+', pp(\%count);
73
74 __END__
75
76 =head1 USAGE
77
78         ./mkusage-wikimedia wikipedia-analytics.tsv >browser-usage.inc.pl
79