[О блоге] [наверх] [пред] [2022-02-19 12:25:02+03:00] [110d7109a7e2c43bafaed0426a89cea6718eaadf]

Полностью перешёл на go.stargrave.org/feeder

https://www.feeder.stargrave.org/WARCs.html
С момента создания b10a0aa678fd8759885c9af0d9abba7bafd88efb своего
новостного агрегатора, нашлось много мелочей и косяков и особенностей:

* вряд ли кто-то удивится что некоторые XML-ки вообще невалидны. Причём
  совсем (типа <foo bar="baz "boo" bom">). Но, видимо, авторам это
  сообщают и через полдня ошибки пропадают
* бывают feed-ы в которых содержимое новости (content) меняется *каждый*
  раз при скачивании feed. Я перешёл на хэш от title+content как
  идентификатор уникальный, но это не будет работать, так как tracking
  информация каждый раз меняет этот хэш. Дата поста в этих feed-ах
  аналогична равна now банально. Но, повезло что хотя бы GUID там
  присутствует и действительно уникально идентифицирует пост. В итоге я
  проверяю уникальны ли GUID-ы и, если да, то использую их, в противном
  случае хэш от title+content (у кого-то title нет, у кого-то он
  повторяется). Вот это уже работает надёжно
* updated дата самого feed-а может быть меньше чем дата его постов.
  Поэтому нужно брать дату последнего поста
* бывает что информация об авторах присутствует, но равна пустой строке
* удалил пять feed-ов потому что они отдают 403 если видят curl-овый
  User-Agent. Я сейчас отправляю go.stargrave.org-feeder/0.1.0, но
  никакого почтения тем кто не даёт использовать curl -- не достойны
  упоминания или чтения

Много ещё всяких мелочей поправил и исправил. Всё работает просто
прекрасно теперь! Newsboat я полностью удалил. Остался urls файл,
генерируемый linksexp (df5af37e96c74dedf26d1a2614cb2fe79a7f52ba),
который продолжаю использовать для urls2feeds.zsh, ибо этот список
регулярно меняется (что-то появляется, что-то исчезает, где-то меняются
адреса и домены).

В Mutt на клавише "o" в режиме pager открывается urlview с ссылками из
X-URL и X-Enclosure, по аналогии "o" клавише в Newsboat.

Максимальное кол-во элементов feed-а можно изменять конкретно для
каждого feed-а: echo 50 > feeds/FEED/max. Ноль будет означать без
ограничений.

Появилась приятная возможность пересохранять новость в другой ящик,
чтобы почитать в будущем. Это же всё же полноценная почтовая система.
Большой плюс по сравнению с Newsboat.

Полностью избавился от redo зависимости в проекте. Зависимостей в
задачах было 1.5 штуки, и то через промежуточную искусственную цель. Для
распараллеливания используется GNU parallel, у которого клёвый progress
bar (--bar) показывающий сколько выполнено и сколько осталось задач.
redo тут всё же переусложнение.

Не то чтобы я это когда буду использовать, но в качестве доказательства
что это не сложно сделать: написал ./feeds-encs.zsh для скачивания
enclosures (ссылки на аудиофайлы в podcast-ах например) из новых новостей.
GNU wget уже этим занимается. И аналогично ./feeds-warcs.zsh скачивает
все link-и из новостей как страницы с реквизитами (все необходимые
картинки, CSS-ки для просмотра HTML-ки) в WARC файлы. Это позволяет не
только скачать feed-ы, но и всё на что они ссылаются и читать это дальше
в offline, используя например tofuproxy как WARC броузер:
    for w (feeds/*/warcs/*.warc) print $w:a > path/to/tofuproxy/fifos/add-warcs

В общем, очень доволен получившимся результатом! Я думал будет куда
геморройнее и менее удобно использовать MUA чем Newsboat, в котором
keybinding-и стали так привычны. Плюс это всё работает значительно
быстрее в целом: запуск newsboat занимал секунд 20, при этом он жутко
тёк по памяти (6e2b2c02747ad3c1ac0a5e39e18e616b3b0bb680) и неслабо её ел
(сотни мегабайт).

    [оставить комментарий]