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-запрос добавит город {city} в базу данных и вернёт сообщение об успехе/неудаче
curl -X POST -d '' 127.0.0.1:8080/weather/{city}
Данный GET-запрос возвращает информацию по всем городам, добавленным в базу данных.
curl 127.0.0.1:8080/last_weather
При указании необязательного параметра {search} будет применён поиск по частичному совпадению
curl 127.0.0.1:8080/last_weather?search={search}
Получает сводку по городу {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}
Заметьте, что для передачи некоторых символов в браузере следует использовать заменяющие конструкции