Advertisement
Guest User

Untitled

a guest
May 20th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.59 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 $total = 0;
  24.    my @results;
  25.    for my $h1 (1..5) {
  26.    for my $h2 ($h1+1..6) {
  27.    for my $h3 ($h2+1..7) {
  28.       my @include = ( $h1, $h2, $h3 );
  29.       my %include = map { $_ => 1 } @include;
  30.       my @exclude = grep !$include{$_}, 1..7;
  31.  
  32.       my $url = URI->new('https://keyforge-compendium.com/decks');
  33.       $url->query_form(
  34.          ( map {; 'filterrific[by_house][house_ids][]' => $_ } @exclude ),
  35.          'filterrific[by_house][order_type]' => 'Excludes',
  36.       );
  37.  
  38.       my $response;
  39.       for (1..2) {
  40.          sleep(1);
  41.          $response = $ua->get($url);
  42.          last if $response->is_success;
  43.       }
  44.      
  45.       if ($response->is_success) {
  46.          if ( my ($count) = $response->content =~ /Found (\d+) decks/ ) {
  47.             push @results, [ \@include, $count ];
  48.             $total += $count;
  49.             next;
  50.          }
  51.       }
  52.  
  53.       warn("Skipping $h1,$h2,$h3...\n");
  54.    }}}
  55.  
  56.    my $avg = sprintf("%.0f", $total/@results);
  57.  
  58.    for my $result (sort { $a->[1] <=> $b->[1] } @results) {
  59.       my ($include, $count) = @$result;
  60.       say sprintf "%s%s%s: %s (%s)<br>",
  61.          ( map { "![$houses[$_-1]][$_]" } @$include ),
  62.          format_count($count),
  63.          format_count($count - $avg);
  64.    }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement