はじめに
Pythonで画像データを取得してみたいと思います。 flickr の画像取得は、flickr API を使用します。
flickrのAPIは以下に記載されています
https://www.flickr.com/services/api/
APIを使用して画像情報を取得してみる
flickrのAPIを使用して画像の情報を取得します。
コマンドプロンプト上から python [コードのファイル名] monkey と打つと画像情報を取得できます。
コード例
import flickrapi from urllib.request import urlretrieve from pprint import pprint import os, time, sys # APIキーの情報 key = "d21bac140e0245aed437c6c812f27d44" secret = "b5e79704c13a3d15" wait_time = 1 # コマンドライン引数の 1 番目の値を取得 animalname = sys.argv[1] # 画像を保存するディレクトリを指定 savedir = "./" + animalname flickr = flickrapi.FlickrAPI(key, secret, format='parsed-json') result = flickr.photos.search( # 検索キーワード text = animalname, # 取得するデータ件数 per_page = 2, # 検索するデータの種類(ここでは、写真) media = 'photos', # データの並び順(関連順) sort = 'relevance', # UI コンテンツを表示しない safe_search = 1, # 取得したいオプションの値(url_q->画像のアドレスが入っている情報、licence -> ライセンス情報) extras = 'url_q, licence' ) photos = result['photos'] # 戻り値を表示する # pprint(photos)
{'page': 1, 'pages': 498092, 'perpage': 2, 'photo': [{'farm': 4, 'height_q': '150', 'id': '15557905405', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'owner': '101295317@N06', 'secret': '05357b440d', 'server': '3928', 'title': 'monkey', 'url_q': 'https://live.staticflickr.com/3928/15557905405_05357b440d_q.jpg', 'width_q': '150'}, {'farm': 1, 'height_q': '150', 'id': '297887549', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'owner': '12345287@N00', 'secret': '2dc0ee273f', 'server': '110', 'title': 'monkey', 'url_q': 'https://live.staticflickr.com/110/297887549_2dc0ee273f_q.jpg', 'width_q': '150'}], 'total': '996183'}
次に、画像を実際にダウンロードします。
コマンドプロンプト上から python [コードのファイル名] monkey と打つと画像データがダウンロードされます。
コード例
import flickrapi from urllib.request import urlretrieve from pprint import pprint import os, time, sys # APIキーの情報 key = "d21bac140e0245aed437c6c812f27d44" secret = "b5e79704c13a3d15" wait_time = 1 # コマンドライン引数の 1 番目の値を取得 animalname = sys.argv[1] # 画像を保存するディレクトリを指定 savedir = "./" + animalname flickr = flickrapi.FlickrAPI(key, secret, format='parsed-json') result = flickr.photos.search( # 検索キーワード text = animalname, # 取得するデータ件数 per_page = 400, # 検索するデータの種類(ここでは、写真) media = 'photos', # データの並び順(関連順) sort = 'relevance', # UI コンテンツを表示しない safe_search = 1, # 取得したいオプションの値(url_q->画像のアドレスが入っている情報、licence -> ライセンス情報) 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)