MetaCPANで++してくれた人を探す

MetaCPANのサイト上では誰が++してくれたのかわかりませんが、MetaCPAN APIを使用すればわかります。

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use JSON;
use Furl;
use constant {
    METACPAN_URL => 'http://api.metacpan.org',
    API_FAV => '/v0/favorite/_search?q=distribution:',
    API_USER => '/v0/author/_search?q=user:',
};
 
my $dist = $ARGV[0];
if( !defined $dist ){
    print "Usage: $0 <dist name>\n";
    exit 1;
}
 
my $furl = Furl->new();
$furl->env_proxy;
 
my $url_get_fav = METACPAN_URL . API_FAV . $dist . '&fields=user';
 
my $res = $furl->get($url_get_fav);
die if ! $res->is_success;
 
my $json = JSON->new->utf8;
 
my $fav = $json->decode($res->content);
 
for my $hit (@{ $fav->{hits}{hits} || [] }){
    my $faved_user_id = $hit->{fields}{user};
    my $res = $furl->get(METACPAN_URL  . API_USER . $faved_user_id);
    next if  ! $res->is_success;
    my $user =  $json->decode($res->content);
    my $pause_id = $user->{hits}{hits}[0]{_source}{pauseid};
    print $pause_id, "\n";
}
 
exit 0;