Агрегатор "Катастеризм" / "Καταστερισμός" / "Katasterismos"

Καταστερισμός (Катастеризм) - aгрегатор русскоязычных gemini-публикаций.

Основную информацию о проекте я разместил на отдельной странице, поэтому далее постараюсь без copy-paste:

Если кратко, то захотелось сделать собственную реализацию gmisub, но на python3 и с отображением перекрестных ссылок между публикациями.

gmisub - Subscribe to Gemini pages

Идея не моя, она была украдена из ветки на GSR:

Реквестирую русскоязычный аналог Cosmos - агрегатор, который составляет треды из ссылающихся на кого-то ещё посты. Т.е. можно писать ответы на чьи-то посты с помощью своего гемлога.

При реализации встал вопрос: отображать ли перекрестные ссылки между публикациями одной ленты? Пока сделал как проще - отображать. Поживём-увидим, возможно потребуется доработка.

В качестве эксперимента и демонстрации оставлю ссылку на публикацию hugeping.ru:

Gemini на микроконтроллере
Большинство капсул работает и по 1.2, но, например gemini://gemlog.stargrave.org похоже жёстко требует 1.3. Впрочем, даже когда я собрал со сторонней библиотекой, которая поддерживает tls 1.3, капсула stargrave по-прежнему рвала соединение. Так что причина может быть в чём то ещё. Например, в каких то жёстких настройках. Не знаю.

Кстати о gemlog.stargrave.org: у меня на машинах с LibreSSL тоже начались проблемы с этой капсулой. И я тоже пока не стал разбираться в точных причинах. Это стало одним из поводов, почему агрегатор размещен не на моих серверах. Машина pub.phreedom.club крутится на Debian и отлично справляется в качестве хостинга для катастеризма.

Я попросил учётную запись в pub.phreedom.club. Это русскоязычный pubnix: Public Access UNIX, многопользовательский unix-like сервер, где каждый может попросить учётную запись. По большому счёту, это очень щедрое предложение: машина одна, ресурсы общие. Но всё строится на взаимном уважении и умении договариваться. Это моя первая учётная запись в pubnix'е и я, честно говоря, приятно удивлён. Помимо полного набора стандартных unix-утилит и установки дополнительных пакетов по просьбам пользователей, внутри так же предустановлены утилиты, "заточенные" именно под pubnix. Например gab, который реализует локальный чат. Или утилита recent, которая агрегирует последнюю активность пользователей сервера. Повторюсь: я приятно удивлён.

Получив аккаунт на pub.phreedom.club я клонировал в домашний каталог репозиторий katasterismos (ssh://anonymous@got.any-key.press/katasterismos). Проект (пока) получился без сохранения локального состояния и написан на python3 без привлечения сторонних библиотек. Поэтому запустить его на этой Debian-машине довольно просто. Так должно было быть в теории :) Но на практике я уже давно не замечаю, как использую какие-то специфичные вещи из Python версии 3.10+, а на pub.phreedom.club исполняемый файл python3 это Python 3.9.2. Пришлось немного модифицировать код katasterismos, что бы он успешно работал на этой версии интерпретатора. При написании этих строк, то есть прямо сейчас, меня осенило, что в системе может быть установлена и другая версия пайтона. Так и есть: никто не мешал мне использовать python3.10.

Но не буду же я запускать агрегатор каждый день "руками"))) Тут на помощь приходит crontab. С использованием команды "crontab -e" я запланировал запуск katasterismos каждый день в 23:45 (время на сервере московское):

45 23 * * * python3 /home/katasterismos/projects/katasterismos/katasterismos.py --feeds /home/katasterismos/public_gemini/about.gmi --atlantos /home/katasterismos/public_gemini/atlantos daily > /tmp/katasterismos.gmi && mv /tmp/katasterismos.gmi /home/katasterismos/public_gemini/index.gmi

Таком образом, за четверть часа до полуночи, агрегатор собирает публикации со всех известных ему лент. А результаты (через стандартных поток вывода) сохраняются в публичной gemini-капсуле (через временный файл, что бы на время работы агрегатора через gemini были доступны предыдущие результаты).

UPD 2025-09-08: запуск актуализирован временным файлом и аргументом --atlantos

Следующая запись: атлас катастеризма