$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};
}
}
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