countries: rename ez title to eurozone
[sheet.git] / tools / mkusage-statcounter
index 7d699d4b1a1e854d25f576491f79137669cad053..2465d1a10fd1a458103d1612b1235bc867fc1094 100755 (executable)
@@ -6,15 +6,22 @@ use warnings;
 use Data::Dump 'pp';
 use Text::CSV;
 
+our $VERSION = '1.01';
+
 my %BROWSERID = qw(
        IE          ie
        Firefox     firefox
        Safari      safari
        Safari-iPad ios_saf
        Chrome      chrome
+       Chromium    chrome
        Opera       opera
+       BlackBerry  bb
 
+       IEMobile    ie_mob
        Android     android
+       Chrome-for-Android and_chr
+       UC-Browser  and_uc
        iPhone      ios_saf
        iPod-Touch  ios_saf
 );
@@ -28,6 +35,8 @@ if (@ARGV) {
        my %param = (
                bar             => 1,
                region_hidden   => 'ww', # Worldwide
+               device_hidden   => 'desktop%2Bmobile%2Btablet%2Bconsole',
+               'multi-device'  => 'true',
                granularity     => 'monthly',
                fromMonthYear   => $ARGV[0],
                toMonthYear     => $ARGV[1] // $ARGV[0],
@@ -45,37 +54,6 @@ if (@ARGV) {
                open my $input, '<', \$download or die $!;
                parsecsv($input);
        }
-
-       {
-               my $url = $site.'mobile_vs_desktop';
-               my $download = LWP::Simple::get($url) or warn "No data from $url\n";
-               open my $input, '<', \$download or die $!;
-               parsecsv($input);
-
-               my %mult = map {
-                       $_ => ( delete $count{$_} )->{0} / 100,
-               } qw(Desktop Mobile);
-
-               # apply desktop multiplier with inverse of mobile (reverted below)
-               for (values %count) {
-                       ref $_ eq 'HASH' or next;
-                       $_ *= $mult{Desktop} / $mult{Mobile} for values %$_;
-               }
-               $count{Opera} = delete $count{opera};  # preserve
-
-               $url = $site.'mobile_browser';
-               $download = LWP::Simple::get($url) or warn "No data from $url\n";
-               open $input, '<', \$download or die $!;
-               parsecsv($input);
-
-               # apply mobile multiplier to everything (undoing it for desktop)
-               for (values %count) {
-                       ref $_ eq 'HASH' or next;
-                       $_ *= $mult{Mobile} for values %$_;
-               }
-               $count{op_mini} = delete $count{opera};  # mobile distinction
-               $count{opera}   = delete $count{Opera};  # restore desktop
-       }
 }
 else {
        parsecsv(\*STDIN);
@@ -90,12 +68,21 @@ sub parsecsv {
 
                my $version = $browser =~ s/ (\d\S*)$// ? $1 : 0;
                given ($browser) {
-                       when (['Browser Version', 'Mobile Browser', 'Mobile vs. Desktop']) {
-                               $pct =~ s/^Market Share % // and $count{-date} = $pct;
+                       when ('Browser Version') {
+                               $pct =~ s/^Market Share (?:%|Perc\.) // or break;
+                               $pct =~ s/\A\((.*)\)\z/$1/;
+                               $count{-date} = $pct;
                        }
                        $browser =~ tr/ /-/;
                        $browser = $_ for $BROWSERID{$browser} // ();
                        $version =~ s/\.0$//;
+
+                       # desktop variant has version, mobile doesn't
+                       if ($version eq '0') {
+                               $browser = 'op_mini' if $browser eq 'opera';
+                               $browser = 'and_ff'  if $browser eq 'firefox';
+                       }
+
                        $count{$browser}->{$version} += $pct;
                }
        }