From 2e347c27459781e7d3b42c4f10b40fc3ebef3d19 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Thu, 22 Aug 2019 00:27:06 +0200 Subject: [PATCH] combine matches played by multiple members Identify games by identical values including time, then only add member numbers like for ladder data. --- getsc2clan | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/getsc2clan b/getsc2clan index 86cb3b8..8c9fe9f 100755 --- a/getsc2clan +++ b/getsc2clan @@ -67,12 +67,13 @@ my (@members, %memberidx); $memberidx{ $_->{id} } //= push(@members, $_) && $#members for map { $_->{characters}->@* } @ladders; -my @games; +my %game; for my $member (map { $_->{id} } @members) { my $usergames = blizget(legacy => @realmget => $member => 'matches'); for ($usergames->{matches}->@*) { - $_->{player} = $memberidx{$member}; - push @games, $_; + my $match = join ':', sort values %{$_}; + $game{$match} //= $_; + push $game{$match}->{players}->@*, $memberidx{$member}; } } @@ -100,5 +101,5 @@ say JSON->new->canonical->pretty->encode({ blizget(metadata => @realmget => $_->{id}) # lacks mmr, fav race (available in new api) } @members], - matches => [nsort_by { -$_->{date} } @games], + matches => [nsort_by { -$_->{date} } values %game], }) =~ s/(?: \G \d,? | \[ ) \K \s+ (?=\d|\])/ /grx; # concat arrays of single digits -- 2.30.0