エロサイトにおけるコンテンツマッチ型広告APIの自作

yusukebe
yusuke (at) kamawada.com / yusukebe.com

注意事項

よい子は真似しないでね

2007年

年末の下半身に

衝撃をもたらした

YourAVHost

の裏側、広告編

ところで

Amazon
ウェブサービスは便利

use Net::Amazon;

Net::AmazonによるDVD検索

use Net::Amazon;
use Encode;
use utf8;

my $keyword = "柚木ティナ";
my $ua = Net::Amazon->new( token => 'YOUR-AMAZON-TOKEN' ,
                           locale => 'jp' );
my $response = $ua->search( keyword => encode("utf-8", $keyword) ,
                            mode => "dvd-jp");

foreach my $property ($response->properties) {
    print encode("utf-8",$property->title()) . "\n";
}
  

結果

セル初×ギリギリモザイク×4時間 ギリギリモザイク Rio
MAX-A Anniversary VIII
デジタルリマスター 情炎&爽健美女 柚木ティナ
鬼畜 Rio
爽健美女 柚木ティナ
デジタルリマスター 奥様はティナ&妹の秘密 柚木ティナ
騎上位まっくすまっくす4時間
MAX-A AnniversaryVII
制服狩り 柚木ティナ
スポんchu
柚木ティナ ゴスロリコレクション
UREKKO 柚木ティナ
...
   

APIを利用すると
商品情報を取ってこれて
自サイトに取り込むことができる

例: はてな

関連するページに関連する商品を
表示することが可能

コンテンツマッチ広告

エロサイトでもやりたい!

Amazon以外で
*注意: Amazon でも アダルトDVDは豊富だよ

ここら辺にマッチした広告を載せたい @ YourAVHost

リソースは DMM.Adult

YourAVHostに掲載されているAV女優に関するビデオがほぼ全てある

しかも、ブロードバンド配信で
DVDの到着を待たずに今すぐ見れる!

でも、APIが無い

そこで

作ってみた

取り込むとこんな感じ

女優名をキーに
その女優が出演している
ビデオ情報をとってこれる!

どうやって作ったの?

その1. マッチさせたい語彙を含む辞書を用意する

WikipediaのExportから日本のAV女優一覧を取得する「Acme::JapaneseAvActress」モジュール

Acme::JapaneseAvActress

use Acme::JapaneseAvActress;

my $actress = Acme::JapaneseAvActress->new();
$actress->get;
foreach my $a ( @{ $actress->{actress} } ) {
    &scrape( $a->name );
}
   

その2. 各アイテムページから情報を取得するScraperを作成する

WWW::DMM::Adult を作った

WWW::DMM::Adult::Item

use WWW::DMM::Adult::Item;

my $url =
"http://www.dmm.co.jp/digital/videoa/-/detail/=/cid=60srxv505r/";
my $item = WWW::DMM::Adult::Item->new( url => $url );
print encode( "utf-8", $item->title ) . "\n";
print $item->image_url . "\n";
print encode( "utf-8", $item->description ) . "\n";
   

WWW::DMM::Adult::Item

セーラー服とマシンガン 柚木ティナ
http://pics.dmm.co.jp/digital/video/60srxv00505/60srxv00505ps.jpg
組長である父の死をきっかけに組を継ぐ事になってしまった
女子校生・ティナ。…

Web::Scraper++;

その3. クエリーから各アイテム(ページ)を返すscraperを作成する

get によるURLを生成するか Mech などを使ってフォームにクエリーを送る

use WWW::DMM::Adult;

WWW::DMM::Adult

use WWW::DMM::Adult;
use utf8;

my $dmm    = WWW::DMM::Adult->new;
my $result = $dmm->search( "柚木ティナ",
    {  num      => 5, category => "digital_videoa" }
);
my @items = @{ $result->{items} };
foreach my $item (@items) {
    print encode( "utf-8", $item->title ) . "\n";
}

    

WWW::DMM::Adult

女教師狩り Rio
鬼畜 Rio
野外DE潮吹きSEX Rio
セーラー服とマシンガン 柚木ティナ
MAX GIRLS 完全撮り下ろし! ヨガリまくり8人
    

下準備完了

いよいよ、
クロール&スクレイピング
DBにぶち込む

具体的には

途中止まってまた
立ち上げることも考慮すると

約2日に及ぶ作業

DB 完成

総アイテム数

10,621

取り込んでみた

権利に関して

ウェブサイトには著作権が存在します。 皆さんは真似しないでね。

ただ、今回の場合はコンテンツ情報を DMM 側にも利点があるように利用しているので、 ある程度はOKと捉えることができる? とりあえず今のところは怒られていない。

まとめ

APIが無ければ作ってしまえ!
コンテンツフォルダーとWin-Winな関係を築ける場合に限る

自作APIを作るための条件

以上

YourAVHost をよろしくね!