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

Получение и использование токена 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
Автор
Редакция

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

CSS font-family: как менять шрифты на сайте
Frontend

CSS font-family: как менять шрифты на сайте

График амортизации кредита в Excel — пошагово
Финансы

График амортизации кредита в Excel — пошагово

Разгон Raspberry Pi 4 — безопасный пошаговый гид
Аппаратное обеспечение

Разгон Raspberry Pi 4 — безопасный пошаговый гид

Как запустить Windows 11 на Mac — варианты и советы
Mac

Как запустить Windows 11 на Mac — варианты и советы

Мошенничество с возвратом средств через техподдержку
Безопасность

Мошенничество с возвратом средств через техподдержку

Диагональная обрезка в Canva — как сделать эффектно
Дизайн

Диагональная обрезка в Canva — как сделать эффектно