前提・実現したいこと
flickrで1万単位で画像の収集を可能にしたい
はじめ、150,150の画像サイズで400枚の画像のダウンロードはできたが
画像のサイズを元画像のサイズでダウンロードするとエラーが発生した。
エラーの回避方法とflickrから数万単位の画像の収集を可能にしたいです。
よろしくお願いします。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "gatherflickr.py", line 44, in <module> url_c = photo['url_c'] KeyError: 'url_c'
該当のソースコード
from flickrapi import FlickrAPI from urllib.request import urlretrieve from pprint import pprint import os, time, sys # API キーの情報 key ="" secret = "" # 重要:リクエストを送るタイミングが短すぎると画像取得先のサーバを逼迫してしまうか、 # スパムとみなされてしまう可能性があるので、待ち時間を 1 秒間設ける。 wait_time = 8 # コマンドライン引数の 1 番目の値を取得 animalname = sys.argv[1] # 画像を保存するディレクトリを指定 savedir = "./" + animalname # FlickrAPI にアクセス # FlickrAPI(キー、シークレット、データフォーマット{json で受け取る}) flickr = FlickrAPI(key, secret, format='parsed-json') result = flickr.photos.search( # 検索キーワード text = animalname, # 取得するデータ件数 per_page = 10000, # 検索するデータの種類(ここでは、写真) media = 'photos', # データの並び順(関連順) sort = 'relevance', # UI コンテンツを表示しない safe_search = 1, # 取得したいオプションの値(url_q->画像のアドレスが入っている情報、licence -> ライセンス情報) extras = 'url_c, licence' ) # 結果を表示 photos = result['photos'] # pprint(photos) # 追記 for photo in photos['photo']: url_c = photo['url_c'] filepath = savedir + '/' + photo['id'] + '.jpg' # ファイルが重複していたらスキップする if os.path.exists(filepath): continue # データをダウンロードする urlretrieve(url_c, filepath) # 重要:サーバを逼迫しないように 1 秒待つ time.sleep(wait_time)
試したこと
はじめurl_qに指定(画像サイズを(150,150))で400枚入手はできた。
time.sleepを8秒に伸ばしたりした
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。