С давних времен у меня висит в ростере оригинальный инстанс JabRSS, ну и с тех же времен висит там подписка на kernel.org. Постит мне новости о новых релизах и багфиксах, красота.
Но всегда раздражали посты про linux-next — какой-то внутренний снапшот, который интересен, наверное, только разработчикам. Зацепился я в итоге за эту тему и сделал у себя в RSS-транспорте фильтры (v 1.6).
В базе теперь есть 2 поля для регулярок — «положительных» и «отрицательных», «белый» и «черный» списки, include/exclude — в общем, как удобно. Если регулярка задана в белом списке — получаем только то, что ее прошло. Ну и, соответственно, если задана в черном — то не получаем то, что ей соответствует.
Добавлено несколько команд для работы с этим:
- showfilter ИМЯ — показать текущие фильтры для заданной ленты
- setposfilter ИМЯ ФИЛЬТР — задать (или очистить, если ФИЛЬТР пустой) регулярку для белого списка
- setnegfilter ИМЯ ФИЛЬТР — аналогично для черного списка
Т.е., исходная проблема теперь решается в одну команду: setnegfilter kernel linux-next. Все, теперь все сообщения от ленты kernel, где в теме есть «linux-next», не будут показываться пользователю. А можно пойти другим путем и добавить в белый список слово stable, тогда в выводе будет информация только о релизах (без LTS) — в таком случае можно обойтись без черного списка.
И еще одно нововведение (v 1.7) — снова вокруг пользовательских настроек и таблицы subscribers. Авторы некоторых сайтов, возможно, как-то альтернативно понимают термин Short в одной из расшифровок RSS и отдают полное тело статьи в сообщении. Нет, иногда удобно — в Liferea я могу прочитать все, не заходя на сайт. Но простыня в несколько тысяч символов в Jabber-клиенте выглядит не сильно красиво. Грамотный вариант — иметь на сайте несколько лент, под полную и короткую версию — как это иногда делают для групп новостей или языков. Но таких вариантов мне как-то не попадалось.
В итоге добавил возможность усечения сообщения с помощью команды setshort ИМЯ ЧИСЛО — так каждый для себя может сам определить удобный размер сообщения для каждой конкретной ленты. По-умолчанию отдается все сообщение — либо же можно его лимитировать указанным числом — например, на уровне 300-500 символов.