Граббер погоды с яндекса
Небольшой граббер для погоды с сайта яндекса, делался собственноручно т.к. все аналогичное не подходило для моих нужд.
Грабится файл xml находящийся по адресу http://export.yandex.ru/weather/?city=номер_города.
Данный xml файл кэшируется на заданное время, парсинг производится при помощи регулярных выражений (для уменьшения нагрузки на сервер). Кроме того производится перекодировка данных из UTF-8 в Windows-1251.
Ниже код инициализации класса граббера, а в архиве сам класс и папка с картинками погоды яндекса.
1 2 3 4 5 6 7 8 9 10 11 | include_once('weather_class.php'); $wConf['code'] = "UTF-8"; // Кодировка xml-а $wConf['curCode'] = "WINDOWS-1251"; // Текущая кодировка $wConf['yaUrl'] = "http://export.yandex.ru/weather/?city="; // URL файла погоды без идентификатора города $wConf['cityId'] = "27109"; // Идентификатор города http://weather.yandex.ru/choose/ $wConf['filePath'] = $_SERVER['DOCUMENT_ROOT'].'/weather.xml'; // Путь до файла кэша с названием файла $wConf['cacheTime'] = "3"; // Время кэширования $obj = new weather($wConf); $arr = $obj->outWeather(); $wStr = "<div>Сейчас в ".$arr[7]." ".$arr[12]."\xb0C <img src='wico".$arr[10]."' /><br />давление: ".$arr[13]." мм.рт.ст.<br />влажность: ".$arr[14]."%</div>"; echo $wStr; |
weather (136,8 KiB, 2 534 скачиваний)
Спасибо, взял себе на сайт.
Warning: fopen(/var/www/cyber-nation/data/www/cyber-nation.ix/weather.xml) [function.fopen]: failed to open stream: Permission denied in /var/www/cyber-nation/data/www/cyber-nation.ix/weather_class.php on line 41
Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/cyber-nation/data/www/cyber-nation.ix/weather_class.php on line 42
Warning: fclose(): supplied argument is not a valid stream resource in /var/www/cyber-nation/data/www/cyber-nation.ix/weather_class.php on line 43
————————————————————————
В чем причина помогите
У папки в которую пишется файл кэша weather.xml должны быть права на запись, в данном случае у тебя у папки cyber-nation.ix, если скриптам писать нельзя в chmod 755, то должен быть chmod 777
спасибо за граббер! сейчас очень нуждаюсь в подобном.
но у меня не получилось его установить, знаю, что у меня руки кривоваты))
но что я делаю не так?
1. разархивировал скачанный архив, залил папку weather в корень сайта
и поставил на нее chmod 777.
2. скачал и активировал плагин Daiko’s Text Widget для Worpress — http://www.daikos.net/widgets/daikos-text-widget/
(виджет для вставки php кода)
3. вставил в виджет тот же код что и в этой статье указан
в результате получил ошибки:
Warning: Unknown(weather_class.php): failed to open stream: No such file or directory in /home/m52465/public_html/site.ru/wp-content/plugins/daikos-text-widget/daikostext.php(83) : eval()’d code on line 2
Warning: (null)() [function.include]: Failed opening ‘weather_class.php’ for inclusion (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/m52465/public_html/site.ru/wp-content/plugins/daikos-text-widget/daikostext.php(83) : eval()’d code on line 2
Fatal error: Cannot instantiate non-existent class: weather in /home/m52465/public_html/site.ru/wp-content/plugins/daikos-text-widget/daikostext.php(83) : eval()’d code on line 9
помогите плз.
В архиве лежит файл weather.php, его и приинклудь в виджете:
include_once($_SERVER['DOCUMENT_ROOT'].'/weather/weather.php');
В weather.php строка подключения класса для папки weather в корне будет такая:
include_once($_SERVER['DOCUMENT_ROOT'].'/weather/weather_class.php');
Кодировка в wordpress обычно utf-8, поэтому поменяй текущую кодировку:
$wConf['curCode'] = "UTF-8";
Путь до файла кэша:
$wConf['filePath'] = $_SERVER['DOCUMENT_ROOT'].'/weather/weather.xml';
В строке, которая выводится на экран, поменяй путь до картинки на
/weather/wico
, кроме того, там перед символом Цельсия стоит значок градуса — поменяй его на соответствующий в кодировке utf-8 или совсем убери.И теперь весь файл сохрани в utf-8. Если ругнется на права у XML файла — удали его, чтобы он создался сам.
спс разобрался вроде
я тоже разобрался, спасибо!
хотелось бы увидеть доработку кода, при котором можно было выбирать город. А также определение города по ip. Есть такая возможность?
а еще было бы здорово вывод на несколько дней
спасибо, очень классно! просто мега! респект и уважуха от московских программеров!
Огромное спасибо! Работает отлично. Выбор городов пишется элементарно…
проблема. выводит:
outWeather(); $wStr = »
Сейчас в «.$arr[7].» «.$arr[12].»\xb0C
давление: «.$arr[13].» мм.рт.ст.
влажность: «.$arr[14].»%
«; echo $wStr; ?>
wordpress. через виджет:
outWeather();
$wStr = «Сейчас в «.$arr[7].» «.$arr[12].»\xb0C давление: «.$arr[13].» мм.рт.ст.влажность: «.$arr[14].»%»;
echo $wStr;
?>
папку WEATHER в корень
в файле weather.php поменял пути
что может быть???
спасибо, разобрался
Не отображаються картинки:( в чем проблема?
Все перепробовал:( не хочет отображать:(
Странно, у меня не чего не показывает =(
Посмотрел массив:
Array ( [1] => 22 ) и все, куда все делось то?
@fatrus
Яша стал отдавать xml в другом виде, на след неделе выложу измененный скрипт. Или пиши на mppks[собака]yandex.ru вышлю по почте сейчас.