Acme::Porn::JP
2010-12-04
こんにちはOppai-Detectプロジェクト研究室のyusukebeです。今日はAcme::Porn::JPというgithubに僕が置いているAcmeなモジュールについて紹介します。
インストールする
$ git clone git://github.com/yusukebe/Acme-Porn-JP.git $ cd Acme-Porn-JP $ perl Makefile.PL $ make $ make install
これは何?
Acme::Porn::JPはエロい日本語の単語のリストを取得するためのモジュールです。今のところAV女優のリストとAVジャンルリストの取得を行うことができます。
使う
こんな感じでリストを取得できます。
use Acme::Porn::JP; my $porn_jp = Acme::Porn::JP->new(); my $actress_list = $porn_jp->actress(); print $actress_list->[0] . "\n"; my $category_list = $porn_jp->category(); print $category_list->[10] . "\n";
応用
では、応用として登録されているAV女優のリストを使って、大量のおっぱい画像を集めてみましょう。今回は画像のURL取得にYahoo! 検索 API、画像のダウンロードにクエリー毎の並列処理を行っています。
#!/usr/bin/perl
use strict;
use warnings;
use Coro;
use Coro::LWP;
use LWP::UserAgent;
use WebService::Simple;
use Path::Class qw/dir file/;
use Digest::MD5 qw/md5_hex/;
use Acme::Porn::JP;
use Encode;
use utf8;
my $query = 'おっぱい';
my $dir = './images';
my $yahoo = WebService::Simple->new(
base_url => 'http://search.yahooapis.jp/ImageSearchService/V1/imageSearch',
param => {
appid => $ENV{YAHOO_APPID},
adult_ok => 1,
results => 20,
format => 'jpeg',
}
);
my $ua = LWP::UserAgent->new;
$ua->show_progress(1);
$ua->timeout(10);
my $porn = Acme::Porn::JP->new;
my $actress_list = $porn->actress();
for my $actress (@$actress_list) {
search( "$query $actress", 1 );
}
sub search {
my ( $query, $page ) = @_;
my $start = ( $page - 1 ) * 10 + 1;
my $res = $yahoo->get( { query => $query, start => $start } );
my $ref = $res->parse_response();
return unless ref $ref->{Result} eq 'ARRAY';
my @coros;
for my $r ( @{ $ref->{Result} } ) {
push @coros, async {
$ua->mirror( $r->{Url},
dir($dir)->file( md5_hex( $r->{Url} ) . '.jpg' ) );
};
}
$_->join for @coros;
}
たくさんおっぱい画像が取得できると思います。
まとめ
Acme::Porn::JPでハッピーおっぱいライフを送って下さい。