воскресенье, 15 ноября 2009 г.

получить погоду с nepogoda.ru

Гисметио замучал: перехожу на nepogoda.ru
вывод в коньках можно взять с прошлой статьи, и подправить если нужно
В результате должно получится так:









Получаем погоду для выбранного города
#!/usr/bin/php
Проходим циклом по всей ленте и разбиваем получаемые данные по массивам
$i=0;

foreach ($rss->channel->item as $item) {
$masstitle[] = $item->title;
$massdesk[] = $item->description;

$citydate[] = explode(":", $masstitle[$i][0]);
$new[] = array_reverse(explode(", ", $massdesk[$i][0]));

$tmp_citydate[] = explode(",", $citydate[$i][1]);
$tmp_citydate2[] = explode(" ", $tmp_citydate[$i][1]);
$tmp_citydate2[$i][0] = $tmp_citydate[$i][0];

$tmp_month[] = explode(".", $tmp_citydate2[$i][1]);
$i++;
}
Для приятного отображения месяцев создаем массив месяцев


$now_month = array(
"01"=>"Января",
"02"=> "Февраля",
"03"=> "Марта",
"04"=> "Апреля",
"05"=> "Мая",
"06"=> "Июня",
"07"=> "Июля",
"08"=> "Августа",
"09"=> "Сентября",
"10"=> "Октября",
"11"=> "Ноября",
"12"=> "Декабря"
);
Открываем файл на запись
$f = fopen("weather.txt","w+");
Проходим по всем периодам полученного прогноза, получаем отдельные значения прогноза (ветер, температуру, облачность, осадки, давление) и сохраняем в массивы
for($timeday=0;$timeday 6)
{
$date=$tmp_citydate2[$timeday]["0"]." ".$tmp_month[$timeday]["0"]." ".$now_month[$tmp_month[$timeday]["1"]].", ".$now_day[$tmp_citydate[$timeday]["4"]];

$city=$citydate[$timeday][0];
$prec=$new[$timeday][3];
$sky=$new[$timeday][5];
$temp=$new[$timeday][6];
$wind=$new[$timeday][1]." ".$new[$timeday][0];
$pres=substr($new[$timeday][2],"17");

$str2 = "$date2 $sky $prec";
}
else
{
$date=$tmp_citydate2[$timeday]["0"]." ".$tmp_month[$timeday]["0"]." ".$now_month[$tmp_month[$timeday]["1"]].", ".$now_day[$tmp_citydate[$timeday]["4"]];

$city=$citydate[$timeday][0];
$prec=$new[$timeday][3];
$sky=$new[$timeday][4];
$temp=$new[$timeday][5];
$wind=$new[$timeday][1];
$pres=substr($new[$timeday][2],"17");

$str2 = "$date2 $sky $prec";
}
Создаем массив, в котором собраны все возможные явления погоды (пока еще не все возможные)) и сопоставляем каждое явление с символом из шрифта weather
$images = array(
"День Ясно без осадков"=> "a",
"Ночь Ясно без осадков"=> "5",
"День Облачно без осадков"=> "d",
"Ночь Облачно без осадков"=> "o",
"День Облачно без существенных осадков"=> "d",
"Ночь Облачно без существенных осадков"=> "o",
"День Малооблачно без осадков"=> "b",
"Ночь Малооблачно без осадков"=> "l",
"День Переменная обачность без осадков"=> "c",
"Ночь Переменная обачность без осадков"=> "m",
"День Небольшая облачность без осадков"=> "b",
"Ночь Небольшая облачность без осадков"=> "l",
"День Пасмурно без осадков"=> "e",
"Ночь Пасмурно без осадков"=> "n",
"День Пасмурно без существенных осадков"=> "e",
"Ночь Пасмурно без существенных осадков"=> "n",
"День Пасмурно небольшой дождь"=> "g",
"Ночь Пасмурно небольшой дождь"=> "q",
"День Облачно небольшой дождь"=> "g",
"Ночь Облачно небольшой дождь"=> "q",
"День Пасмурно местами небольшой дождь"=> "g",
"Ночь Пасмурно местами небольшой дождь"=> "q",
"День Облачно гроза"=> "h",
"Ночь Облачно гроза"=> "p",
"День Пасмурно гроза"=> "i",
"Ночь Пасмурно гроза"=> "s",
"День Пасмурно мокрый снег"=> "k",
"Ночь Пасмурно мокрый снег"=> "u",
"День Пасмурно небольшой снег"=> "k",
"Ночь Пасмурно небольшой снег"=> "u",
"День Пасмурно местами небольшой снег"=> "k",
"Ночь Пасмурно местами небольшой снег"=> "u",
"День Облачно метель"=> "j",
"Ночь Облачно метель"=> "t"
);

$gif = $images[$str2];
Формируем строку, и записываем в файл данные прогноза. Каждая строка соответствует прогнозу на определенный период времени.
$str = "$date $city $gif $temp $wind $pres $sky $prec;";
fputs($f, $str);
}
fclose($f);

?>

Комментариев нет: