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でハッピーおっぱいライフを送って下さい。