見出し画像

FlickrAPIで画像を一括取得する

環境はGoogle Calboratoryです。
画像認識モデルの学習のなかで登場した技術ですが、この時点でかなりすごいんじゃないかと思い備忘の投稿です。

!pip install flickrapi

FlickerのAPIのライブラリをインストール

import os
import time
from urllib.request import urlretrieve
from flickrapi import FlickrAPI

使うライブラリをインポート

FLICKR_KEY="ユーザーごとのFLICKR_KEY値"
FLICKR_SECRET="ユーザーごとのFLICKR_SECRET値"

FlickrのサイトからAPIのユーザーコードを取得
参考:Axross Recipe

TRAIN=[ "train", "express"]

#TRAINをループしてデータを取得
for train in TRAIN:

 #保存フォルダの指定
  save_dir = os.path.join("datasets", train)
  os.makedirs(save_dir, exist_ok=True)

#Flickr APIの初期化
  flickr = FlickrAPI(FLICKR_KEY, FLICKR_SECRET, format="parsed-json")

 #TRAINを指定して100件の画像情報を取得
  result = flickr.photos.search(text=train,
                                per_page=100,
                                media="photos",
                                sort="relevance",
                                safe_search=1,
                                extras="url_q, licence")

#画像情報から実際の画像ファイルを取得
  photos = result['photos']
  for photo in photos['photo']:
      url_q = photo["url_q"] # 画像のURL
      filepath = os.path.join(save_dir, photo["id"] + ".jpg")  #画像のダウンロード先
      urlretrieve(url_q, filepath) # 画像を指定したパスにダウンロードして保存
      time.sleep(1) # クローリング先のサーバーに負荷を与えないように1秒処理を止めてFlickrから電車(TrainとExpress)の画像を100枚ランダム取得。

電車の画像を100枚取得するコードです。投稿サイトFlickerに"Train"と登録されているものと"Express"と登録されているものがありそうなので、両方取得しました。

広告バナーの一括作成、記事アイキャッチ量産など、ここから色々組み合わせ余地がありそうです。
(既にGoogleやダイナミックアドテク媒体のレスポンシブディスプレイとかに使われていそう)

この記事が参加している募集

#最近の学び

181,351件

この記事が気に入ったらサポートをしてみませんか?