- PVSM.RU - https://www.pvsm.ru -
В связи с недавним отпочкованием [1] от Хабрахабра нового ресурса, у меня возникла нужда обустроить удобный способ чтения обоих ресурсов. Первая мысль, разумеется, была об RSS, благо движок у обоих сайтов его поддерживает. Оставались сущие пустяки — найти хороший RSS-аггрегатор, который можно было бы установить на малосильную
Поначалу наводка [3] от Tsyganov_Ivan [4] вывела на аггрегатор Tiny Tiny RSS, показавшимся настоящей «серебряной пулей». Однако более близкое знакомство с системными требованиями несколько охладило мой пыл — громоздить полноценный LAMP на машинку с дай бог 256 метрами незанятой памяти, и всё это ради ресурса буквально на одного человека? Тем более что знакомство с FAQ, содержавшим ссылки на откровенно издевательские ответы на форуме пакета, окончательно отбило желание иметь с tt-rss дело.
Первый раунд поиска завершился неудачей, поскольку альтернативы (вроде FeedHQ [5]) требовали примерно то же самое. Отчаявшись, я уже собрался писать нужный мне инструмент сам и стал подыскивать подходящие библиотеки для Python (к которому я питаю слабость), когда наткнулся на практически то, что нужно [6].
Само название RAWDOG намекает, что автора во время написания обуревали схожие чувства. Эта утилита предназначена для запуска вручную или по cron и умеет только одно: распарсить указанные RSS-ленты и записать новые элементы в выходной файл по заданному шаблону.
Поскольку rawdog присутствует в репозитории Ubuntu, получение пакета сложностей не представляет. А вот настройка имеет свои особенности.
Во-первых, вам придется самим добавить вызов rawdog в crontab, либо в cron.*. Это будет выглядеть примерно так:
rawdog --dir WORKDIR --log /var/log/rawdog --no-lock-wait --update --write
где ключ --no-lock-wait не даст запустить вторую копию rawdog, а WORKDIR — рабочий каталог утилиты.
Дело в том, что rawdog ищет конфигурационный файл и держит все свои временные файлы в одном рабочем каталоге — по умолчанию ~/.rawdog. Это может быть удобно для рабочей станции, но противоречит обычной практике. Если вы, как и я, любите порядок и единообразие, указать другую рабочую директорию можно с помощью ключа --dir, что позволило отправить рабочий каталог в /var/cache/rawdog (поскольку его основное содержимое, судя по всему, кэш скачанных лент). Поскольку конфигурационный файл тоже ищется там же (ключ --cfg позволяет задать дополнительный конфиг, но не отменяет поиск основного), он был заменен на символическую ссылку, после чего отправился вместе с шаблонами в /etc.
Хорошо документированный пример файла конфигурации можно найти в Сети [7], поэтому я только коротко укажу основные директивы:
Встроенный шаблон у rawdog минималистичен, если не сказать жестче, поэтому имеет смысл задать свои файлы шаблонов. Самый важный — шаблон pagetemplate, поскольку именно в нём можно задать стили и подключить необходимые скрипты. Чтобы увидеть шаблон страницы по умолчанию, можно использовать следующую команду (обязательно укажите --dir WORKDIR если вы, как и я, переместили рабочий каталог):
rawdog -s pagetemplate >template.html
Любой встроенный шаблон можно посмотреть аналогичной командой, заменив pagetemplate на название шаблона. Шаблонизация реализована посредством простого поиска с заменой, хотя есть и условный оператор, позволяющий вставить заглушку при отсутствии значения. К слову, вы можете определять свои переменные с помощью директивы define VARNAME VARIABLE VALUE (глобально) или параметра define_VARNAME=VALUE (для отдельной RSS-ленты).
Следует заметить, что каждая запись по умолчанию помечается CSS-классом feed-FEEDID, где FEEDID — id источника, заданный в параметрах выше. Это позволяет задавать свой дизайн для записей из разных источников (например, показывать иконку сайта рядом с заголовком).
Навскидку можно придумать один способ, позволяющий сравнительно просто создать несколько сосуществующих подборок лент.
Для этого в cron.* вместо описанного выше вызова помещается что-то в духе:
for CFG in /etc/rawdog/*.conf
do
WORKDIR="/var/cache/rawdog/"`basename $CFG .conf`
[ -d "$WORKDIR" ] || mkdir -p "$WORKDIR"
[ -f "$WORKDIR/config" ] || ln -sf /etc/rawdog/config "$WORKDIR/config"
rawdog --dir "$WORKDIR" --cfg "$CFG" --log /var/log/rawdog --no-lock-wait --update --write
done
Принцип работы прост: для каждого файла *.conf в /etc/rawdog будет (при необходимости) создан соответствующий подкаталог в /var/cache/rawdog, в него будет помещена ссылка на конфигурационный файл /etc/rawdog/config с настройками по умолчанию, и будет вызван rawdog с указанием считать настройки конкретной группы лент из файла *.conf (в первую очередь, отдельные подписки и отдельный файл для записи выдачи).
Автор: Vindicar
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/mikroformaty/71816
Ссылки в тексте:
[1] отпочкованием: http://habrahabr.ru/company/tm/blog/240135/
[2] VPS: https://www.reg.ru/?rlink=reflink-717
[3] наводка: http://habrahabr.ru/company/tm/blog/240135/#comment_8059943
[4] Tsyganov_Ivan: http://habrahabr.ru/users/tsyganov_ivan/
[5] FeedHQ: https://github.com/feedhq/feedhq
[6] то, что нужно: http://offog.org/git/rawdog/README
[7] найти в Сети: http://offog.org/git/rawdog/config
[8] Источник: http://habrahabr.ru/post/240545/
Нажмите здесь для печати.