Browse Source

Add readme

pull/1/head
parent
commit
f0d6726bb1
  1. 104
      README.md

104
README.md

@ -1 +1,103 @@ @@ -1 +1,103 @@
# RSSCollector
# 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: <CHATID>
token: "<TOKEN>"
rsslist:
- name: "<RSS1>"
url: "https://<URL1>"
- name: "<RSS2>"
url: "https://<URL2>"
```
где
- `dbpath` - путь до файла БД
- `telegram` - блок описания парабетров для telegram-бота
- `senddebug` - выводить ли debug-информацию при отправке в телеграм
- \<CHATID\> - идентификатор канала, в который будет присылаться информация. Получить можно например из робота [Json Dump Bot](https://t.me/JsonDumpBot), переслав ему любое сообщение из требующегося канала и взяв идентификатор (вместе с -) из параметра `forward_from_chat`
- \<TOKEN\> - токен бота, от имени которого будут присылаться сообщения и которого необходимо добавить в канал администратором (достаточно оставить ему права отсылать сообщения в канал). Бота заводим, как обычно, через [BotFather](https://t.me/BotFather)
- `rsslist` - блок описания лент, с которых будет собираться информация
- \<RSS1\>, \<RSS2\> - наименования лент. Используются как идентификаторы в БД и в логах для вывода информации, откуда инфа, а также при отправке в канал в заголовке
- \<URL1\>, \<URL2\> - веб-адреса 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`
Loading…
Cancel
Save