【Python】Poke APIでポケモンゲットだぜ!

新米太郎
新米太郎

皆さんこんにちは新米です。

今回はPoke APIとPythonを使ってピカチュウの画像をゲットしましょう(笑)
ポケモンマスターに俺はなる!!!


Poke APIで何ができる?

Poke APIを使うと、ポケモンの各種データが得られます。
例えば、、ID、名前、画像など様々なデータが取得できます。

 

もちろん無料で提供しているよ!
>>Poke API公式サイトはこちら

データを取得する方法

今回アクセスするエンドポイントは以下を使用します。

https://pokeapi.co/api/v2/pokemon/id又はname/

 

nameは日本語指定ではなく英語指定なので注意!
例えばid1のフシギダネはBulbasaurです。

>>各ポケモンのidとnameの詳細はこちら

 

今回はピカチュウの画像が欲しいので
エンドポイントには/25又は/picachuを指定します。

※他ポケモンの画像が欲しい場合は別のid又はnameを指定してね。

ピカチュウの画像ゲットだぜ!

【処理の流れ】

①エンドポイントに/picachuを指定
②jsonデータを取得
③ピカチュウの画像(url)を取得&ファイルパス用の名前も取得
④urlの画像が取得できればステータスコード200を返す
⑤ピカチュウゲットだぜ!
import requests

POKE_API_URL = 'https://pokeapi.co/api/v2/pokemon/'  # APIのURL

def main(id):
    r = requests.get(POKE_API_URL + id, timeout=5)  # 5秒以上応答がない場合はエラー
    print(POKE_API_URL + id)
    if not check_stats(r):
      return
    data = r.json()
    name = data['name']
    image_url = data['sprites']['front_default']  # あくまでここは画像のurl
    file_path = './' + name + '.jpg'  # 格納するファイルパスを作成
    download_image(image_url, file_path)

def check_stats(req):
    if req.status_code != 200:
      print('ポケモンを逃した')  # アクセスエラー
      return False
    return True

def download_image(url, fpath):
    r = requests.get(url, stream=True)
    if not check_stats(r):
      return
    with open(fpath, "wb") as f:
      f.write(r.content)
      print('ポケモンゲットだぜ!')  # 画像の取得成功

if __name__ == '__main__':
    main('pikachu')#引数にエンドポイントを指定

 

【実行結果】

python3 main.py
ポケモンゲットだぜ!

 

【取得した画像】



まとめ

いかがだったでしょうか。

他にも無料で提供しているAPIはたくさんあるので遊んでみて下さい。

また別のポケモンの情報を読み込んでポケモン図鑑を作成したりすると
面白そうですね。

 

新米太郎
新米太郎

最後まで読んでくれてありがとう



コメント

タイトルとURLをコピーしました