Гид по технологиям

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

4 min read Python Обновлено 01 Apr 2026
Open Exchange Rates в Python: токен и пример
Open Exchange Rates в Python: токен и пример

Телефон и ноутбук с информацией о курсах валют

Зачем это нужно

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

Как получить токен на Open Exchange Rates

  1. Зайдите на сайт Open Exchange Rates и войдите в аккаунт или зарегистрируйтесь. Вы можете начать с бесплатного плана, если он покрывает ваши потребности: Страница тарифов Open Exchange Rates с вариантами аккаунтов
  2. В личном кабинете откройте меню слева и перейдите на страницу «App IDs»: Страница App IDs в личном кабинете Open Exchange Rates
  3. На странице должен быть сгенерированный 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: всегда обрабатывайте сетевые ошибки и проверяйте, что код валюты есть в возвращаемом словаре.

Как запустить скрипт

  1. Откройте терминал и перейдите в папку с файлом, например:
cd C:\Users\Sharl\Desktop
  1. Установите библиотеку requests, если она не установлена:
pip install requests
  1. Запустите скрипт:
python currency-exchange-converter.py
  1. Введите базовую валюту, целевую валюту и сумму. Скрипт выведет результат. Пример работы в командной строке: Конвертер валют в командной строке

Когда этот подход не сработает

  • Если вам нужны исторические данные со частотой выше, чем предоставляет тариф — бесплатный план может не подойти.
  • Если нужна точная котировка для мгновенных финансовых операций (торговля на бирже), API общего назначения может иметь задержки и округления.
  • При отсутствии стабильного интернета скрипт не сможет получить обновления — храните кэш или используйте fallback-режим.

Альтернативы и дополнения

  • Другие бесплатные/платные API: exchangerate.host (бесплатный), Fixer.io, Currencylayer. Сравнивайте по частоте обновления, доступным валютам и лимитам.
  • Локальные библиотеки: forex-python, money, decimal для аккуратной работы с денежными величинами.
  • Для продакшна используйте контроль версий, автоматические тесты и периодическое обновление токена, если политика провайдера это требует.

Мини-методология тестирования

  1. Модульные тесты: мокать HTTP-ответы и проверять парсинг data[“rates”].
  2. Интеграционные тесты: запрос к тестовому окружению API (если провайдер даёт sandbox).
  3. Приёмочные тесты: ввести пару валют и сумму; сверить результат с эталоном.

Критерии приёмки

  • Скрипт успешно получает 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: проверьте ограничения выбранного тарифа и убедитесь, что частота обновления курсов и набор валют удовлетворяют вашим требованиям.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Пересылка почты Outlook ↔ Gmail: полное руководство
Почта

Пересылка почты Outlook ↔ Gmail: полное руководство

Как узнать, что пора менять батарейку AirTag
Гаджеты

Как узнать, что пора менять батарейку AirTag

Как удалить устройства из Google Home
Умный дом

Как удалить устройства из Google Home

Вернуть «Open command window here» в Windows 11
Windows

Вернуть «Open command window here» в Windows 11

Подключение Bluetooth-наушников к Wear OS
Гаджеты

Подключение Bluetooth-наушников к Wear OS

Запустить успешную страницу на Patreon
Монетизация

Запустить успешную страницу на Patreon