Advertisement
Guest User

Untitled

a guest
May 20th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.42 KB | None | 0 0
  1. use strict;
  2. use warnings;
  3. use feature qw( say );
  4.  
  5. use LWP::UserAgent qw( );
  6. use URI            qw( );
  7.  
  8. sub format_count { scalar(reverse( reverse($_[0]) =~ s/\G...(?!\z)\K/,/rg )) }
  9.  
  10. {
  11.    my $ua = LWP::UserAgent->new();
  12.  
  13.    my @houses = qw(
  14.       Mars
  15.       Shadows
  16.       Untamed
  17.       Brobnar
  18.       Logos
  19.       Dis
  20.       Sanctum
  21.    );
  22.  
  23.    my @results;
  24.    for my $h1 (1..5) {
  25.    for my $h2 ($h1+1..6) {
  26.    for my $h3 ($h2+1..7) {
  27.       my @include = ( $h1, $h2, $h3 );
  28.       my %include = map { $_ => 1 } @include;
  29.       my @exclude = grep !$include{$_}, 1..7;
  30.  
  31.       my $url = URI->new('https://keyforge-compendium.com/decks');
  32.       $url->query_form(
  33.          ( map {; 'filterrific[by_house][house_ids][]' => $_ } @exclude ),
  34.          'filterrific[by_house][order_type]' => 'Excludes',
  35.       );
  36.  
  37.       my $response;
  38.       for (1..2) {
  39.          sleep(1);
  40.          $response = $ua->get($url);
  41.          last if $response->is_success;
  42.       }
  43.      
  44.       if ($response->is_success) {
  45.          if ( my ($count) = $response->content =~ /Found (\d+) decks/ ) {
  46.             push @results, [ \@include, $count];
  47.             next;
  48.          }
  49.       }
  50.  
  51.       warn("Skipping $h1,$h2,$h3...\n");
  52.    }}}
  53.  
  54.    for my $result (sort { $a->[1] <=> $b->[1] } @results) {
  55.       say sprintf "%s%s%s: %s<br>",
  56.          ( map { "![$houses[$_-1]][$_]" } @{ $result->[0] } ),
  57.          format_count($result->[1]);
  58.    }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement