[Python] Tumblrからタグを指定して画像をダウンロードする

Deep Learningで画像識別器を作成したい場合、学習データを用意するのが大変です。 何枚も手でダウンロード指定ては日が暮れてしまうので、Pythonを使って自動で集められるようにします。 Tumblrからタグを指定して画像データを集めるコードを作成しました。 ## 環境 Python 3.5.2 :: Anaconda 4.2.0 (x86_64) ## 事前準備 * TubmlrにログインしてAPI Keyを取得しておく * 画像をダウンロードするディレクトリを作成しておく * requestsをインストールしておく ($ pip install requests) ## ソースコード ```python `gutter:true; import requests import time API_ACCESS_COUNT = 1 TUMBLR_URL = 'https://api.tumblr.com/v2/tagged' # 画像をダウンロードするディレクトリ 先に作成しておく事 IMAGE_DL_DIR = './DownloadImages/' payload = { 'api_key' : 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'tag' : 'cat', 'before' : '' } photo_urls = [] for i in range(API_ACCESS_COUNT): # requestsでアクセスする, 結果はjsonで取得できる response = requests.get(TUMBLR_URL, params=payload) response_json = response.json() for data in response_json['response']: # typeがphotoでないものは省く if data['type'] != 'photo': continue for photo in data['photos']: photo_urls.append(photo['original_size']['url']) payload['before'] = response_json['response'][len(response_json['response']) - 1]['timestamp'] print("get image url... " + str(i + 1) + ' / ' + str(API_ACCESS_COUNT)) # サーバーに負荷をかけないため, 1秒まつ time.sleep(1) # 写真データをDLする total_size_of_url = len(photo_urls) for i, url in enumerate(photo_urls): # 後ろから3文字取得して拡張子のチェックを行う extension = url[-3:] if extension != 'jpg' and extension != 'png': continue # ダウンロード response = requests.get(url) if not response.ok: continue # ファイルに書き込み with open(IMAGE_DL_DIR + str(i) + '.jpg', 'wb') as handler: handler.write(response.content) print('download image... ' + str(i + 1) + ' / ' + str(total_size_of_url)) # サーバーに負荷をかけないため1秒まつ time.sleep(1) ``` サーバーに負荷をかけないように、APIアクセスしたら1秒待っています。 API_ACCESS_COUNTの数を変更すればより多くのURLが取得で切るので、画像もたくさんダウンロードできます。 一回のURL取得アクセスで25個ぐらいURLが取得できるので、API_ACCESS_COUNT x 25個ぐらいの画像がダウンロードできます。

0 件のコメント :

コメントを投稿