среда, 11 июня 2008 г.

Пишем скрипт автоматической публикации постов из Yahoo Pipes

yahoo pipes, rss, blog, blogger, автоматическая публикация постовПишем скрипт автоматической публикации постов из Yahoo Pipes

Ну а теперь небольшой экскурс в мир программирования, напишем простейший скриптик позволяющий автоматически выдергивать и публиковать новости из RSS потока (а так как Yahoo Pipes имеет RSS выход, то и из ваших Yahoo Pipes).

Итак, скрипт на
[PHP5] - внимание, simplexml есть только в php5
проверьте это коммандой
[spec@qa scripts]$ /usr/bin/php -v
PHP 5.2.1 (cli) (built: Mar 31 2007 10:27:36)
......
Как вы наверно догадались делаем мы все это на удаленном компьютере хостера с установленным Linux (FreeBSD, OpenBSD, MacOS), но не на домашней тачке с Windows.
Настраиваемые параметры


$rssfeed - тут мы задаем адреса нужных нам фидов, если вы публикуете из yahoo pipes то адрес выглядит примерно так:
http://pipes.yahoo.com/pipes/pipe.run?_id=pPTo0rgn3RGCnXZ_JphxuA&_render=rss&urlinput1=http%3A%2F%2Fway-blogger.blogspot.com

$blogger_mail - email адрес вашего блога, как его получить читай здесь Автоматическая публикация на blogger


=============== getrss.php =================================
#!/usr/bin/php // полный путь до коммандного интерпретатора php5
$rssfeed = array("http://feeds.feedburner.com/wayblogger","http://feeds.feedburner.com/nemogu");
$blogger_mail = "email@blogger.com";

foreach($rssfeed as $rssfeed_item)
{
$rss = simplexml_load_file($rssfeed_item);


foreach($rss->channel->item as $items)
{
$back_link = "Original: <a href='".$items->link."'a>".$items->title."</a>";
$summary = $items->title;
$body = $back_link."</br>".$items->description;
mail($blogger_mail, $summary, $body);
}
}
?>
===========================================================


Ну вот и все, простейший скрипт по отправке постов на blogger готов, заполните массив rssfeed RSS фидами с нужных источников, укажите email вашего блога и запустите на любом хосте с установленным php5. Если захотите автоматизировать это дело, то просто добавте в cron нужное задание. Например так,

"crontab -e" - команда откроет вам редактор для редактирования заданий
для начала редактирования нажмите Shit+i
и собственно само задание:
"0 0 * * * getrss.php"

getrss.php - полный путь до скрипта
ну и не забывайте поправить права chmod +x getrss.php


Теперь ваш скрипт будет исправно спамить вам в блог чужими постами, а вам лишь останется наблюдать и улыбаться, попивать чай и читать мою RSS ленту.

Вернуться на главную страницу
Карта блога

Статьи по теме:



9 комментариев:

Dan Rastor комментирует...

А PHP код самого Yahoo Pipes не подходит?

Spec комментирует...

Не совсем понял понял о каком php коде yahoo pipes идет речь.

Dan Rastor комментирует...

Для каждой трубы сервис Yahoo Pipes дает свой php код

Sergey комментирует...

Dan Rastor, если речь идет о функции "More Options">"Get as PHP", то Yahoo Pipes, всего навсего выдает содержимое трубы в виде упакованных ( сериализованных ) данных, которые потом можно извлечь в php скрипте с помощью функции unserialize() (Blog Yahoo Pipes). Некоторым кажется такое представление данных более удобных чем RSS, это решение имеет право на жизнь (возможно оно даже более грамотное чем получение данных из RSS потока), но без самописного php скрипта извлекающего и отправляющего эти данные все равно не обойтись (а жаль ;( ).
Или yahoo pipes предоставляют какой-то другой php код?

Dan Rastor комментирует...

Я про этот код и спрашивал. Спасибо, теперь понятно :)

Spec комментирует...

Всегда, пожалуйста, если что обращайтесь, помогу чем смогу ;)

Анонимный комментирует...

HTML-теги постятся текстом без интерпретации, в итоге получается фигня. Почему так?

Andrey K. комментирует...

Сорри, но мне кажется, что это гемор еще тот. Хотя бы потому что для такой мелочи нужен сервак.

Гораздо проще подписаться на свой фид из трубы через Бидбёрнер, а затем получать фидбернеровские записи на мыло блога. Ну или как вариант через RSS2Email

Olegi4 комментирует...

А в таком виде он не будет постить статьи повторно? Т. е. мне кажется, что при каждом запуске скрипта будет публиковаться все что в содержится в RSS, в независимости от того было это опубликовано уже или нет.