Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use strict;
- use warnings;
- use feature qw( say );
- use LWP::UserAgent qw( );
- use URI qw( );
- sub format_count { scalar(reverse( reverse($_[0]) =~ s/\G...(?!\z)\K/,/rg )) }
- {
- my $ua = LWP::UserAgent->new();
- my @houses = qw(
- Mars
- Shadows
- Untamed
- Brobnar
- Logos
- Dis
- Sanctum
- );
- my $total = 0;
- my @results;
- for my $h1 (1..5) {
- for my $h2 ($h1+1..6) {
- for my $h3 ($h2+1..7) {
- my @include = ( $h1, $h2, $h3 );
- my %include = map { $_ => 1 } @include;
- my @exclude = grep !$include{$_}, 1..7;
- my $url = URI->new('https://keyforge-compendium.com/decks');
- $url->query_form(
- ( map {; 'filterrific[by_house][house_ids][]' => $_ } @exclude ),
- 'filterrific[by_house][order_type]' => 'Excludes',
- );
- my $response;
- for (1..2) {
- sleep(1);
- $response = $ua->get($url);
- last if $response->is_success;
- }
- if ($response->is_success) {
- if ( my ($count) = $response->content =~ /Found (\d+) decks/ ) {
- push @results, [ \@include, $count ];
- $total += $count;
- next;
- }
- }
- warn("Skipping $h1,$h2,$h3...\n");
- }}}
- my $avg = sprintf("%.0f", $total/@results);
- for my $result (sort { $a->[1] <=> $b->[1] } @results) {
- my ($include, $count) = @$result;
- say sprintf "%s%s%s: %s (%s)<br>",
- ( map { "![$houses[$_-1]][$_]" } @$include ),
- format_count($count),
- format_count($count - $avg);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement