Hatena::ブログ(Diary)

WebService::Blog->new( user => ’hide_o_55’ )

2013-03-07

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;

moznionmoznion 2013/03/21 02:16 my $res = $furl->get(API_USER . $faved_user_id);
の部分、
my $res = $furl->get(METACPAN_URL . API_USER . $faved_user_id);
に書き換えないと動かない感じでした。

あと、空のpause_id が返ってくる場合がままあるんですけど、これはmetacpan の仕様ですかね?

hide_o_55hide_o_55 2013/03/21 02:30 thx. 直しました。
>あと、空のpause_id が返ってくる場合がままあるんですけど、これはmetacpan の仕様ですかね?
多分、metacpanのIDはあるけど、PAUSE IDは持ってないユーザなんだと思います。
> id:moznion

moznionmoznion 2013/03/21 02:32 なるほど、ありがとうございます。勉強になりました。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/hide_o_55/20130307/1362662875