Погода от Гидрометцентра - 1
Добавлено: Ср июн 22, 2016 2:10 am
Сначала отвалился Яндекс, потом OpenWeather (хотя оно мне и раньше не нравилось ни точностью, ни отсутствием поддержки).
Эх, всё нужно делать самому (c).
Есть сайт Гидрометцентра, нашел на нем фактическую погоду рядом - http://meteoinfo.ru/pogoda/russia/mosco ... domodedowo.
Был создан объект minfo класса weather и сценарий, читающий сайт и заполняющий свойства объекта:
Повторюсь, состав выводимых полей для, по крайней мере - Домодедова, переменчив как и погода).
Т.е., картинка и краткое описание может присутствовать в полночь и отсутствовать в 21 час.
Для меня это не играет роли, т.к. я охотился за количеством осадков и облачностью - для задержки включения света на улице.
Этого добиться удалось.
Но захотелось знать, что будет завтра.
Эх, всё нужно делать самому (c).
Есть сайт Гидрометцентра, нашел на нем фактическую погоду рядом - http://meteoinfo.ru/pogoda/russia/mosco ... domodedowo.
Был создан объект minfo класса weather и сценарий, читающий сайт и заполняющий свойства объекта:
сценарийПоказать
Код: Выделить всё
//Для разных пунктов может быть разный набор полей -- картинки и описания может не быть
debmes('get_meteoinfo - start');
$lines=file('http://meteoinfo.ru/pogoda/russia/moscow-area/domodedowo');
if(!$lines) {
DebMes('get_meteoinfo - Не удалось прочитать файл с фактом с meteoinfo.ru');
return;
}
// Осуществим проход массива и выведем номера строк и их содержимое в виде HTML-кода.
$fl=0;
foreach ($lines as $line_num => $line) {
//echo "Строка #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
switch ($fl){
case 1:
$temp= strip_tags($line);
break;
case 2:
$humidity=strip_tags($line);
break;
case 3:
$metcast=strip_tags($line);
break;
case 4:
$winddir=strip_tags($line);
break;
case 5:
$windspeed=strip_tags($line);
break;
case 6:
$clouds=strip_tags($line);
break;
case 7:
$rain=strip_tags($line);
break;
}
$fl=0;
$mystr=htmlspecialchars($line);
$pos=strpos( $mystr,'td class=ww bgcolor');
if(!$pos===false){
$ps=strpos($mystr,'weather_images');
if(!$ps===false){
$ps1=strpos($mystr,'gif');
$img=substr($mystr,$ps+15,$ps1-$ps-16);
//echo '/images/weather_images/'.$img.'.gif';
}
}
$mystr=strip_tags($line);
$pos=strpos( $mystr,'(время московское)');
if($pos>0){
$t_update=substr($mystr,$pos-8,8);
$dat_update=substr($mystr,1,$pos-9);
}
$pos=strpos( $mystr,'Температура воздуха, ');
if($pos>0){
$fl=1;
}
$pos=strpos( $mystr,'Относительная влажность, %');
if(!$pos===false){
$fl=2;
}
$pos=strpos( $mystr,'Комментарий к погоде');
if(!$pos===false){
$fl=3;
}
$pos=strpos( $mystr,'Направление ветра');
if(!$pos===false){
$fl=4;
}
$pos=strpos( $mystr,'Скорость ветра, м/с');
if(!$pos===false){
$fl=5;
}
$pos=strpos( $mystr,'Балл общей облачности');
if(!$pos===false){
$fl=6;
}
$pos=strpos( $mystr,'Осадки за 12 часов, мм');
if(!$pos===false){
$fl=7;
}
}
sg("minfo.Temp",(float)$temp);
sg("minfo.clouds",(float)$clouds);
sg("minfo.WindSpeed",(float)$windspeed);
sg("minfo.Winddir",trim($winddir));
sg("minfo.Image",$img);
sg("minfo.Humidity",(float)$humidity);
sg("minfo.Type",trim($metcast));
sg("minfo.day_txt",trim($dat_update));
sg("minfo.hour",trim($t_update));
$pos = strpos($metcast, "дожд");
if ($pos === false) {
sg("minfo.Rain",0);
} else {
sg("minfo.Rain",1);
}
$cast='Погода '.trim($dat_update).' на '.trim($t_update).'.';
$cast=$cast.trim($metcast).'.';
$cast=$cast.' Температура за окном '.trim($temp).' C.';
//две строки дальше - самописная функция, вычисляет FeelsLike/RealFeel/Ощущается как
//$rf=myRealFeel($temp,$humidity,$windspeed);
//$cast=$cast.' Ощущается как '.$rf.' C.';
$cast=$cast.' Относительная влажность '.trim($humidity).' %.';
if($windspeed>0){
$cast=$cast.' Ветер -'.trim($winddir).'. Скорость '.trim($windspeed).' м в секунду.';
}
$cast=$cast.' Облачность '.trim($clouds).' %.';
if($rain>0){
$cast=$cast.' Осадки за 12 часов '.trim($rain).' мм.';
}
sg('minfo.metcast',$cast);
debmes('get_meteoinfo OK');
Т.е., картинка и краткое описание может присутствовать в полночь и отсутствовать в 21 час.
Для меня это не играет роли, т.к. я охотился за количеством осадков и облачностью - для задержки включения света на улице.
Этого добиться удалось.
Но захотелось знать, что будет завтра.