From 5ed4d4dcd2405ea2706aa334c9056332cc026f59 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Wed, 4 Feb 2015 07:40:36 +0100 Subject: [PATCH] browser: download statcounter multi-device export Instead of complex and fuzzy mobile vs desktop calculations, include mobile data using new download option. --- tools/mkusage-statcounter | 49 +++++++++++++-------------------------- 1 file changed, 16 insertions(+), 33 deletions(-) diff --git a/tools/mkusage-statcounter b/tools/mkusage-statcounter index 76fac3d..2465d1a 100755 --- a/tools/mkusage-statcounter +++ b/tools/mkusage-statcounter @@ -6,7 +6,7 @@ use warnings; use Data::Dump 'pp'; use Text::CSV; -our $VERSION = '1.00'; +our $VERSION = '1.01'; my %BROWSERID = qw( IE ie @@ -14,9 +14,14 @@ my %BROWSERID = qw( 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 ); @@ -30,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], @@ -47,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); @@ -92,7 +68,7 @@ sub parsecsv { my $version = $browser =~ s/ (\d\S*)$// ? $1 : 0; given ($browser) { - when (['Browser', 'Browser Version', 'Mobile Browser', 'Mobile vs. Desktop', 'Comparison']) { + when ('Browser Version') { $pct =~ s/^Market Share (?:%|Perc\.) // or break; $pct =~ s/\A\((.*)\)\z/$1/; $count{-date} = $pct; @@ -100,6 +76,13 @@ sub parsecsv { $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; } } -- 2.30.0