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
);
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],
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);
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;
}
}