読者です 読者をやめる 読者になる 読者になる

ゆーすけべー日記

はてなBlogってどーなの!?

Flickr には某氏厳選47人のグラビアアイドルにおいて画像が8407枚あり、そのうち2670枚は小倉優子

id:gamella こと大学の同期のお友達「ともちゃん」がErogeekチックなことをしていたのを発見。

今、ちょっと作成を考えているWebサービスがあって、その練習のためにFlickrから画像を取得するスクリプトを書きました。

(中略)

何をしたかったかと言うと、Flickrにどれくらいグラビアアイドルの画像がアップされているかを調べたかったのです。理由は聞かないでください

とりあえず、グラビアアイドルのリストを作成します。個人的に気に入っているグラビアアイドルを50人ほどピックアップしてみました。…

Flickrから2000枚の品質の高いグラビアアイドル画像を取得してみた - Future Insightより

理由は聞きません。でも、そのともちゃんチョイスのグラビアアイドルリスト、貸して下さい! というわけで、ともちゃんはPythonでスクリプトを書いてたけど、俺はPerlでダウンローダー作った(Plaggerでもできそうだけど素で書いてみたかった)。

お決まりの iPod touch にいれるとこんな感じアイドルまみれ
iPod touch

それで、最後にそのスクリプトを貼り付けておくけど、面白かったのはともちゃんも調べたかったという、各グラビアアイドルの画像が何枚 Flickr にアップされているかという数。

Flickr API 初めて使ってあんまよく理解していないかもしれないけど、 「flickr.photos.search」メソッドにアイドル名を text クエリーとして渡すと上限500でURLが返ってくる仕組みらしい。ともちゃんはそのURL数、上限500で写真の数をカウントしていたけれど、APIの返り値に total というのがあって、それは500以上でも Flickr 内にあるそのクエリーにヒットした画像の数を返してくれる。Perlのコードだとこんな感じ(XML::Simpleでパースしているのは好みっす)。


use Flickr::API;
use XML::Simple;

my $api_key = "";
my $api     = new Flickr::API( { key => $api_key, forcearray => ['photo'] } );
my $xs      = XML::Simple->new( keyattr => [] );

warn "total_count is " . &search("query");

sub search {
    my ($query) = @_;
    warn "searching $query ...";
    my $res =
      $api->execute_method( 'flickr.photos.search', { text => $query } );
    my $ref = $xs->XMLin( $res->{_content} );
    return 0 unless $ref->{photos}->{total};
    return $ref->{photos}->{total};
}

このコードを使い、日本語の名前とアルファベット名でそれぞれ検索して total のカウントを足して数えてみると、一位はダントツ2670枚で小倉優子りん。2位が沢尻エリカの633枚だからすごい差。ちなみに、1枚しかなかったのは最下位、和希沙也ちゃんだった。

リストには47人のグラビアアイドルがいて、その全てのFlickr画像の数を足すと8407枚になった。なるほど、Flickr にはユーザー撮影した写真がばかりであまりそのような画像は少ないと思ったけど、そこそこあるんだな。いや、ってかぶっちゃけ多いのか少ないのかよくわからないな。とにかく小倉優子りんがダントツなのは把握した。

結果をDumpしたのを以下に貼り付けておきます。ともちゃんはこの結果からどのような考察をしてくれるのだろうか。

