Перейти к публикации

Рекомендованные сообщения

Простой граббер погоды с яндекса. Может это переделать под DLE

<?

set_time_limit(0);

$fd=fopen("http://weather.yandex.ru/city.xml?print=1&city=25913","r");

while ($w = fgets($fd, 4096))

	  {

	  $d.=$w;

	   }

ereg('<br><br><br>(.*)<tr><td valign="bottom">', $d, $title);

$title[1]=str_replace("/i/","http://weather.yandex.ru/i/",$title[1]);

if(file_exists("weather.html"))

{

unlink("weather.html");

}

$f=fopen("weather.html","a");

fwrite($f,$title[1]);

ereg('<div class="big"><nobr>(.*)</nobr></div>', $title[1], $inf);

if(file_exists("informer.html"))

{

unlink("informer.html");

}

$f=fopen("informer.html","a");

fwrite($f,$inf[1]);

?>

Ссылка на сообщение
Поделиться на других сайтах

Есть такой код... правда для него нужно выполнение PHP из шаблона... Если у кого-нибудь дойдут рури до модуля, то стукните мне по асе 327358756 всячески помогу %)

Особенности: Кеш xml 4 раза в сутки - по времени обновления на сайте + 15 минут (для учета некоторых задержек).

<?

// ************************************************************************

// Обработка погоды с сайта GisMeteo.ru

// ************************************************************************


// ****** Задаем основные переменные.

$url = "http://informer.gismeteo.ru/xml/28440_1.xml"; //Адрес XML для Екатеринбурга.

$data_dir = "./engine/data/weather/";

$date = date("Y-m-d");

$date_prew = date("Y-m-d", mktime(0,0,0,date("m"),date("d")-1,date("Y")));

$time = date("Gi");


// ****** Сохраняем файлик на сервере 4 раза в сутки.

settype($time,"integer");

if ($time>="2045")

	{

		if (!file_exists("$data_dir".$date."-2045"))

			{

				copy($url,"$data_dir".$date."-2045");

				$file = "$data_dir".$date."-2045";

			}

		else

			{

				$file = "$data_dir".$date."-2045";

			};

	}

elseif ($time>="1445")

	{

		if (!file_exists("$data_dir".$date."-1445"))

			{

				copy($url,"$data_dir".$date."-1445");

				$file = "$data_dir".$date."-1445";

			}

		else

			{

				$file = "$data_dir".$date."-1445";

			};

	}

elseif ($time>="845")

	{

		if (!file_exists("$data_dir".$date."-845"))

			{

				copy($url,"$data_dir".$date."-845");

				$file = "$data_dir".$date."-845";

			}

		else

			{

				$file = "$data_dir".$date."-845";

			};

	}

elseif ($time>="245")

	{

		if (!file_exists("$data_dir".$date."-245"))

			{

				copy($url,"$data_dir".$date."-245");

				$file = "$data_dir".$date."-245";

			}

		else

			{

				$file = "$data_dir".$date."-245";

			};

	}

elseif ($time>="0")

	{

		if (!file_exists("$data_dir".$date_prew."-245"))

			{

				copy($url,"$data_dir".$date_prew."-245");

				$file = "$data_dir".$date_prew."-245";

			}

		else

			{

				$file = "$data_dir".$date_prew."-245";

			};

	};


$weather = array();


function startTag($parser, $name, $attrs)

	{

		global $weather;

		$tag=array("name"=>$name,"attrs"=>$attrs); 

		array_push($weather,$tag);

	};

function cdata($parser, $cdata)

	{

		global $weather,$i;

		if(trim($cdata))

			{

				$weather[count($weather)-1]['cdata']=$cdata;

			};

	};

function endTag($parser, $name)

	{

		global $weather;

		$weather[count($weather)-2]['children'][] = $weather[count($weather)-1];

		array_pop($weather);

	};


$xml_parser = xml_parser_create();

xml_set_element_handler($xml_parser, "startTag", "endTag");

xml_set_character_data_handler($xml_parser, "cdata");


$data = xml_parse($xml_parser,file_get_contents($file));

if(!$data)

	{

		die(sprintf("Ошибка XML: %s на строке %d",xml_error_string(xml_get_error_code($xml_parser)),xml_get_current_line_number($xml_parser)));

	};


xml_parser_free($xml_parser);


// ****** Вид массива.

// print("<pre>\n");

// print_r($weather);

// print("</pre>\n");


echo $weather["0"]["children"]["0"]["children"]["0"]["children"]["0"]["attrs"]["DAY"].".";

echo $weather["0"]["children"]["0"]["children"]["0"]["children"]["0"]["attrs"]["MONTH"].".";

echo $weather["0"]["children"]["0"]["children"]["0"]["children"]["0"]["attrs"]["YEAR"]." на ";

echo $weather["0"]["children"]["0"]["children"]["0"]["children"]["0"]["attrs"]["HOUR"].":00<br>";

echo "Температура: ".$weather["0"]["children"]["0"]["children"]["0"]["children"]["0"]["children"]["2"]["attrs"]["MAX"].".."; //Температура максимальная

echo $weather["0"]["children"]["0"]["children"]["0"]["children"]["0"]["children"]["2"]["attrs"]["MIN"]."<br>"; //Температура минимальная

echo "Давление: ".$weather["0"]["children"]["0"]["children"]["0"]["children"]["0"]["children"]["1"]["attrs"]["MIN"].".."; //Давление минимальное

