Colaboratory や Drive の Google サービスを遺憾なく発揮して Google Drive に画像を集める。
tumblr api を使いましょう。 tumblr に登録する方法は説明しません。
import os
import sys
import time
import requests
api_url = 'https://api.tumblr.com/v2/tagged'
api_key = sys.argv[1]
tag = sys.argv[2]
num = int(sys.argv[3])
prefix = ''
dir_name = ''
if (sys.argv[4] != ''):
dir_name = sys.argv[4]
prefix = dir_name + '_'
full_dir = 'tumblr_images'
if (dir_name != ''):
full_dir = os.path.join(full_dir, dir_name)
os.makedirs(full_dir, exist_ok=True)
payload = {
'api_key': api_key,
'tag': tag,
'before': ''
}
photo_urls = []
for i in range(num):
r = requests.get(api_url, params=payload)
r_json = r.json()
for data in r_json['response']:
if data['type'] != 'photo':
continue
for photo in data['photos']:
photo_urls.append(photo['original_size']['url'])
if(len(r_json['response']) == 0):
continue
payload['before'] = r_json['response'][len(r_json['response']) - 1]['timestamp']
time.sleep(1)
image_idx = 0
for url in photo_urls:
image_idx += 1
extension = url[-3:]
if extension != 'jpg' and extension != 'png':
continue
with open(full_dir + '/' + prefix + str(image_idx) + '.jpg', 'wb') as handler:
response = requests.get(url)
if not response.ok:
continue
handler.write(response.content)
time.sleep(1)
これで Google Colaboratory を使って下記のセルを用意します。
Google Colaboratory
は Google Chrome で使うものになります。
下記は Google Drive をマウントするセルです。
from google.colab import drive
drive.mount('/content/drive')
で
下記が Google Drive の tumblr/tumblr_image_get.py
にある前提で下記のセルを用意。
#!drive/My\ Drive/tumblr; python tumblr_image_get.py tumlr_API_KEY "猫" 100 prefix
- tumlr_API_KEY は tumblr から取得して下さいね。
- tumblr_images って言うディレクトリも Google Drive の tumblr 以下に用意しましょう。
こんな感じで動かせるようになります。
tumblr_image_get.py
は Jupyter
でも使えると思います。