hoarder
Бот для сбора данных.
Описание
Бот предоставляет возможность сбора данных из внешних систем с помощью джобов
и интерфейс для их старта с помощью триггеров.
Конфигурация
Конфигурация может осуществляться через переменные среды, конфигурационные файлы и просто
через передачу CLI-аргументов.
Самое простое – конфигурация через JSON-файл. Схему для конфигурации можно посмотреть
здесь. Включение и конфигурация
тех или иных джобов и триггеров осуществляется через задание соответствующей секции в файле
конфигурации.
Запуск
Docker (рекомендуется)
docker -v ${PWD}/config.json:/config.json:ro ghcr.io/jfk9w/hoarder:master --config.file=/config.json
Установка через Go
Необходим Go версии не ниже 1.21.
GOEXPERIMENT=loopvar go install github.com/jfk9w/hoarder/cmd/hoarder@latest
${GOPATH}/bin/hoarder --config.file=config.json
Сборка из исходников
Необходим Go версии не ниже 1.21.
git clone git@github.com:jfk9w/hoarder.git
cd hoarder
make build
bin/hoarder --config.file=config.json
Джобы
Реализуют логику инкрементального или полного извлечения данных из
внешней системы, преобразования их и сохранения в некоторое хранилище.
Для джобов, где необходимо подтверждение пользователя (по коду из СМС, например)
реализована конфигурация авторизационных данных для каждого пользователя. Соответствующий
пользователь должен быть задан в конфигурации триггера, которым он может использовать
(если применимо).
lkdr
Чеки и фискальные данные из сервиса ФНС "Мои чеки онлайн". Для использования необходимо хотя бы
раз авторизоваться на сайте с нужным номером телефона.
Авторизация
Обратите внимания, что для выполнения авторизации требуется токен капчи. Его можно получить в автоматическом
режиме через сервис RuCaptcha, задав API-ключ в соответствующей секции конфигурации.
Потребуется ввести код подтверждения из СМС.
Альтернатива – подсмотреть токены в браузере и руками внести их в базу.
В этом случае нужно соответственно заполнить deviceId
и userAgent
в настройках пользователя в конфигурации джобы.
Токены вечные (по крайней мере пока), поэтому авторизацию нужно выполнить только один раз.
Поддерживаемые базы данных
sqlite
postgres
mysql
(не протестировано)
tinkoff
Счета, выписки, операции, чеки, инвестиционные счета и операции из онлайн-банка "Тинькофф".
Авторизация
Авторизация происходит с помощью Selenium – для работы потребуется chromedriver
(протестировано с chrome
и chromium
) и задание соответствующих
настроек в конфигурации в секции tinkoff/selenium
.
В Docker-образе необходимое ПО уже установлено, дополнительная конфигурация не требуется.
Для авторизации потребуется ввести код подтверждения из СМС.
Токен живет примерно сутки при условии регулярного пинга (выполняется клиентом автоматически).
Поддерживаемые базы данных
sqlite
postgres
mysql
(не протестировано)
firefly
Для банковских данных, выгруженных с помощью джобов (на текущий момент только tinkoff
) есть опция синхронизации
с Firefly III. Синхронизация будет выполняться автоматически после каждого инстанса
соответствующей джобы, если в конфигурации заполнена соответствующая секция.
Триггеры
Триггер |
Описание |
xmpp |
Общение с пользователем (включая запрос кода подтверждения) происходит по протоколу XMPP (Jabber). Для запуска джобов нужно отправить соответствующее сообщение боту: * all для запуска всех джобов * tinkoff lkdr для запуска конкретных джобов |
schedule |
Фоновый запуск джобов с заданным интервалом. Запуск происходит одновременно для всех пользователей, указанных в конфигурации триггера. Коды подтверждения запрашиваться не будут. |
stdin |
Интерактивная командная строка. Рекомендуется отключить триггер schedule или перенаправить stderr в файл, чтобы логирование не мешало эксплуатации. Для запуска джобов ввести имя нужного пользователя и ID нужных джобов (аналогично триггеру xmpp ). |
Ответственность
Проект активно разрабатывается и дополняется. Отсутствие поломок существующего функционала и сохранения совместимости конфигурации не гарантировано.
Обратите внимание, что для конфигурации некоторых джобов необходимы чувствительные данные (логины/пароли).
Примите меры для защиты конфигурационных файлов от доступа третьими лицами.