rudinast / l1-currency-parser

1 stars 0 forks source link

Обработать магические числа протокола и числа дней #4

Open Allyonzy opened 5 days ago

Allyonzy commented 5 days ago

Число 200 вынести в переменную, например, словарь по основным кодам ответа HTTP. Пример:

# Импортируем модуль http для получения описаний статусов
from http import HTTPStatus

# Создаем словарь с основными кодами состояния HTTP
http_status_dict = {
    HTTPStatus.OK: "Успешно",
    HTTPStatus.BAD_REQUEST: "Неверный запрос",
    HTTPStatus.UNAUTHORIZED: "Не авторизован",
    HTTPStatus.FORBIDDEN: "Запрещено",
    HTTPStatus.NOT_FOUND: "Не найдено",
    HTTPStatus.INTERNAL_SERVER_ERROR: "Внутренняя ошибка сервера",
}

Число 365 вынести в переменную. Сейчас это "магическое число". Пишем название большими буквами, если это константа и не меняется в ходе программы

DAYS_IN_YEAR = 365 # Количество дней для парсинга

Рекомендации по этому коду:

 for days_ago in range(365):
        date_str = (datetime.now() - timedelta(days=days_ago)).strftime('%Y/%m/%d')
        url = f"{base_url}{date_str}/daily_json.js"

        try:
            response = requests.get(url)
            if response.status_code == 200:
                data = response.json()
                if 'Valute' in data and 'USD' in data['Valute']:
                    usd_rate = data['Valute']['USD']['Value']
                    # Сохраняем дату и курс валюты в словарь
                    currency_data[date_str] = usd_rate
                else:
                    print(f"Данные за {date_str} отсутствуют или некорректны.")
            else:
                print(f"Не удалось получить данные за {date_str}, статус код: {response.status_code}")
        except Exception as e:
            print(f"Ошибка при получении данных за {date_str}: {e}")
Allyonzy commented 5 days ago

Аналогично сделать с адресом. Это больше похоже на константу

BASE_URL = "https://www.cbr-xml-daily.ru/archive/"
Allyonzy commented 5 days ago

В Readme указать рекомендуемые даты поиска (проблема с отсутствием данных, с которыми можно столкнуться)

Allyonzy commented 5 days ago

Наименование валюты также можно добавить в константу ['USD']