$city_id = 51; //Самара
//ID города узнаем тут: https://yandex.ru/yaca/geo.c2n
$data_file = "https://export.yandex.ru/bar/reginfo.xml?region=$city_id.xml?".rand(); // адрес xml файла
$xml = simplexml_load_file($data_file); // раскладываем xml на массив
if ($xml === false) { // Проверить можно также !is_object( $xml ) или !$xml
setTimeOut("restart_PogodaYandex", "runScript('PogodaYandex');", 5*60);
if (gg("Communication.stateColor") == 'green') {
registerError('Яндекс.Погода не обновляется', 'Ошибка');
}
return;
}
$temp = $xml -> weather -> day -> day_part -> temperature; // температура сейчас
$temp = getTempSign($temp); // Если значение температуры положительно, для наглядности добавляем "+"
// сохраняем основные параметры текущей погоды
sg("PogodaYandex.City", $xml -> weather -> day -> title);
sg("PogodaYandex.Temp", $temp);
sg("PogodaYandex.Type", $xml -> weather -> day -> day_part -> weather_type);
sg("PogodaYandex.Pressure", $xml -> weather -> day -> day_part -> pressure);
// Влажность
sg("PogodaYandex.Humidity", $xml -> weather -> day -> day_part -> dampness);
sg("PogodaYandex.WindSpeed", $xml -> weather -> day -> day_part -> wind_speed);
sg("PogodaYandex.Image", $xml -> weather -> day -> day_part -> image);
sg("PogodaYandex.Image2", $xml -> weather -> day -> day_part -> { 'image-v3' });
// Направление ветра
sg("PogodaYandex.WindDir", $xml -> weather -> day -> day_part -> wind_direction);
// Солнце: восход/закат
sg("PogodaYandex.SunRise", $xml -> weather -> day -> sun_rise);
sg("PogodaYandex.SunSet", $xml -> weather -> day -> sunset);
$DayStart = explode(":", gg("PogodaYandex.SunRise"));
$DayEnd = explode(":", gg("PogodaYandex.SunSet"));
$h_start = (int) $DayStart[0];
$m_start = (int) $DayStart[1];
$h_end = (int) $DayEnd[0];
$m_end = (int) $DayEnd[1];
$dh = $h_end - $h_start;
$dm = $m_end - $m_start;
if ($dm < 0) {
$dh = $dh - 1;
$dm = $dm + 60;
}
sg("PogodaYandex.LongTag", "$dh:$dm");
// длинный текстовый прогноз погоды
$metcast = "На улице ".gg("PogodaYandex.Type").".";
// ветер
$WindSpeed = (float) gg("PogodaYandex.WindSpeed");
if ($WindSpeed < 1) {
$metcast.= ' Ветра, скорее всего, нет.';
}
elseif($WindSpeed < 3) {
$metcast.= ' Возможен слабый ветер.';
}
elseif($WindSpeed < 8) {
$metcast.= ' Возможен умеренный ветер.';
}
elseif($WindSpeed < 13) {
$metcast.= ' Возможен сильный ветер.';
}
elseif($WindSpeed < 20) {
$metcast.= ' Возможен довольно сильный ветер.';
}
elseif($WindSpeed < 28) {
$metcast.= ' Возможен штормовой ветер.';
} else {
$metcast.= ' Ветер очень очень сильный, УРАГАН!. ';
}
$w = round(strip_tags(gg("PogodaYandex.Temp")));
$tempw = $w;
if ($w < "0") {
$tempw = abs($w);
}
if ($w > "0") {
$templus = " плюс ";
}
if ($tempw >= 11 and $tempw <= 14) {
$tempcels = " градусов";
} else {
while ($tempw > 9) {
$tempw = $tempw - 10;
}
if ($tempw == 0 or $tempw >= 5 and $tempw <= 9) {
$tempcels = "градусов";
}
if ($tempw == 1) {
$tempcels = "градус";
}
if ($tempw >= 2 and $tempw <= 4) {
$tempcels = "градуса";
}
}
$metcast.= ' Температура '.gg("PogodaYandex.Temp").' '.$tempcels.'.';
$tm = (float) gg("PogodaYandex.Temp");
if ($tm < -40) {
$metcast.= ' Очень очень очень холодно!.';
}
elseif($tm < -30) {
$metcast.= ' Очень холодно, оденьтесь теплее.';
}
elseif($tm < -20) {
$metcast.= ' Очень холодно.';
}
elseif($tm < -10) {
$metcast.= ' Холодно.';
}
elseif($tm < -3) {
$metcast.= ' Не особо холодно.';
}
elseif($tm < 3) {
$metcast.= ' Значит, возможно, гололёд.';
}
elseif($tm < 10) {
$metcast.= ' Прохладно.';
}
elseif($tm < 25) {
$metcast.= ' Тепло.';
}
elseif($tm < 30) {
$metcast.= ' Жарко.';
}
elseif($tm > 30) {
$metcast.= ' Очень жарко!.';
}
$metcast.= ' Восход солнца сегодня в '.gg("PogodaYandex.SunRise").',';
$metcast.= ' закат в '.gg("PogodaYandex.SunSet").'.';
//$metcast.=' долгота дня '.getGlobal('PogodaYandex.LongTag').'.';
sg('PogodaYandex.WeatherDnes', $metcast);
//Дата и время последнего обновления
//sg("PogodaYandex.UpdatedTime", time());
sg("PogodaYandex.update", date("d.m.Y H:i", time()));
// КОНЕЦ ОСНОВНОГО БЛОКА
// Функция - добавления "+" к положительной температуре
function getTempSign($temp) {
$temp = (int) $temp;
return $temp > 0 ? '+'.$temp : $temp;
}
// Функция - получить направления ветра в МАССИВ
function getWindDirectionY($wind) {
$wind = (string) $wind;
$wind_direction = array('s' => '↑ ю',
'n' => '↓ с',
'w' => '→ з',
'e' => '← в',
'sw' => '↗ юз',
'se' => '↖ юв',
'nw' => '↘ сз',
'ne' => '↙ св');
$wind_dirtxt = array('s' => 'южный',
'n' => 'северный',
'w' => 'западный',
'e' => 'восточный',
'sw' => 'юго-западный',
'se' => 'юго-восточный',
'nw' => 'северо-западный',
'ne' => 'северо-восточный');
return array($wind_direction[$wind], $wind_dirtxt[$wind]);
}
sg('ThisComputer.SunRiseTime', gg('PogodaYandex.SunRise'));
sg('ThisComputer.SunSetTime', gg('PogodaYandex.SunSet'));