воскресенье, 24 мая 2009 г.

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

1 Вариант - получать погоду стандартными методами conky rss
${rss http://informer.gismeteo.ru/rss/99837.xml 45 item_title 0} - ${rss http://informer.gismeteo.ru/rss/99837.xml 45 item_desc 01}
${rss http://informer.gismeteo.ru/rss/99837.xml 45 item_title 1} - ${rss http://informer.gismeteo.ru/rss/99837.xml 45 item_desc 1}
${rss http://informer.gismeteo.ru/rss/99837.xml 45 item_title 2} - ${rss http://informer.gismeteo.ru/rss/99837.xml 45 item_desc 2}
${rss http://informer.gismeteo.ru/rss/99837.xml 45 item_title 3} - ${rss http://informer.gismeteo.ru/rss/99837.xml 45 item_desc 3}

2 Вариант - парсить xml, и выводить нужные данные строкой


В результате должно получится так:




Код:
channel->item as $item) {

$masstitle[] = $item->title;
$massdesk[] = $item->description;

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

$timeday = 3; //Время суток (Ночь, Утро, День, Вечер)

$city=$citydate[$timeday][0];
$date=$citydate[$timeday][1];
$sky=$new[$timeday][0];
$prec=$new[$timeday][1];
$temp=substr($new[$timeday][2],"22"); //$new[$timeday][2] - возвращает - температура +10, поэтому обрезаю (22) слово температура, чтобы выводились только цифры.. вместо "22" скорей всего будут другие цифры, также и ниже цифры "10" и "17"
$wind=substr($new[$timeday][4],"10").$new[$timeday][5];
$pres=substr($new[$timeday][3],"17");

print "$date | $city \n Температура: $temp \n Облачность: $sky \n Осадки: $prec \n Ветер: $wind \n Давление: $pres";
?>
Для запуска из коньков пишем:
${exzeci 3600 php ~/weather.php}

3 Вариант - также парсить rss, но выводить результаты в файл, а потом выбирать из файла нужное. и Погода будет возвращатся символом, который, использую шрифт weather можно красиво оформить в коньках

скрипт weather.php

channel->item as $item) {

$masstitle[] = $item->title;
$massdesk[] = $item->description;
$massimg[] = $item->enclosure['url'];

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

//Получение картинки
$masimg[] = explode("SimpleXMLElement Object", $massimg[$i]);
$masimage[] = explode("/", $masimg[$i][0]);
$mm[] = $masimage[$i][4];

$i++;
}
//Этот массив необходимо дополнить, по возможности буду обновлять
$images = array(
"moond.gif"=>"o",
"suncl.gif"=> "c",
"sunc.gif"=> "b",
"sun.gif"=> "a",
"cloud.gif"=> "d",
"mooncl.gif"=> "n",
"moonc.gif"=> "m",
"moon.gif"=> "6"
);
$f = fopen("weather.txt","w+");

for($timeday=0;$timeday<4; $timeday++) { $gif=$images[$mm[$timeday]]; $city=$citydate[$timeday][0]; $date=$citydate[$timeday][1]; $sky=$new[$timeday][0]; $prec=$new[$timeday][1]; $temp=substr($new[$timeday][2],"22"); $wind=substr($new[$timeday][4],"10")." ".$new[$timeday][5]; $pres=substr($new[$timeday][3],"17"); $str = "$date\t$city\t$gif\t$temp\t$sky\t$prec\t$wind\t$pres;"; fputs($f, $str); } fclose($f); ?>
далее в коньках прописываем действия для извлечения данных из файла
${execi 3600 php ~/weather.php}
${execi 3600 cat weather.txt | cut -d \; -s -f3 | cut -f 3}
т.е. в коньках пишем
${execi 3600 php ~/pars2.php}${color #252525}
Когда: ${font monospace:size=10}${execi 3600 cat weather.txt | cut -d \; -s -f3 | cut -f 1}
Город: ${execi 3600 cat weather.txt | cut -d \; -s -f3 | cut -f 2}
${font weather:size=30}${execi 3600 cat weather.txt | cut -d \; -s -f3 | cut -f 3}${font monospace:size=10}
Темп: ${execi 3600 cat weather.txt | cut -d \; -s -f3 | cut -f 4}
Ветер: ${execi 3600 cat weather.txt | cut -d \; -s -f3 | cut -f 7}
Давл: ${execi 3600 cat weather.txt | cut -d \; -s -f3 | cut -f 8}

Сохраняем шрифт weather.ttf в папку /usr/share/fonnts/truetype

UPD

Сдесь описан способ получения погоды с nepogoda.ru

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