Как стать автором
Обновить

Агрегирование RSS-лент: как я выбирал агрегатор

Время на прочтение4 мин
Количество просмотров12K
Я в течение нескольких лет коллекционировал русскоязычные блоги о тестировании. А в какой-то момент, посмотрев на англоязычные агрегаторы, решил сделать такой же микс из своей коллекции.

На данный момент мне удалось собрать 27 блогов, либо полностью посвященных тестированию программного обеспечения, либо таких, где есть соответствующая выделенная категория. Пополняемый актуальный список можно найти здесь: software-testing.ru/about/blogs, так что если вы хотите добавить в свой RSS-ридер только отдельные блоги, можно пойти и выбрать пару-тройку.

А под катом — описание того, как я это делал и какие грабли при этом встретились на моём пути (с картинками).

Задачу я себе поставил так: Сделать из нескольких RSS/Atom-лент одну, в которую будут собраны все записи из разных лент и упорядочены по времени. Кроме того, должна быть возможность урезать длину агрегированной ленты до нужного размера и обрезать слишком длинные записи, тоже до некоторого заданного размера.

Выглядит проще простого, да не тут-то было…

Из нескольких перепробованных мной агрегаторов успешно справиться с заданием смог только Yahoo! Pipes, да и тот не смог сделать всё, что мне хотелось (выше сформулирована слегка урезанная версия моей хотелки). Возможно, некоторые проблемы уже устранены, если это так — заранее прошу прощения у авторов соответствующих агрегаторов.

Google Reader, общие записи


Сначала меня посетила шальная мысль — расшарить в Google Reader все собранные мной блоги, видел я там такую кнопочку. Однако при ближайшем рассмотрении оказалось, что расшаривать можно только отдельные записи, нельзя автоматом расшарить всю ленту, поэтому гуглоридер вышел из забега, не успев начать. Вот выдержка из документации:
6. Могу ли я настроить свою открытую страницу?

К сожалению, в настоящее время вы не можете настроить свою открытую страницу, вы можете лишь выбирать, какими записями делиться.


feed.informer — feed.informer.com


feed.informer У фидинформера имеется ограничение — можно смешивать до 100 лент, но меня оно вполне устраивало. Интерфейс показался удобным, поэтому я несколько дней им успешно пользовался, но меня ожидал сюрприз — агрегированная лента не обновлялась. В исходных лентах появлялись новые записи — а в агрерированной нет.

Оказалось, что там есть «основной» способ публикации, при помощи специального виджета, и если его использовать, то всё обновляется вполне адекватно. Но если публиковать только RSS-ленту, обновления не происходит. Виджет мне был не нужен, поэтому фидинформер тоже полетел в корзину.

Feed Rinse — feedrinse.com


Этот агрегатор отказался работать с кириллицей, за что был немедленно забанен, без уточнения его функциональных возможностей.

cyrillic fonts problem
cyrillic fonts problem

RSS Mix — www.rssmix.com


Это вообще нечто! Мало того, что он тоже не поддерживает кириллицу, он ТАК перемешал записи в блогах, что я даже не смог догадаться, по какому же принципу он пытался их отсортировать. Одно слово — миксер. В топку без вопросов!

rss mix

XFruits — xfruits.com


XFruits Это потрясающий по своей функциональности комбайн, который умеет делать с RSS разные прикольные штуки, даже читать вслух. Но мне-то надо было лишь агрегировать несколько лент. И он конечно же это смог сделать, но мне не удалось его заставить сделать так, чтобы у записей был и description, и content. Никаких опций настройки! С большим сожалением пришлось отказаться и от эксфрутса…

Yahoo! Pipes — pipes.yahoo.com


Yahoo! Pipes Это победитель забега агрегаторов. Уже несколько лет он официально числится «бетой», но на стабильности это не сказывается. Конечно же я и здесь использовал далеко не все функциональные возможности, потому что это тоже монстр, а мне надо было решить простенькую задачку.

В общем, в итоге получилась такая штука:

my pipes

Результат работы этой конструкции представляет собой агрегированную ленту, в которую включаются все записи из всех лент. Их оказалось там порядочно много, поэтому была сделана ещё одна, которая хватала результат первой ленты и обрезала его:

my pipes truncated

Зачем это было сделано? Дело в том, что Yahoo! Pipes имеет свои заморочки. Во-первых, он плохо кеширует ленты, поэтому работает относительно медленно. Опций настройки кеширования не обнаружено. Во-вторых, результат его работы кривовато отображается в некоторых RSS-читалках (люди жаловались).

Поэтому было решено дополнительно пропустить ленту через FeedBurner. Он в свою очередь раскапризничался и отказался принять на вход ленту, в которой было больше 500 записей. Ну вот и пришлось обрезать.

В результате получились:

полная агрегированная лента, выгружаемая из Yahoo! Pipes, немножко тормозная (из-за большого размера и плохого кеширования) и немножко несовместимая с некоторыми RSS-читалками;
урезанная до 50 записей агрегированная лента, пропущенная через FeedBurner для увеличения скорости работы и совместимости;
веб-страничка, содержащая свежие записи из агрегированной ленты, для тех, кто по тем или иным причинам не пользуется RSS-читалками (например, для поисковых машин), однако запихивание RSS-ленты в Joomla — это предмет отдельного разговора.

Резюме: на данный момент мне не удалось обнаружить единого решения, которое позволило бы справиться даже со столь простой задачей агрегации информации, пришлось комбинировать два решения. Впрочем, это я не считаю серьёзной проблемой, специализация и возможность комбинирования сервисов это скорее плюс, чем минус. Гораздо больше удручает тот факт, что подавляющее большинство сервисов оказались просто несостоятельны, в частности при обработке русскоязычной информации.
Теги:
Хабы:
Всего голосов 36: ↑33 и ↓3+30
Комментарии26

Публикации