Skip to content

Latest commit

 

History

43 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Weather App

Описание

Weather App — это веб-приложение для анализа погоды в нескольких городах, отображаемое на интерактивной карте. Пользователи могут вводить названия городов и получать текущую погоду для выбранных локаций. Кроме того, приложение позволяет добавлять дополнительные точки маршрута, автоматически выводя информацию о погоде для каждой точки. Визуализация погоды включает карты с маркерами и подробные прогнозы по критериям: температура, влажность, скорость ветра и вероятность осадков.

Функционал

  • Поиск погоды в нескольких городах: Пользователь вводит названия городов, и приложение находит их координаты с помощью геокодера.
  • Получение данных о текущей погоде: Используется API для получения актуальной информации о погоде для каждого города.
  • Анализ погоды: Приложение анализирует параметры погоды (температура, влажность, скорость ветра, вероятность осадков) и выдает рекомендацию (например, "Хорошая погода" или "Плохая погода").
  • Отображение данных на интерактивной карте: Погода для каждого города показывается на карте с маркерами и краткой информацией.
  • Добавление промежуточных точек: Пользователи могут добавлять дополнительные города, и их погода будет отображаться на той же карте.

Как запустить проект

1. Клонируйте репозиторий

Скачайте проект на локальную машину:

git clone https://github.com/affame/suprojectpy.git

2. Установите зависимости

Убедитесь, что у вас установлен Python 3.8 или выше, затем установите все необходимые библиотеки:

pip install -r requirements.txt

3. Получите API токен Яндекса:

Для работы с географическим API Яндекса (получение координат городов) необходимо получить API токен. Для этого:

Перейдите в Яндекс.Карты API и получите API токен. Вставьте полученный токен в переменную YANDEX_API_KEY в файле services/yandex_geo.py:

YANDEX_API_KEY = 'ваш_токен_яндекса'

4. Запустите приложение

Запустите приложение командой:

python app.py

После этого приложение будет доступно по адресу: http://127.0.0.1:5000/ в вашем браузере.

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

  • Перейдите на главную страницу приложения.
  • Введите названия двух городов в соответствующие поля.
  • Нажмите кнопку "Получить прогноз".
  • Приложение отобразит результаты по погоде для выбранных городов, включая карту с маркерами.
  • Добавьте дополнительные города, чтобы увидеть погоду для промежуточных точек маршрута.

Как работает приложение

Главная страница (index.html)

На главной странице пользователь может ввести начальный и конечный города маршрута, а также промежуточные города. После отправки формы происходит следующее:

  1. Получение координат: Приложение использует API Яндекса для получения координат (широта и долгота) каждого города.
  2. Загрузка прогноза погоды: Для каждого города приложение делает запрос к API погоды (Open-Meteo) для получения прогноза на заданное количество дней (по умолчанию 3 дня).

Карта маршрута (Dash)

После отправки формы пользователь перенаправляется на страницу с картой маршрута. Маршрут между городами отображается на карте с помощью библиотеки Dash и Leaflet. Пользователь может:

  1. Кликать на маркеры: Для каждого города на карте размещен маркер, при клике на который появляется информация о погоде для этого города.
  2. Графики прогноза погоды: Для каждого города доступен график, который можно настроить для отображения температуры, скорости ветра или осадков.

График прогноза погоды

Для выбранного города и выбранной метрики (температура, скорость ветра или осадки) строится график, отображающий данные за указанный период (по умолчанию 3 дня). График строится с помощью библиотеки Plotly и включает:

  1. Ось X: даты прогноза.
  2. Ось Y: значения выбранной метрики (например, температура или скорость ветра).

Страница ошибки (error.html)

Если при обработке данных возникла ошибка (например, если введен некорректный город), будет отображена страница с ошибкой с сообщением типа:

Как работает бот

Weather Route Bot(Черный проект)

Этот бот помогает пользователю узнать прогноз погоды для маршрута, включая начальный, конечный и промежуточные города. Бот использует API для получения координат городов и прогнозов погоды. Для его установки требуется проделать те же шаги, что указаны сверху, но в дополнение необходимо получить Telegram Bot API token.

Как работает бот

  1. При запуске бота с командой /start, он приветствует пользователя и объясняет, как использовать функционал.
  2. Пользователь может получить прогноз погоды для маршрута, введя начальный и конечный город, а также промежуточные города (если они есть).
  3. Бот покажет пользователю прогноз погоды для каждого города на выбранный период (1, 3, 5 или 7 дней).
  4. Бот использует Yandex Geocoder API для получения координат городов и Open Meteo API для получения прогноза погоды.

Шаг 1: Получение API токенов

Для работы бота вам понадобятся два токена:

  1. Telegram Bot API Token: Чтобы создать бота и получить его токен:

    • Перейдите в BotFather в Telegram.
    • Создайте нового бота, следуя инструкциям. После создания вы получите уникальный токен для вашего бота.
  2. Yandex Geocoder API Key: Для получения координат городов через Яндекс API:

    • Перейдите в Yandex API и создайте новый ключ API для сервиса геокодирования.

Шаг 2: Настройка бота

BOT_TOKEN = "your_telegram_bot_token_here"
YANDEX_API_KEY = "your_yandex_geocoder_api_key_here"

Замените your_telegram_bot_token_here и your_yandex_geocoder_api_key_here на соответствующие значения.

Шаг 3: Запуск бота

После того как вы настроили все переменные, вы можете запустить бота с помощью следующей команды:

python bot.py

Бот будет работать в режиме polling и будет готов принимать команды от пользователей.

Команды бота

  • /start — Приветственное сообщение и описание функционала бота.
  • /help — Справка по командам.
  • /weather — Запуск процесса прогнозирования погоды для маршрута. Пользователь вводит начальный город, конечный и промежуточные города, и бот предоставляет прогноз погоды.

Ожидаемая структура маршрута

После запуска команды /weather бот попросит ввести:

  1. Начальный город.
  2. Конечный город.
  3. Промежуточные города через запятую (если есть, если нет — введите "нет").
  4. Выберите период прогноза (1, 3, 5 или 7 дней).

Бот вернет прогноз погоды для каждого города на выбранный период.

Возможные ошибки

  • Если бот не может найти координаты города, он сообщит об этом пользователю.
  • Если данные API недоступны или некорректны, бот также информирует об ошибке.

Структура проекта

/weather-app
│
├── app.py                  # Основной файл приложения, обработка запросов
├── bot/
│   ├── __init__.py         # Пустой файл для инициализации пакета
│   ├── bot.py              # Бот прогноза погоды для черного проекта
├── services/
│   ├── __init__.py         # Пустой файл для инициализации пакета
│   ├── model.py            # Функции для анализа погоды
│   ├── weather.py          # Функции для получения данных о погоде
│   └── yandex_geo.py       # Файл для работы с геокодированием (получение координат по городам)
├── templates/
│   ├── error.html          # Страница ошибки
│   ├── index.html          # Главная страница (форма ввода)
│   └── result.html         # Страница с результатами
├── requirements.txt        # Файл с зависимостями
├── answers.txt             # Файл с ответами на вопросы
└── README.md               # Этот файл

Зависимости

  • Flask: Для создания веб-приложения.
  • geopy: Для геокодирования (получение координат по названиям городов).
  • requests: Для отправки HTTP-запросов к API.
  • folium: Для отображения интерактивной карты с маркерами.

Проект предоставляет простое и удобное средство для анализа погоды в различных городах, с возможностью добавления нескольких точек маршрута и отображения погоды на карте. Наслаждайтесь использованием!

About

учебный репозиторий для проекта с open-meteo api

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages