Получение и использование токена Open Exchange Rates в Python

Зачем это нужно
API курсов валют позволяет автоматически получать актуальные обменные курсы и использовать их в учетных системах, интернет-магазинах, бухгалтерии или аналитике. Коротко: токен обеспечивает аутентификацию запросов к Open Exchange Rates, а Python-скрипт преобразует курсы в конвертер.
Как получить токен на Open Exchange Rates
- Зайдите на сайт Open Exchange Rates и войдите в аккаунт или зарегистрируйтесь. Вы можете начать с бесплатного плана, если он покрывает ваши потребности:

- В личном кабинете откройте меню слева и перейдите на страницу «App IDs»:

- На странице должен быть сгенерированный App ID. Скопируйте его и сохраните в безопасном месте — это ваш токен для API.
Important: бесплатный план может иметь ограничение по частоте запросов и по набору функций. Если нужен более частый апдейт курсов или локализованные валюты, рассмотрите платный план.
Как использовать токен в Python для получения курсов
Ниже — минимальный пример, который получает последние курсы и выводит список доступных валют. Скопируйте в файл currency-exchange-converter.py.
import requests
# вставьте сюда ваш App ID
api_key = "Your App ID here"
# URL с указанием токена
url = f"https://openexchangerates.org/api/latest.json?app_id={api_key}"
# делаем GET-запрос и получаем JSON
response = requests.get(url)
data = response.json()
# словарь курсов в формате {'USD': 1.0, 'EUR': 0.85, ...}
exchange_rates = data["rates"]
# вывод доступных валют
available_currencies = ""
for currency in exchange_rates.keys():
available_currencies += currency + ", "
# удаляем завершающую запятую и пробел
available_currencies = available_currencies[:-2]
print("Available currencies: " + available_currencies)Пояснения:
- В ответе поле rates — это словарь, где ключи — код валюты ISO 4217, значения — курс относительно базовой валюты (по умолчанию USD).
- Например, запись ‘AED’: 3.67286 означает, что 1 USD ≈ 3.67286 AED.
Локализованный пример конвертера (с проверкой ошибок)
Ниже улучшенный вариант, который проверяет ввод пользователя и обрабатывает ошибки сети.
import requests
api_key = "Your App ID here"
url = f"https://openexchangerates.org/api/latest.json?app_id={api_key}"
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
data = response.json()
exchange_rates = data["rates"]
except requests.RequestException as e:
print("Ошибка при обращении к API:", e)
raise SystemExit(1)
# Показать список валют
print("Доступные валюты:")
print(", ".join(sorted(exchange_rates.keys())))
from_currency = input("Введите базовую валюту: ").upper()
to_currency = input("Введите целевую валюту: ").upper()
if from_currency not in exchange_rates or to_currency not in exchange_rates:
print("Одна из указанных валют не поддерживается.")
raise SystemExit(1)
try:
amount = float(input("Введите сумму для конвертации: "))
except ValueError:
print("Неверный формат суммы.")
raise SystemExit(1)
original_amount = amount / exchange_rates[from_currency]
converted_amount = original_amount * exchange_rates[to_currency]
print(f"{amount} {from_currency} = {converted_amount} {to_currency}")Notes: всегда обрабатывайте сетевые ошибки и проверяйте, что код валюты есть в возвращаемом словаре.
Как запустить скрипт
- Откройте терминал и перейдите в папку с файлом, например:
cd C:\Users\Sharl\Desktop- Установите библиотеку requests, если она не установлена:
pip install requests- Запустите скрипт:
python currency-exchange-converter.py- Введите базовую валюту, целевую валюту и сумму. Скрипт выведет результат. Пример работы в командной строке:

Когда этот подход не сработает
- Если вам нужны исторические данные со частотой выше, чем предоставляет тариф — бесплатный план может не подойти.
- Если нужна точная котировка для мгновенных финансовых операций (торговля на бирже), API общего назначения может иметь задержки и округления.
- При отсутствии стабильного интернета скрипт не сможет получить обновления — храните кэш или используйте fallback-режим.
Альтернативы и дополнения
- Другие бесплатные/платные API: exchangerate.host (бесплатный), Fixer.io, Currencylayer. Сравнивайте по частоте обновления, доступным валютам и лимитам.
- Локальные библиотеки: forex-python, money, decimal для аккуратной работы с денежными величинами.
- Для продакшна используйте контроль версий, автоматические тесты и периодическое обновление токена, если политика провайдера это требует.
Мини-методология тестирования
- Модульные тесты: мокать HTTP-ответы и проверять парсинг data[“rates”].
- Интеграционные тесты: запрос к тестовому окружению API (если провайдер даёт sandbox).
- Приёмочные тесты: ввести пару валют и сумму; сверить результат с эталоном.
Критерии приёмки
- Скрипт успешно получает rates и не падает при доступности сети.
- Скрипт валидирует коды валют и сумму.
- При сетевой ошибке выводится понятное сообщение и код возврата != 0.
- Данные корректно конвертируются для трёх выбранных тестовых пар (например, USD→EUR, EUR→GBP, JPY→USD).
Роль-based checklist
Разработчик:
- Хранит токен в переменных окружения, не в коде.
- Добавляет обработку исключений и логирование.
QA:
- Тестирует поведение при недоступном API, при невалидном токене и при превышении лимита запросов.
Ops:
- Настраивает мониторинг ошибок и алерты на неуспешные запросы.
- Организует ротацию токенов и безопасное хранение секретов.
Шпаргалка по безопасности и конфигурации
- Никогда не коммитите App ID в публичные репозитории.
- Храните токен в переменных окружения или в секретном хранилище (Vault, AWS Secrets Manager и т.п.).
- Ограничьте частоту запросов и используйте кеширование, чтобы не превысить лимиты.
Тестовые случаи (пример)
- Успешный запрос: API возвращает rates — ожидаем конвертацию.
- Неверный App ID: API возвращает 401 — приложение должно сообщить об ошибке авторизации.
- Превышение лимита: API возвращает 429 — приложение должно падать с понятным сообщением или включать backoff.
Итог
Вы научились: получить App ID (токен) в Open Exchange Rates, использовать его в Python для получения курсов, реализовать локальный конвертер с обработкой ошибок и тестовой методологией. Для продакшна добавьте безопасное хранение токенов, логирование и мониторинг.
Summary:
- Сохраняйте App ID локально и безопасно.
- Обрабатывайте сетевые и API-ошибки.
- Тестируйте и кэшируйте курсы для снижения нагрузки.
Important: проверьте ограничения выбранного тарифа и убедитесь, что частота обновления курсов и набор валют удовлетворяют вашим требованиям.
Похожие материалы
Пересылка почты Outlook ↔ Gmail: полное руководство
Как узнать, что пора менять батарейку AirTag
Как удалить устройства из Google Home
Вернуть «Open command window here» в Windows 11
Подключение Bluetooth-наушников к Wear OS