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';

Обсуждение (4) (7)

Смотрите так же:
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