total_count: 8407 
---
count: 2670
en: Ogura Yuko
ja: ' 小倉優子'
---
count: 633
en: Sawajiri Erika
ja: ' 沢尻エリカ'
---
count: 614
en: Minami Akina
ja: ' 南明奈'
---
count: 507
en: Hoshino Aki
ja: ' ほしのあき'
---
count: 362
en: Toda Erika
ja: ' 戸田恵梨香'
---
count: 304
en: Kawamura Yukie
ja: ' 川村ゆきえ'
---
count: 278
en: Ayase Haruka
ja: ' 綾瀬はるか'
---
count: 264
en: Nagasawa Masami
ja: ' 長澤まさみ'
---
count: 252
en: Yamamoto Azusa
ja: ' 山本梓'
---
count: 238
en: Morishita Chisato
ja: ' 森下千里'
---
count: 233
en: Nagasaki Rina
ja: ' 長崎莉奈'
---
count: 190
en: Natsukawa Jun
ja: ' 夏川純'
---
count: 187
en: Irie Saaya
ja: ' 紗綾'
---
count: 168
en: Kosaka Yuka
ja: ' 小阪由佳'
---
count: 159
en: Hara Fumina
ja: ' 原史奈'
---
count: 148
en: Takizawa Nonami
ja: ' 滝沢乃南'
---
count: 109
en: Yasu Megumi
ja: ' 安めぐみ'
---
count: 107
en: Tsugihara Kana
ja: ' 次原かな'
---
count: 98
en: Yuki Maomi
ja: ' 優木まおみ'
---
count: 87
en: Isoyama Sayaka
ja: ' 磯山さやか'
---
count: 84
en: Akiyama Rina
ja: ' 秋山莉奈'
---
count: 77
en: Mitsuya Yoko
ja: ' 三津谷葉子'
---
count: 74
en: Aibu Saki
ja: ' 相武紗季'
---
count: 74
en: Iwasa Mayuko
ja: ' 岩佐真悠子'
---
count: 55
en: Komatsu Ayaka
ja: ' 小松綾夏'
---
count: 49
en: Anzu Sayuri
ja: ' 杏さゆり'
---
count: 45
en: Sugimoto Yumi
ja: ' 杉本有美'
---
count: 36
en: Okubo Mariko
ja: ' 大久保麻梨子'
---
count: 34
en: Tokito Ami
ja: ' 時東あみ'
---
count: 33
en: Kumada Yoko
ja: ' 熊田曜子'
---
count: 32
en: Nakamura Miu
ja: ' 仲村みう'
---
count: 28
en: Yabuki Haruna
ja: ' 矢吹春奈'
---
count: 23
en: Ando Sayaka
ja: ' 安藤沙耶香'
---
count: 21
en: Nakagawa Shoko
ja: ' 中川翔子'
---
count: 19
en: Hamada Shoko
ja: ' 浜田翔子'
---
count: 19
en: Sato Hiroko
ja: ' 佐藤寛子'
---
count: 17
en: Yasuda Misako
ja: ' 安田美沙子'
---
count: 14
en: Shiratori Yuriko
ja: ' 白鳥百合子'
---
count: 13
en: Aizawa Hitomi
ja: ' 相澤仁美'
---
count: 11
en: Natsume Rio
ja: ' 夏目理緒'
---
count: 11
en: Wakatsuki Chinatsu
ja: ' 若槻千夏'
---
count: 9
en: Morishita Yuri
ja: ' 森下悠里'
---
count: 8
en: Kiguchi Aya
ja: ' 木口亜矢'
---
count: 5
en: Suzuki Akane
ja: ' 鈴木茜'
---
count: 5
en: Yamazaki Mami
ja: ' 山崎真実'
---
count: 2
en: Kinoshita Yukina
ja: ' 木下優樹菜'
---
count: 1
en: Kazuki Saya
ja: ' 和希沙也'

ところで、よくよく、リストとか写真とか見てみると、「三津谷葉子」とか「夏川純」、そして「磯山さやか」とうまいこと俺の趣向に合っていることが判明した。ともちゃんGJ! もちろん、ゲットした画像は iPod touch でくぱぁしたよ!

iPod touch

では最後にダウンローダーのPerlスクリプトを貼り付け。Flickrに過度な負荷を与えないようにね。 あ、あとダウンロードしなくても画像見たいだけだったらともちゃんがWebアルバム作ってくれてるよ→idol album

#!/usr/bin/perl

use strict;
use warnings;
use Flickr::API;
use XML::Simple;
use LWP::UserAgent;
use Digest::MD5 qw(md5_hex);
use Path::Class;
use Text::CSV::Simple;

my $api_key      = "";
my $dir_path     = "photos";
# http://d.hatena.ne.jp/gamella/20080112#1200105210 にあるグラビアアイドルリストをcsvで保存
# もちろん好みに合わせるのもOK
my $csv_filename = "idol.csv";

my $api          = new Flickr::API( { key => $api_key } );
my $xs           = XML::Simple->new( keyattr => [] , forcearray => ['photo'] );
my $ua           = LWP::UserAgent->new();

my $param = {
    per_page => '500',
    sort     => 'date-posted-desc',
    extras   => 'date_upload',
};

my $csv = Text::CSV::Simple->new( { binary => 1 } );
$csv->field_map(qw/en ja/);
my @list = $csv->read_file($csv_filename);

foreach my $idol (@list) {
    my $subdir_path = $idol->{en};
    $subdir_path =~ s/\s//;
    &search( $idol->{ja}, $subdir_path );
    &search( $idol->{en}, $subdir_path );
}

sub search {
    my ( $query, $subdir_path ) = @_;
    $param->{text} = $query;
    my $res = $api->execute_method( 'flickr.photos.search', $param );
    my $ref = $xs->XMLin( $res->{_content} );
    return unless $ref->{photos}->{total};
    foreach my $photo ( @{ $ref->{photos}->{photo} } ) {
        my $url = sprintf "http://farm%s.static.flickr.com/%s/%s_%s.jpg",
          $photo->{farm}, $photo->{server}, $photo->{id}, $photo->{secret};
        my $dir = Path::Class::Dir->new( $dir_path, $subdir_path );
        mkdir $dir->relative if !-d $dir->is_absolute;
        my $file = $dir->file( md5_hex($url) . ".jpg" );
        my $res = $ua->mirror( $url, $file->absolute );
        print "try to fetch : " . $res->status_line . " : $url\n";
    }
}

お決まりの iPod touch アサマシ

Apple iPod touch 8GB MA623J/A
posted with yusukebe.com::AmazonSearch on 2008.1.13
  • エレクトロニクス / アップルコンピュータ (2007/09/25)
  • Amazon 売り上げランキング: 50
Amazon.co.jpで詳細を見る

Apple iPod touch 16GB MA627J/A
posted with yusukebe.com::AmazonSearch on 2008.1.13
  • エレクトロニクス / アップルコンピュータ (2007/09/25)
  • Amazon 売り上げランキング: 53
Amazon.co.jpで詳細を見る