今、ちょっと作成を考えているWebサービスがあって、その練習のためにFlickrから画像を取得するスクリプトを書きました。RubyやPerlをお使いの皆様には申し訳ありませんがPythonです。PerlならPlaggerというのを使うのでしょうか?ちょっと使ったことないのでわかりませんが。
# -*- coding: utf-8; -*- import sys import urllib import time def search_photos( text ): args = { 'method' : 'flickr.photos.search', 'api_key' : 'ここに自分のAPI_KEYを入れてください!', 'per_page': '500', 'sort' : 'date-posted-desc', 'format' : 'json', 'nojsoncallback' : 1, 'text' : text, 'extras' : "date_upload", } url = "http://api.flickr.com/services/rest/?%s"%(urllib.urlencode(args) ) #print url return eval( urllib.urlopen(url).readline() ) def create_photo_url( photo ): template = "http://farm%s.static.flickr.com/%s/%s_%s.jpg" time_string = time.strptime( time.ctime( int( photo["dateupload"] ) ) ) return template%(photo["farm"], photo["server"], photo["id"], photo["secret"]), photo["dateupload"], time_string def create_page_url( photo ): template = "http://www.flickr.com/photos/%s/%s" time_string = time.strptime( time.ctime( int( photo["dateupload"] ) ) ) return template%(photo["owner"], photo["id"]), time_string def do_file( filename ): file_obj = open( filename, 'r') line_list = file_obj.readlines() file_obj.close() idol_list = [] for i in line_list: idol_list.append( [ n.strip() for n in i.split(",") ] ) for i in idol_list: flickr_photos = search_photos( i[0] ) for i in flickr_photos["photos"]["photo"]: print create_photo_url( i )[0] def main(*argv): from getopt import getopt, GetoptError try: (opts, args) = getopt(argv[1:], 'f:', ['file']) except GetoptError, e: return 1 for o, a in opts: if o in ('-f', '--file'): do_file(a) return 0 if __name__ == '__main__': sys.exit(main(*sys.argv))
以下のように実行してください。写真のURLを標準出力に出力してくれます。
python flickr.py -f filename
filenameには改行で区切った検索をおこないたいクエリを改行区切りで記載したテキストを指定します。
まぁ、ここまでならちょっとPythonをかじったことがあるひとならサクっと書けると思うのですが、何をしたかったかと言うと、Flickrにどれくらいグラビアアイドルの画像がアップされているかを調べたかったのです。理由は聞かないでください。
とりあえず、グラビアアイドルのリストを作成します。個人的に気に入っているグラビアアイドルを50人ほどピックアップしてみました。僕のtumblr.であるdrill equipmentではおなじみの面子ですね。
Aibu Saki, 相武紗季 Aizawa Hitomi, 相澤仁美 Akiyama Rina, 秋山莉奈 Ando Sayaka, 安藤沙耶香 Anzu Sayuri, 杏さゆり Ayase Haruka, 綾瀬はるか Hamada Shoko, 浜田翔子 Hara Fumina, 原史奈 Hoshino Aki, ほしのあき Irie Saaya, 紗綾 Isoyama Sayaka, 磯山さやか Iwasa Mayuko, 岩佐真悠子 Kawamura Yukie, 川村ゆきえ Kazuki Saya, 和希沙也 Kiguchi Aya, 木口亜矢 Kinoshita Yukina, 木下優樹菜 Kosaka Yuka, 小阪由佳 Komatsu Ayaka, 小松綾夏 Kumada Yoko, 熊田曜子 Minami Akina, 南明奈 Mitsuya Yoko, 三津谷葉子 Morishita Chisato, 森下千里 Morishita Yuri, 森下悠里 Nagasaki Rina, 長崎莉奈 Nagasawa Masami, 長澤まさみ Nakagawa Shoko, 中川翔子 Nakamura Miu, 仲村みう Natsukawa Jun, 夏川純 Natsume Rio, 夏目理緒 Ogura Yuko, 小倉優子 Okubo Mariko, 大久保麻梨子 Sato Hiroko, 佐藤寛子 Sawajiri Erika, 沢尻エリカ Shiratori Yuriko, 白鳥百合子 Sugimoto Yumi, 杉本有美 Suzuki Akane, 鈴木茜 Takizawa Nonami, 滝沢乃南 Toda Erika, 戸田恵梨香 Tokito Ami, 時東あみ Tsugihara Kana, 次原かな Wakatsuki Chinatsu, 若槻千夏 Yabuki Haruna, 矢吹春奈 Yamamoto Azusa, 山本梓 Yamazaki Mami, 山崎真実 Yasu Megumi, 安めぐみ Yasuda Misako, 安田美沙子 Yuki Maomi, 優木まおみ
上のリストをUTF-8のテキストとして保存します。(ここではidols.txtとして保存します。)そして、以下のコマンドを実行します。
python flickr.py -f idols.txt
そうすると、およそ2100枚くらいのグラビアアイドルの画像のURLを標準出力に出力します。
取得した写真をざーっとながめてみましたが、Flickrは個人が気に入った画像しかアップされないのでかなり品質が高いです。実は、コード書くよりグラビアアイドルを選ぶ方が疲れたのは内緒です。ただ、特にエロというわけではない僕が、Erogeekの仲間入りしてしまうのではないかということが心配です。> yusukebe
では、開発中のWebサービスにご期待ください。ある程度完成した時点で公開したいと思います。個人的には上のリストをダウンロードしてiPod touchに入れておくのが一番楽しいではないかと思っています。
[追記]このエントリーにアルバム化したHTML版を追加しました。
HTML版はこいつです。