мой агрегатор новостей
у меня довольно давно были претензии к Google Reader. Некоторые из них касались интерфейса, поэтому я от него отказался и стал использовать собственный интерфейс: Open Google Reader. Но прочие претензии были к серверной части, например, отсутствие поддержки авторизации для подзамочных постов в жж, или невозможность получить полный текст статьи для куцых потоков. Поэтому уже несколько лет я прикидывал, как можно сделать собственный агрегатор новостей, хотя никак не мог собраться.
волшебный стимулирующий пендель пришёл с неожиданной стороны, когда Гугл объявил о скором прекращении поддержки ридера. Пришлось браться за работу. К счастью, у меня был довольно ограниченный набор требований к серверной части, поэтому возиться пришлось недолго. И использование готовых модулей тоже сильно помогло.
я уже писал о своей любви к статическим файлам как основе для веб-сервисов. Для агрегатора мне тоже получилось обойтись без кода, исполняющегося в контексте веб-сервера. Регистрации нет: продукт однопользовательский. Аутентификация — HTTP Auth. REST API (удалить из непрочитанных, сохранить на будущее) сделано через WebDav в nginx. Агрегированные списки строятся при помощи ls
и cat
, которые запускает incron
при изменении списка файлов.
ну а собственно сборщик новостей — это работающий по крону скрипт на питоне, использующий feedparser
. Он проходит по списку потоков, вынимает из них новые записи и складывает их в папку непрочитанных. При необходимости ходит по ссылкам и достаёт оттуда полезное содержимое по CSS selector. Дата обновления потока хранится в файле.
нельзя не упомянуть недостатки решения, с которыми я легко мирюсь. Нет подписки на PubSubHubbub, поэтому приходится подождать (максимум 15 минут — такая периодичность обновления). Нет веб-интерфейса для управления списком потоков. Если запись со вчерашней датой попадает в поток только сегодня (как это часто бывает у хабра, баша, и т.п.) она будет проигнорирована. При обновлении записи она может снова попасть в непрочитанные. Но всё это мелочи для меня.
в итоге уже где-то месяц я пользуюсь своим агрегатором, а с пятницы вообще перестал заглядывать в Google Reader.
любопытно, что гугл стимулирует меня отказываться от его продуктов в очень подходящие моменты: как раз когда мои навыки развиваются до нужного уровня, чтобы настроить или сделать альтернативу. Вначале была почта, потом интерфейс ридера, потом система рекомендаций ридера, потом фотогалерея, за ней агрегатор. А сейчас гугл собирается предать XMPP, так что будет у меня собственный джаббер-сервер, который я тоже давно хотел.