#!/usr/bin/perl use strict; use POE qw(Component::Client::HTTP); use HTTP::Request::Common 'GET'; use lib '../lib'; use Acme::CPANAuthors; my $a = Acme::CPANAuthors->new(shift || 'Russian'); POE::Component::Client::HTTP->spawn(Alias => 'HTTP_CLIENT', FollowRedirects => 0); POE::Session->create( inline_states => { _start => sub { for ($a->id) { my($id) = $a->avatar_url($_) =~ m{avatar/(.*)}; $_[KERNEL]->post( 'HTTP_CLIENT' => 'request', 'result', GET(($id ? "http://www.gravatar.com/avatar.php?gravatar_id=$id" : $a->avatar_url($_)).'&default=http%3A%2F%2Fst.pimg.net%2Ftucs%2Fimg%2Fwho.png'), $_ ); $_[HEAP]->{'count'}++; } }, result => sub { my $name = $_[ARG0]->[1]; my $response = $_[ARG1]->[0]; unless ($response->is_redirect) { # print qq{\n}; warn qq({id => '$name', name => '@{[$a->name($name)]}', avatar => '@{[$a->avatar_url($name)]}'},\n); } $_[KERNEL]->stop unless --$_[HEAP]->{'count'}; }, } ); POE::Kernel->run; __END__ =head1 NAME cpan-faces.pl - script for building CPAN faces of Acme::CPANAuthors =head1 SYNOPSIS ./cpan-faces.pl Russian =head1 DESCRIPTION You can build CPAN faces for others Acme::CPANAuthors sets. This script based on L. See source code :) =head1 AUTHOR Anatoly Sharifulin, Esharifulin at gmail.comE =head1 COPYRIGHT AND LICENSE Copyright (C) 2009 by Anatoly Sharifulin. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut