Bubo Reader — это гиперминималистичная программа для чтения каналов (RSS, Atom, JSON), которую вы можете развернуть на своем собственном сервере, Netlify за несколько шагов или Glitch за еще меньшее количество шагов! Цель проекта — создать веб-страницу, на которой отображается список ссылок из коллекции каналов, организованных по категориям и веб-сайтам. Вот и все.
Он назван в честь глупой совы-робота из «Битвы титанов» (1981).
Подробнее об этом проекте вы можете прочитать в моем блоге:
npm install
чтобы установить зависимости.feeds.json
, включив в него категории и ссылки на каналы, которые вы хотели бы видеть.npm run build:bubo
Вот и все! Теперь у вас должна быть статическая страница со ссылками на последний контент из ваших каналов в public
папке, готовая к использованию.
Статические части:
conf/feeds.json
— файл JSON, содержащий URL-адреса ваших каналов, разделенные на категории.config/template.html
— шаблон Nunjucks, позволяющий изменить способ отображения каналов. Это можно изменить на что угодно — см. ниже.public/style.css
— файл CSS для стилизации вывода вашего канала.public/index.html
— HTML-файл, который автоматически генерируется при запуске Bubo.Двигатель:
src/index.ts
— основной скрипт, который вы запускаете, когда хотите собрать новую версию Bubo. Он автоматически получит последний контент из ваших каналов и создаст новый статический файл public/index.html
.src/renderer.ts
— Рендерер, который загружает Nunjucks, шаблон и понимает, как обрабатывать входящие данные фида. Предпочитаете что-то другое? Это место, где можно это изменить!src/utilities.ts
— различные утилиты синтаксического анализа и нормализации для Bubo, спрятанные, чтобы поддерживать чистоту. В основном файле index.ts
вы найдете два значения, которые позволяют группировать и регулировать запросы фидов:
MAX_CONNECTIONS
определяет максимальное количество запросов, которые пакет может обрабатывать одновременно.DELAY_MS
определяет время задержки между каждым пакетом. Конфигурация по умолчанию не предусматривает пакетной обработки или регулирования , поскольку для MAX_CONNECTIONS
установлено значение Infinity
. Если вы хотите изменить Bubo, чтобы он получал только один канал каждую секунду, вы можете установить следующие значения:
const MAX_CONNECTIONS = 1 ;
const DELAY_MS = 1000 ;
Если вы хотите ограничить количество одновременных запросов до 10 каждые 2,5 секунды, вы можете установить это так:
const MAX_CONNECTIONS = 10 ;
const DELAY_MS = 2500 ;
На практике я никогда не сталкивался с проблемой, когда MAX_CONNECTIONS
установлено значение Infinity
, но это кажется разумной защитой для проектирования.
Самый быстрый способ — сделать ремикс проекта на Glitch: https://glitch.com/edit/#!/bubo-rss
В этом репозитории также есть ветка glitch
если вы предпочитаете начать с нее.
Просто измените некоторые каналы в файле ./config/feeds.json
, и все готово! Если вы хотите изменить стиль или шаблон, вы можете изменить файл ./public/style.css
или файл ./config/template.html
соответственно.
config/feeds.json
чтобы управлять своими лентами и категориями. Параметры развертывания должны автоматически импортироваться из файла netlify.toml
. Все, что вам нужно сделать, это подтвердить, и вы готовы к работе!
Чтобы поддерживать актуальность ваших каналов, вам нужно настроить Build Hook для вашего сайта Netlify и использовать другую службу, чтобы время от времени проверять его связь и запускать перестройку. Я бы предложил изучить:
Если у вас уже есть сервер под управлением Linux и некоторый опыт работы с командной строкой, возможно, будет проще настроить задание cron.
Посмотреть живые демо-версии можно здесь:
Если вы нашли это полезным, пожалуйста, рассмотрите возможность спонсировать меня или этот проект.
Если вы предпочитаете запустить это на своем собственном сервере, рассмотрите возможность использования одной из этих партнерских ссылок для настройки микроэкземпляра на Linode, Digital Ocean или Vultr.
Вот несколько веб-сайтов, использующих Bubo Reader:
Пожалуйста, поделитесь, если вы хотите, чтобы вас представили!