# prefer deprecated interface to prevent costly ladder search
my $ladderdata = blizget(legacy => profile => 2 => 1 => $profileid => 'ladders');
my @ladders = (
- sort { $b->{characters}->@* <=> $a->{characters}->@* } # population desc
+ sort {
+ $b->{ladder}->[0]->{wins}+$b->{ladder}->[0]->{losses} <=>
+ $a->{ladder}->[0]->{wins}+$a->{ladder}->[0]->{losses}
+ } # activity desc
grep {
!$clanmatch or
all { fc $_->{clanName} eq fc $clanmatch } $_->{characters}->@*
grep { $_->{ladder}->[0]->{division} }
$ladderdata->{currentSeason}->@*
) or die "No matching groups found\n";
-my @members = $ladders[0]->{characters}->@*;
-my %memberidx = map { $members[$_]->{id} => $_ } 0 .. $#members;
+my (@members, %memberidx);
+$memberidx{ $_->{id} } //= push(@members, $_) && $#members
+ for map { $_->{characters}->@* } @ladders;
say JSON->new->canonical->pretty->encode({
name => $members[0]->{clanName},
division => $_->{ladder}->[0]->{ladderName},
rank => $_->{ladder}->[0]->{rank},
members => [map { $memberidx{$_->{id}} } $_->{characters}->@*],
+ wins => $_->{ladder}->[0]->{wins},
+ losses => $_->{ladder}->[0]->{losses},
}} @ladders],
members => [map {
blizget(metadata => profile => 2 => 1 => $_->{id})