From a9c5baf3d39b8c67c57c0aef96f819ba04cc0242 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Tue, 30 Apr 2019 22:36:38 +0200 Subject: [PATCH] clan match using legacy ladder interface --- widget.pl | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/widget.pl b/widget.pl index e302c10..1a4e5b5 100644 --- a/widget.pl +++ b/widget.pl @@ -5,10 +5,11 @@ use utf8; use Data::Dump qw( pp ); use LWP::Authen::OAuth2; -use JSON qw( decode_json encode_json ); +use JSON qw( decode_json ); +use List::Util qw( all ); my $profileid = 2138280; -my $ladderid = 213977; +my $clanmatch = 'Inno'; my $bliz = LWP::Authen::OAuth2->new( client_id => '7f0f95ac9529474f854ee8d68a12c3e0', @@ -29,13 +30,20 @@ sub blizget { return decode_json($json); } -my $ladder = blizget(profile => 2 => 1 => $profileid => ladder => $ladderid); -my $team = $ladder->{ladderTeams}->[ $ladder->{ranksAndPools}->[0]->{rank} - 1 ]; +# find largest group consisting entirely of clan members +# prefer deprecated interface to prevent costly ladder search +my $ladders = blizget(legacy => profile => 2 => 1 => $profileid => 'ladders'); +my ($ladder) = ( + sort { $b->{characters}->@* <=> $a->{characters}->@* } # population desc + grep { all { fc $_->{clanName} eq fc $clanmatch } $_->{characters}->@* } # members + $ladders->{currentSeason}->@* +); -say encode_json({ - league => $ladder->{currentLadderMembership}->{localizedGameMode}, - division => $ladder->{localizedDivision}, - mmr => $team->{mmr}, - members => $team->{teamMembers}, - members_ => [map { blizget(metadata => profile => 2 => 1 => $_->{id}) } $team->{teamMembers}->@*], +say JSON->new->canonical->pretty->encode({ + league => ucfirst lc $ladder->{ladder}->[0]->{league}, + division => $ladder->{ladder}->[0]->{ladderName}, + rank => $ladder->{ladder}->[0]->{rank}, + tag => $ladder->{characters}->[0]->{clanTag}, + members => [map { blizget(metadata => profile => 2 => 1 => $_->{id}) } $ladder->{characters}->@*], + # lacks mmr, fav race (available in new api) }); -- 2.30.0