Не работает парсер базы героев игры Dota 2

Всем привет! Нужна помощь с кодом на Python: написал парсер базы героев игры Dota 2, но информацию он не выдает.

import requests
import json

def get_heroes():
    response = requests.get('https://api.opendota.com/api/heroes')
    if response.status_code == 200:
        heroes_data = response.json()
        heroes = [hero['localized_name'] for hero in heroes_data]
        return heroes
    else:
        return []

def get_hero_info():
    url = "https://api.opendota.com/api/heroes"
    response = requests.get(url)
    heroes_data = response.json()
    return heroes_data

def get_hero_versus(hero_id, hero_data):
    url = f"https://api.opendota.com/api/heroes/{hero_id}/matchups"
    response = requests.get(url)
    hero_versus_data = response.json()
    versus_heroes = []
    for hero in hero_versus_data:
        if hero['games_played'] > 0:
            versus_heroes.append({
                'hero_id': hero['hero_id'],
                'games_played': hero['games_played'],
                'wins': hero['wins'],
                'win_rate': round(hero['wins'] / hero['games_played'] * 100, 2)
            })
    sorted_versus_heroes = sorted(versus_heroes, key=lambda x: x['win_rate'], reverse=True)
    return sorted_versus_heroes

def get_hero_by_name(hero_name, hero_data):
    for hero in hero_data:
        if hero['localized_name'].lower() == hero_name.lower():
            return hero
    return None

def print_hero_info(hero, versus_heroes):
    if hero:
        print(f"Информация о герое {hero['localized_name']}:")
        print(f"Полномочия героя: {hero['roles']}")
        print()

        if versus_heroes:
            best_versus = versus_heroes[0]
            worst_versus = versus_heroes[-1]
            heroes_data = get_hero_info()
            best_versus_hero = get_hero_by_name(str(best_versus['hero_id']), heroes_data)
            worst_versus_hero = get_hero_by_name(str(worst_versus['hero_id']), heroes_data)

            print(f"Лучший противник героя {hero['localized_name']}:")
            if best_versus_hero:
                print(f"Герой: {best_versus_hero['localized_name']}")
                print(f"Сыграно матчей: {best_versus['games_played']}")
                print(f"Побед: {best_versus['wins']}")
                print(f"Процент победы: {best_versus['win_rate']}%")
            else:
                print("Информация о лучшем противнике отсутствует.")
            print()

            print(f"Худший противник героя {hero['localized_name']}:")
            if worst_versus_hero:
                print(f"Герой: {worst_versus_hero['localized_name']}")
                print(f"Сыграно матчей: {worst_versus['games_played']}")
                print(f"Побед: {worst_versus['wins']}")
                print(f"Процент победы: {worst_versus['win_rate']}%")
            else:
                print("Информация о худшем противнике отсутствует.")
        else:
            print("Нет информации о противниках.")
    else:
        print("Герой не найден.")

def main():
    heroes_data = get_hero_info()

    while True:
        hero_name = input("Введите имя героя (для выхода введите 'exit'): ")
        if hero_name.lower() == "exit":
            break

        hero = get_hero_by_name(hero_name, heroes_data)
        if hero:
            versus_heroes = get_hero_versus(hero['id'], heroes_data)
            print_hero_info(hero, versus_heroes)
        else:
            print("Герой не найден.")

if __name__ == "__main__":
    main()

Ответы (1 шт):

Автор решения: Сергей Ш
def get_hero_by_id(hero_name, hero_data):
    for hero in hero_data:
        if hero['id'] == hero_name:
            return hero
    return None

def print_hero_info(hero, versus_heroes, heroes_data):
    ...
    best_versus = versus_heroes[0]
    worst_versus = versus_heroes[-1]
    best_versus_hero = get_hero_by_id(best_versus['hero_id'], heroes_data)
    worst_versus_hero = get_hero_by_id(worst_versus['hero_id'], heroes_data)
    ...

def main():
    ...
    print_hero_info(hero, versus_heroes, heroes_data)
    ...
→ Ссылка