Weather API Service Сервис для получения информации о погоде через Open-Meteo API с автоматическим обновлением данных.
Особенности
-
Получение текущей погоды по координатам
-
Добавление городов для отслеживания
-
Почасовой прогноз на 24 часа
-
Автоматическое обновление данных каждые 15 минут
-
Выборочное получение параметров погоды
-
Встроенные тесты API
Требования Python 3.7 или выше
Доступ в интернет (для установки пакетов и получения данных о погоде)
Установка и запуск
Скрипт автоматически установит все необходимые зависимости при первом запуске:
python3 script.py
После запуска сервис будет доступен по адресу: http://127.0.0.1:8000
API Endpoints
-
Текущая погода по координатам: GET /weather/current?latitude={lat}&longitude={lon} Параметры: latitude: широта (-90 до 90) longitude: долгота (-180 до 180)
-
Добавление города для отслеживания GET /cities/add?name={name}&latitude={lat}&longitude={lon} Параметры: name: название города latitude: широта longitude: долгота
-
Список отслеживаемых городов GET /cities
-
Погода в городе на указанное время GET /cities/{city_name}/weather?time={HH:MM}¶meters={params} Параметры: time: время в формате "ЧЧ:ММ" parameters: список параметров через запятую (температура, влажность, давление, скорость ветра, осадки) Доступные параметры: temperature - температура humidity - влажность pressure - давление wind_speed - скорость ветра precipitation - осадки
-
Тестирование API GET /test Запускает серию тестов для проверки работоспособности всех endpoints.(http://127.0.0.1:8000/test)
Автоматическое обновление Сервис автоматически обновляет данные о погоде для всех отслеживаемых городов каждые 15 минут. Обновление происходит в фоновом режиме без прерывания работы API.
Документация Интерактивная документация Swagger UI доступна по адресу: http://127.0.0.1:8000/docs
Примечания Данные предоставляются сервисом Open-Meteo
Для работы требуется подключение к интернету
Все данные кэшируются и обновляются автоматически
При первом запуске происходит автоматическая установка зависимостей (fastapi, httpx, uvicorn)