Чистый код сценария для получения погоды
Немного не устраивал меня модуль Я.Погоды тем, что он переодически отваливался, написал простой сценарий для получения погоды... Может кому пригодится... Не претендую на звание "лучший код года", а так же "можно же было модулем"
У меня реализованно вот так:
Скачать анимированные иконки тут - 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';
Нижний Новгород, Россия
На форуме: SmoKE_xDDD