Smoke

 
<<< Назад

Получение Я.Погоды из сценария

Чистый код сценария для получения погоды

Зачем?

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

Вариант реализации

У меня реализованно вот так:

Иконки

Скачать анимированные иконки тут - https://yadi.sk/d/jL3IvviS97AUgQ

Код

Узнать код региона можно тут - https://yandex.ru/pogoda/moscow/informer справа будет код информера:
img src="https://info.weather.yandex.net/11470 - это код региона

//Получаем данные от Яндекса, region= указывает на код региона
$getYandexPogoda = simplexml_load_string(file_get_contents('https://export.yandex.ru/bar/reginfo.xml?region=47'));
$getYandexPogoda = json_decode(json_encode($getYandexPogoda), TRUE);
//Меняем некрасивые картинки на красивые, анимированные
$arrayIcon = [
    'bkn_d.png' => 'assets/icons/meteoIcon/cloudy-day-3.svg',
    'bkn_n.png' => 'assets/icons/meteoIcon/cloudy-night-3.svg',
    'ovc.png' => 'assets/icons/meteoIcon/cloudy.svg',
    'ovc_-sn.png' => 'assets/icons/meteoIcon/snowy-4.svg',
    'ovc_sn.png' => 'assets/icons/meteoIcon/snowy-5.svg',
    'ovc_-ra.png' => 'assets/icons/meteoIcon/rainy-4.svg',
    'ovc_ra.png' => 'assets/icons/meteoIcon/rainy-5.svg',
    'ovc_ts_ra.png' => 'assets/icons/meteoIcon/thunder.svg',
    'skc_d.png' => 'assets/icons/meteoIcon/day.svg',
    'skc_n.png' => 'assets/icons/meteoIcon/night.svg',
    'fg_d.png' => 'assets/icons/meteoIcon/cloudy.svg',
    'bl.png' => 'assets/icons/meteoIcon/snowy-6.svg',
    'bkn_-ra_d.png' => 'assets/icons/meteoIcon/rainy-2.svg',
    'bkn_-ra_n.png' => 'assets/icons/meteoIcon/cloudy-night-3.svg',
    'bkn_-sn_d.png' => 'assets/icons/meteoIcon/snowy-2.svg',
    'bkn_-sn_n.png' => 'assets/icons/meteoIcon/cloudy-night-3.svg',
    'bkn_ra_d.png' => 'assets/icons/meteoIcon/rainy-1.svg',
    'bkn_ra_n.png' => 'assets/icons/meteoIcon/rainy-1.svg',
    'bkn_sn_d.png' => 'assets/icons/meteoIcon/snowy-1.svg',
    'bkn_sn_n.png' => 'assets/icons/meteoIcon/snowy-1.svg',
    'ovc_ra_sn.png' => 'assets/icons/meteoIcon/rainy-5.svg',
];

//Цикл для перебора данных
foreach($getYandexPogoda[weather][day][day_part] as $key => $array) {
    //Самый первый массив - в нем данные о текущей погоде
    if($key == 0) {
        //Текущая температура
        sg('System_YandexWeather.nowTemp', $array["temperature"]);
            //Иконка
        $searchIcon = explode('/', $getYandexPogoda["weather"]["day"]["day_part"][$key]["image-v3"]);
        sg('System_YandexWeather.nowWeatherIcon', $arrayIcon[$searchIcon[8]]);
            //Скорость ветра
        sg('System_YandexWeather.nowWindSpeed', $array["wind_speed"]);
            //Направление ветра
        sg('System_YandexWeather.nowWindDirection', $array["wind_direction"]);
        continue;
    }

    if(isset($getYandexPogoda["weather"]["day"]["day_part"][$key]["temperature"])) {
        $searchTemp = $getYandexPogoda["weather"]["day"]["day_part"][$key]["temperature"];
    } else {
        $searchTemp = $getYandexPogoda["weather"]["day"]["day_part"][$key]["temperature_from"];
    }
    //Раскидываем данные по принципу temp_1, temp_2, temp_3, temp_4 это утро, день, вечер, ночь
    sg('System_YandexWeather.name_'.$key, $getYandexPogoda["weather"]["day"]["day_part"][$key]["@attributes"]["type"]);
    sg('System_YandexWeather.temp_'.$key, $searchTemp);
    $searchIcon = explode('/', $getYandexPogoda["weather"]["day"]["day_part"][$key]["image-v3"]);

    sg('System_YandexWeather.WeatherIcon_'.$key, $arrayIcon[$searchIcon[8]]);
}
//Время обновления
sg('System_YandexWeather.update', date('d.m.Y H:i', time()));

echo 'ok';

Обсуждение (10) (14)

Смотрите так же:
13.03.2023 Debounce настройка в z2m
06.03.2023 Боремся с mysql и жором места на диске
24.10.2021 Определяем выключен ли свет по камере о_О
18.10.2021 Опять прокси WS! Теперь для KeenDNS+NGINX
19.09.2021 Хитрый MJPEG или укрощение строптивого
08.06.2021 Парсим информер с Яндекс.Погоды
13.01.2021 Не разговаривает Алиса через облако?
15.12.2020 Разгоняем Xiaomi Home
04.11.2020 Проксирование WebSocket с wss:// -> ws://
02.11.2020 Как получить время езды до работы?
02.06.2020 Стилизация штатного редактора кода, часть 2
01.06.2020 Распознавание речи - бесплатно, просто, быстро.
01.06.2020 Стилизация штатного редактора кода
29.01.2020 Парсим данные баланса из ЛК Билайн (Update)
28.01.2020 Camshoter на свой лад
21.01.2020 Google Location + Yandex Maps, на свой лад
17.01.2020 Рассказ хейтера сцен в MJDM. Часть 2
17.01.2020 Как можно НЕ использовать сцены в MJDM. Часть 2
16.01.2020 Перезагружаем роутер Zyxel из MJDM
12.12.2019 Как подружить Camshoter и обычную вебку
07.10.2019 Управление планшетом из сцен/WEB
07.10.2019 Использование злосчастных WebSoccet
17.01.2020 ~DELETED~
23.07.2019 Как можно НЕ использовать сцены в MJDM. Часть 1.

Нижний Новгород, Россия

На форуме: SmoKE_xDDD