Пишем программу погоды
Итак, давайте напишем консольную программу, которая будет показывать текущую погоду по нашим координатам. Чтоб не по IP-адресу как-то пытаться неточно вычислять местоположение, а именно по текущим реальным GPS-координатам. Чтобы программа показывала температуру за бортом, идёт ли там дождь/снег и время восхода-заката солнца. Для съёмки видео важно понимать, во сколько сегодня восход или закат солнца, чтобы ориентироваться на освещённость за окном.
Итак, в первую очередь, нам надо понять, как получить доступ к текущим координатам, есть ли такая возможность. Решение будет для MacBook, гуглим: python mac get gps coordinates
. Первая ссылка говорит о программе whereami, которая печатает текущие координаты в консоль
whereami
Отлично, теперь мы можем получать наши текущие координаты, отправить их в какой-то сервис погоды через API, получить оттуда погоду и отобразить её.
Команда работает по аналогии с whoami
— та показывает, «кто я», а вот команда whereami
показывает, «где я»:).
Давайте найдём какой-то сервис погоды. Поисковый запрос API прогноз погоды
привёл меня на проект OpenWeather. У них есть бесплатный доступ. Еще есть Яндекс погода в России, Gismeteo, но там, насколько я понял, для получения API-ключа надо куда-то писать на почту, для наших целей это слишком долго. Воспользуемся OpenWeather.
Запрос на получение погоды по примерно моим координатам:
http https://api.openweathermap.org/data/2.5/weather\?lat\=55.7\&lon\=37.5\&appid\=7549b3ff11a7b2f3cd25b56d21c83c6a\&lang\=ru\&units\=metric
httpie
— это удобная утилита работы с веб-сервисами, такая вариация на тему curl
, можно установить на Mac OS с помощью brew командой brew install httpie
. Она выводит в раскрашенном виде JSON, например, что удобно.
API-ключ, использующийся в запросе, получается сразу после регистрации, но активируется в течение, может быть, минут десяти.
Результат запрос:
{
"base": "stations",
"clouds": {
"all": 61
},
"cod": 200,
"coord": {
"lat": 55.7,
"lon": 37.5
},
"dt": 1651521003,
"id": 529334,
"main": {
"feels_like": 9.26,
"grnd_level": 993,
"humidity": 74,
"pressure": 1013,
"sea_level": 1013,
"temp": 10.25, <!-- температура в градусах Цельсия -->
"temp_max": 12.01,
"temp_min": 8.55
},
"name": "Moscow", <!-- твоё место -->
"sys": {
"country": "RU",
"id": 47754,
"sunrise": 1651455877, <!-- восход в Unix time -->
"sunset": 1651511306, <!-- закат в Unix time -->
"type": 2
},
"timezone": 10800,
"visibility": 10000,
"weather": [
{
"description": "облачно с прояснениями",
"icon": "04n",
"id": 803, <!-- тип погоды, справочник https://openweathermap.org/weather-conditions#Weather-Condition-Codes-2 -->
"main": "Clouds"
}
],
"wind": {
"deg": 180,
"gust": 8.08,
"speed": 2.69
}
}
Так, отлично, мы умеем находить текущие координаты и умеем по ним получать температуру, состояние погоды — дождь/снег/облака, а также получать время восхода и заката солнца.
Давайте напишем программу для этого! Чтобы запускаешь её и она писала наше местоположение и выводила эти данные — температуру, характеристику погоды (снег/облака/туман) и время восхода заката солнца.