Skip to content

API for getting information about the weather in cities from a given list

Notifications You must be signed in to change notification settings

MirrorAzure/weather-report

Repository files navigation

Weather Report

API для получения информации о погоде в заданных городах

Weather Report позволяет задать список городов и каждую минуту получать информацию о температуре, давлении и скорости ветра в них.

Для получения информации используется API сайта https://openweathermap.org/

Используемые технологии

Weather Report для своей работы использует следующий стек технологий:

  • FastAPI - API для взаимодействия с пользователем
  • Scrapy - Парсер для получения данных с API openweathermap
  • Sqlite - БД
  • APScheduler - Планировщик для запуска парсера
  • Uvicorn - ASGI-сервер

Инструкция по запуску

Для запуска программы понадобится Docker, его можно скачать с официального сайта

Отредактируйте файл .env, вам потребуется указать ваш API-токен от openweathermap. Узнать его можно здесь (необходима регистрация)

WEATHER_API_TOKEN=your_token_here

Перейдите в директорию с проектом, запустите команду:

docker-compose up

Если вы хотите продолжить пользоваться консолью, добавьте к команде флаг -d:

docker-compose up -d

Всё готово, вы прекрасны!

Использование

Если всё прошло успешно, вы сможете подключиться к серверу (воспользуйтесь браузером или утилитой curl):

curl 127.0.0.1:8080

Для взаимодействия с API предусмотрен следующий набор запросов:

POST 127.0.0.1:8080/weather/{city}

Такой POST-запрос добавит город {city} в базу данных и вернёт сообщение об успехе/неудаче

curl -X POST -d '' 127.0.0.1:8080/weather/{city}

GET 127.0.0.1:8080/last_weather?search={search}

Данный GET-запрос возвращает информацию по всем городам, добавленным в базу данных.

curl 127.0.0.1:8080/last_weather

При указании необязательного параметра {search} будет применён поиск по частичному совпадению

curl 127.0.0.1:8080/last_weather?search={search}

GET 127.0.0.1:8080/city_stats?q={q}&period_begin={date1}&period_end={date2}

Получает сводку по городу {q} за период с {date1} по {date2}. Параметры date необязательные, они должны передаваться в виде строки в формате "YYYY-MM-DD HH:MI:SS"

curl 127.0.0.1:8080/city_stats?q={q}&period_begin={date1}&period_end={date2}

Заметьте, что для передачи некоторых символов в браузере следует использовать заменяющие конструкции

About

API for getting information about the weather in cities from a given list

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published