pokeapiで遊んでみた

2024/08/01

pokeapi

pokeapiで遊んだ内容をまとめました。(何を隠そう筆者は重度のポケモンオタクなのです。)

pokeapi とは

ポケモンの情報を提供する非公式のRESTful APIです。
ポケモンのゲームやアプリケーション、ウェブサイトなどでポケモンに関連するデータを取得するために利用されています。
データベースには、ポケモンの種類、進化、能力、技、アイテム、ゲーム内の場所など、さまざまな情報が含まれています。
詳細は公式サイトを確認してください。

使い方

PokeAPIは、エンドポイントに対してHTTPリクエストを送信することで使用できます。
例えば、特定のポケモンの情報を取得するには、次のようなエンドポイントにアクセスします。

https://pokeapi.co/api/v2/pokemon/{id or name}/

ここで、{id or name}にはポケモンの図鑑番号や名前を入力します。
例えば、ピカチュウの情報を取得するには、https://pokeapi.co/api/v2/pokemon/pikachu/にアクセスします。

サンプルプログラム

実際にpokeapiをにアクセスしてポケモンの情報を取得するサンプルプログラムを作成しました。

pokemon.py
import requests

# APIのベースURLで、ユーザー入力により 'id_or_name' の部分が置き換えられる。
URL = 'https://pokeapi.co/api/v2/pokemon/id_or_name'

def main():
    # ユーザーにポケモンの図鑑IDまたは名前を入力するよう促す。
    print('Please enter the Pokémon‘s Pokédex id or name.')
    id_or_name = input('>> ')  # ユーザーからの入力を取得する。

    # ユーザー入力でAPIのURLを更新する。
    url = URL.replace('id_or_name', id_or_name)

    # ポケモンデータを取得するための関数を呼び出す。
    response = fetch_pokemon(url)

    # 取得したデータをフォーマットして表示する。
    print(f'id   : {response["id"]}')
    print(f'image: {response["sprites"]["front_default"]}')

def fetch_pokemon(url: str) -> any:
    while True:
        # 指定したURLでHTTP GETリクエストを送信する。
        response = requests.get(url)

        # 入力が間違っている場合(404エラー)、再入力を促す。
        if response.status_code == 404:
            print('The Pokémon‘s Pokédex id or name you entered is incorrect. Please re-enter it.')
            id_or_name = input('>> ')
            # 新しい入力に基づいてURLを再構築する。
            url = URL.replace('id_or_name', id_or_name)
        else:
            break

    return response.json()  # JSON形式のデータを返す。

# プログラムが直接実行された場合、main関数を呼び出す。
if __name__ == '__main__':
    main()

プログラムを実行して、ピカチュウの情報を取得してみました。

root@21d19cc1c2d0:# python pokemon.py
Please enter the Pokémon‘s Pokédex number or name.
>> 25
id  : 25
name: pikachu

今回はここまでです。