echo $weather["0"]["children"]["0"]["children"]["0"]["children"]["0"]["children"]["1"]["attrs"]["MAX"]."<br>"; //Давление максимальное

?>

Ссылка на сообщение
Поделиться на других сайтах

Shinji, У мя не хочет работать как и kolyma фреймю а он

Warning: copy(/pr/pogoda/moskva/2007-02-08-845) [function.copy]: failed to open stream: No such file or directory in C:\Server\htdocs\pr\pogoda\moskva.php on line 43


Warning: file_get_contents(/pr/pogoda/moskva/2007-02-08-845) [function.file-get-contents]: failed to open stream: No such file or directory in C:\Server\htdocs\pr\pogoda\moskva.php on line 104

.. на :00

Температура: ..

Давление: ..

P.S. Директория /pr/pogoda/moskva/ Существует

И ещё. В какое время он грабит с сервера?

Ссылка на сообщение
Поделиться на других сайтах

Shinji, У мя не хочет работать как и kolyma фреймю а он

Warning: copy(/pr/pogoda/moskva/2007-02-08-845) [function.copy]: failed to open stream: No such file or directory in C:\Server\htdocs\pr\pogoda\moskva.php on line 43


Warning: file_get_contents(/pr/pogoda/moskva/2007-02-08-845) [function.file-get-contents]: failed to open stream: No such file or directory in C:\Server\htdocs\pr\pogoda\moskva.php on line 104

.. на :00

Температура: ..

Давление: ..

P.S. Директория /pr/pogoda/moskva/ Существует

И ещё. В какое время он грабит с сервера?

Граббит он 4 раза в сутки в 20:45, 14:45, 8:45, 2:45 - это через 15 минут после обновления на gismeteo.ru (покрайней мере если у них все нормально обновляется..)

А ошибки именно из-за того что скрипт не может найти папочку...

Ссылка на сообщение
Поделиться на других сайтах

хе а я установил в локалку... так все отлично идет

вот пример

12.2.2007 на 23:00

Температура: -14..-16

Давление: 737..739

ps а я думал что он на все города грабить будет

Ссылка на сообщение
Поделиться на других сайтах

хе а я установил в локалку... так все отлично идет

вот пример

12.2.2007 на 23:00

Температура: -14..-16

Давление: 737..739

ps а я думал что он на все города грабить будет

Он грабит на все города: заходишь на сайт http://informer.gismeteo.ru/xml.html?27612 - выбираешь нужный город и получаешь ссылку которую надо подставить в самом верху скрипта...

Ссылка на сообщение
Поделиться на других сайтах

Он грабит на все города: заходишь на сайт http://informer.gismeteo.ru/xml.html?27612 - выбираешь нужный город и получаешь ссылку которую надо подставить в самом верху скрипта...

он в настройках разобраться не может, а уже кричит что грабит

я про другое --- есть наподобе скрипт только он полностью сайт грабит там и ссылки и фотки (тучи...) и все грузится со своего сервака Можно сделать полноценный сайт с погодой.

Ссылка на сообщение
Поделиться на других сайтах

Скажите, приведенный выше код обеспечивает просмотр погоды пользователем с моего сайта, либо же ему надо "палить" траффик и данные ему приходят с сайта погоды?

Ссылка на сообщение
Поделиться на других сайтах

Он грабит на все города: заходишь на сайт http://informer.gismeteo.ru/xml.html?27612 - выбираешь нужный город и получаешь ссылку которую надо подставить в самом верху скрипта...

он в настройках разобраться не может, а уже кричит что грабит

я про другое --- есть наподобе скрипт только он полностью сайт грабит там и ссылки и фотки (тучи...) и все грузится со своего сервака Можно сделать полноценный сайт с погодой.

А что Вам здесь мешает полностью вывести массив на экран и ознакомившись с инструкцией на Gismeteo.ru правильно оформить вывод и ветра, и влажности, и давления, и температуры... и вообше сделать так что бы скрипт показывал не ближайший прогноз, а все 4, которые он граббит?

Знаю - делать и думать лениво... в будущих версиях ждите...

Скажите, приведенный выше код обеспечивает просмотр погоды пользователем с моего сайта, либо же ему надо "палить" траффик и данные ему приходят с сайта погоды?

нет... для пользователя нечего не скачивается - скачивает сервер на котором запущен php код.

Ссылка на сообщение
Поделиться на других сайтах

Сделал грабер погоды.. только вот для сохранения в файл и загрузки его впоследствии ума не хватило.. при каждой загрузке страници.. модуль обращается на сайт _http://www.gismeteo.ru , выводится как погода текущая так и погода на три дня, думаю не сложно переделать его и на другое число дней (5 и 10)

49601m.jpg

ссылка на большой скрин ЗДЕСЬ

Скачать

Изменено пользователем patrokl
Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

Сделал грабер погоды.. только вот для сохранения в файл и загрузки его впоследствии ума не хватило.. при каждой загрузке страници.. модуль обращается на сайт _http://www.gismeteo.ru , выводится как погода текущая так и погода на три дня, думаю не сложно переделать его и на другое число дней (5 и 10)

49601m.jpg

ссылка на большой скрин ЗДЕСЬ

Скачать

О!! Такую крутую фичу выпустили и ссылка сдохла! ПЕРЕЗАЛЕЙТЕ!!!!

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...