На прошлой неделе мне потребовалось автоматически постить RSS в Твиттер.
Первая мысль была — использовать Plagger. Тем более, что именно эту программу ребята использовали на январском хакмите в Москве.
Plagger — это такой механизм, где с помощью конфигурации (в YAML) формируется цепочка, через которую проходят новости, собираемые из разных источников. Всю обработку ведут отдельные плагины: один забирает RSS, другой фильтрует данные, третий размещает их в Твиттере, отправляет по почте или складывает в XML-файлы. Конфигурация может быть самой замысловатой, а отдельных плагинов больше сотни.
Установка оказалась весьма муторной, заняла часа полтора и скачала пол-спана. К тому же, не очень понятно (а документации — кот наплакал), как не пропускать дубликаты записей и как заставить плагины сохранять результаты в базе данных. Необъятное число необходимых модулей заставило задуматься о том, насколько сложно будет переносить скрипты на другой сервер.
В итоге я расчехлил архивы трехлетней давности и все приложение свелось к последовательному вызову нескольких методов:
my $feeds_ref = FeedCrawl::Register::getFeeds();
foreach my $feed (@$feeds_ref) {
print $feed->id . ' ' . $feed->uri . "\n";
$feed->fetch();
$feed->save();
}
Признак старинной архивной копии — вызов print 🙂
Ну а пост в Твиттер — тривиальная операция. Все сразу заработало, а через несколько часов окончательно вышел из строя жесткий диск на арендованном у «Мастерхоста» сервере, поэтому скрипт переехал жить и работать во Франкфурт.