Программы

Прогноз погоды. Первый API.

Опубликовано

В этом проекте мы напишем программу которая будет брать данные о погоде с сайта и выводить. необходимую информацию в окно терминала. Научимся работать с API (Application Programming Interface) — дополнительным набором команд для работы, в нашем случае, с сайтом погоды openweathermap.org.

  1. Первым делом зайдите на сайт openweathermap.org и создайте себе учётную запись нажав на sign in.

2. выбираем создать аккаунт

3. Заполняем поля, ставим необходимые галочки и жмём создать аккаунт

4. Здесь можно указать всё что угодно. Жмём Save.

5. Во-первых, вы увидите надпись в зелёном поле информирующее вас о том что на ваш e-mail выслано письмо с подтверждением вашей учётной записи. Во-вторых, переходим в раздел API keys

6. А вот и необходимый для нас ключ, который позволит подключаться с данному сайту и брать с него всю необходимую информацию. Скопируйте его. Пол дела сделано

Едем дальше. Теперь нам необходимо создать новый проект для работы с API openWeatherMap. Жмём создать новый репл и переходим в раздел пакетов. В строке поиска вбиваем pyowm и устанавливаем необходимый пакет, нажав на + рядом с названием пакета. В окне терминала вы увидите процесс установки пакета к вашему проекту.

прочитать документацию на данный пакет можно по ссылке https://pyowm.readthedocs.io/en/latest/v3/code-recipes.htm . Весь код представленный ниже взят из примеров документации.

Для возможности проверять погоду в различных городах нашей планеты импортируем класс OWM из библиотеки PyOWM. И создадим объект класса OWM, передав в качестве параметра наш API ключ полученный при регистрации. (ключ указанный в примере нерабочий)

from pyowm.owm import OWM
owm = OWM('2a29b038800b6c23600d4431501afbf3') 

Теперь объявим переменную city в которой сохраним город, погоду которого мы хотим получить, например, «Санкт-Петербург». После чего обратимся к менеджеру погоды из объекта owm и сохраним его в переменную mgr. Из менеджера погоды вызовем метод weather_at_place() который вернёт нам общую информацию о городе, который мы передадим в качестве параметра.

city = 'Санкт-Петербург'
mgr = owm.weather_manager()
observation = mgr.weather_at_place(city)

Для получения более подробной информации о погоде нам необходимо обратиться к свойству weather у объекта observation. распечатаем погоду.

weather = observation.weather
print(weather)

на экране терминала вы увидите что-то вроде..

<pyowm.weatherapi25.weather.Weather - reference_time=2020-10-19 11:05:59+00:00, status=rain, detailed_status=light rain>

…здесь нас интересует только status и detailed_status. Чтобы извлечь эти данные, достаточно обратиться к ним через точку.

print(weather.status) 
print(weather.detailed_status)

Теперь будем получать температуру воздуха на текущий день. Для этого нам необходимо вызвать метод temperature(«celsius») у объекта weather и сохранить результат в переменную temp. (Если не указать параметр «celsius», метод вернёт температуру в Фаренгейтах)

temp = weather.temperature('celsius')
print(temp)

результат…

{'temp': 4.04, 'temp_max': 4.44, 'temp_min': 3.89, 'feels_like': 1.62, 'temp_kf': None}

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

print(temp['temp'])
print(temp['temp_max'])
print(temp['temp_min'])
print(temp['feels_like'])

Осталось только получить данные о ветре. Принцип получения информации о ветре точно такая же как и с температурой. Только на этот раз используем метод wind(). Скорость ветра возвращается в метрах/секудну.

wind = weather.wind()
print(wind['speed'])
print(wind['gust'])

Код готовой программы представлен ниже.

Нажмите зелёную кнопку Run для запуска программы

Добавить комментарий

Ваш адрес email не будет опубликован.