データの収集はFlickrの写真をクローリングします。今回の内容はFlicKrのAPIを使用してプログラムから収集する方法です。
作業フローは次の通りです。
- YahooアカウントでFlickrのAPIキーを取得
- ファイル一覧を取得
- プログラムでダウンロード
Flickr API取得
- Flickr API取得のページから「Create an App」のリンクをクリックします。(下図参照)
- Get your API Key で「Request an API Key」をクリックしてYAHOO(US)のアカウントを求められますので、あればそれを入力します。無ければ、下方にあるSign upで新規で作成します。
- ログインするとトップページに戻るので再び1からの手順で「Request an API Key」をクリックします。
- 表示されたページで、商用利用しない場合は「Non-Commercial」の方の「APPLY FOR A NON-COMMERCIAL KEY」を選択します。
- Tell us about your app:の欄に必要事項を記入します。
Whats the name of your app?には Animal filter
Whats are you building? には Deep learning など
チェック項目は著作権違反をしない確認と使用許諾に了承したということですから、2つともチェックをしてSUBMITします。 - Key と Secretコードが表示されますのでメモしておきます。
Flickr API導入方法
Flickr API導入コマンド
pip install flickrapi
Flickrにアクセスするプログラム
事前準備
作業用フォルダを作成して、添付の「download.py」のを作業用フォルダに入れておきます。
download.pyの内容解説
Flickrにアクセスするプログラムは以下のコードになります。
コード全部
from flickrapi import FlickrAPI from urllib.request import urlretrieve from pprint import pprint import os, time, sys # APIキーの情報 key = "取得したkey" secret = "取得したsecret" wait_time = 1 #1秒おきにリクエスト imgname = sys.argv[1] savedir = "./" + imgname os.mkdir(savedir) flickr = FlickrAPI(key, secret, format='parsed-json') result = flickr.photos.search( text = imgname, per_page = 10, media = 'photos', sort = 'relevance', safe_search = 1, extras = 'url_q, licence' ) photos = result['photos'] for i, photo in enumerate(photos['photo']): url_q = photo['url_q'] filepath = savedir + '/' + photo['id'] + '.jpg' if os.path.exists(filepath): continue urlretrieve(url_q,filepath) time.sleep(wait_time)
APIキー
download.pyコードの中の次の部分を取得したAPIキーデータに書き換えます。
key = "取得したキー" secret = "取得したシークレットキー"
保存フォルダの指定
保存フォルダ名の指定はコマンド引数を使用しますので次のように記述しています。
コマンド引数に指定した値で画像を検索して取得します。
画像保存フォルダは自動作成して検索キーワード名がフォルダ名になります。
imgname = sys.argv[1] savedir = "./" + imglname os.mkdir(savedir)
per_page = 400が取得画像枚数。テストするときは10枚くらいでやってみる。
extras = ‘url_q, licence’は画像のURL取得とライセンス情報を取得
プログラムの実行
まずは「cd」コマンドでカレントディレクトを作業フォルダに移動します。
カレントディレクトリ移動は「cd」コマンドを入力後にファインダーで対象フォルダを選択後、そのフォルダをターミナルにドラッグ アンド ドロップすればOKです。
プログラムの実行コマンドは以下。最後のbirdは欲しいが画像の検索キーワードでこの例ではbirdの写真を取得
python download.py bird
**参考:Beejs Python Flickr API導入について
参考:Flickr API取得のページの下方にあるPython項目の「Beej’s Python Flickr API」をクリックして該当のページへ行きます。
コメントを投稿するにはログインしてください。