diff --git a/README.md b/README.md index 7136f02..e62c548 100644 --- a/README.md +++ b/README.md @@ -1 +1,103 @@ -# RSSCollector \ No newline at end of file +# RSSCollector + +## О проекте +Данный проект предназначен для сбора информации из RSS о публикациях на сайтах. Найденные новые публикации пересылаются в канал в Telegram. + +## Какие технологии используются + +Для сборки проекта необходимы: + +1. Компилятор [GO](https://go.dev/dl/) +2. Дополнительный модуль обработки параметров командной строки https://github.com/jessevdk/go-flags +3. Дополнительный модуль для работы с Telegram Bot API https://github.com/go-telegram-bot-api/telegram-bot-api +4. Встраиваемая [БД BoltDB](https://github.com/boltdb/bolt) + +## Конфигурация + +По-умолчанию конфигурационный файл ищется в том же каталоге, где запускается исполняемый файл, с именем `config.yml`. + +Формат данного файла - YAML + +Выглядит конфиг так: + +```yaml +dbpath: "/var/cache/rsscollector/rss.db" +telegram: + senddebug: true + chatid: + token: "" +rsslist: + - name: "" + url: "https://" + - name: "" + url: "https://" + +``` + +где + +- `dbpath` - путь до файла БД +- `telegram` - блок описания парабетров для telegram-бота +- `senddebug` - выводить ли debug-информацию при отправке в телеграм +- \ - идентификатор канала, в который будет присылаться информация. Получить можно например из робота [Json Dump Bot](https://t.me/JsonDumpBot), переслав ему любое сообщение из требующегося канала и взяв идентификатор (вместе с -) из параметра `forward_from_chat` +- \ - токен бота, от имени которого будут присылаться сообщения и которого необходимо добавить в канал администратором (достаточно оставить ему права отсылать сообщения в канал). Бота заводим, как обычно, через [BotFather](https://t.me/BotFather) +- `rsslist` - блок описания лент, с которых будет собираться информация +- \, \ - наименования лент. Используются как идентификаторы в БД и в логах для вывода информации, откуда инфа, а также при отправке в канал в заголовке +- \, \ - веб-адреса RSS-лент + +## Сборка + +`go build -o rsscollector` в каталоге проекта. Перед этим имеет смысл получить все зависимости, перечисленные в `go.mod` + +## Запуск + +При запуске проверяется один параметр командной строки: + +`-c` или `--configpath` - в нем необходимо указать, где находится конфиг. Как было уже сказано выше - это необязательно и конфиг можно разместить прямо в каталоге запуска. + +RSS - ленты парсятся по-очереди, новые сообщения отсылаются в канал и записываются в БД, чтобы при следующем запуске не отсылались. Соответственно, при первом запуске надо быть готовым, что в канал прилетит очень много сообщений. + +Я использую для запуска данного бинарника systemd и его возможности для запуска сервисов по расписанию. + +Для этого в /etc/systemd/system созданы два файла: + +- rsscollector.service +- rsscollector.timer + +rsscollector.service: + +```ini +[Unit] +Description=Collect RSS from sites and send to telegram +Wants=rsscollector.timer + +[Service] +Type=oneshot +ExecStart=/usr/local/bin/rsscollector -c /etc/rsscollector/config.yml +User=root +Group=root + +[Install] +WantedBy=multi-user.target +``` + +rsscollector.timer + +```ini +[Unit] +Description=Collect RSS from sites and send to telegram +Requires=rsscollector.service + +[Timer] +Unit=rsscollector.service +OnCalendar=*:0 + +[Install] +WantedBy=timers.target + +``` + +После создания файлов необходимо включить выполнение `rsscollector.timer` командой: +`systemctl enable rsscollector.timer` + +В начале каждого часа будет вызываться на выполнение `rsscollector.service` \ No newline at end of file