hoarder

module
v0.1.44 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 13, 2024 License: MIT

README

hoarder

Go Reference Go Report Go Coverage CodeQL

Бот для сбора данных.

Описание

Бот предоставляет возможность сбора данных из внешних систем с помощью джобов и интерфейс для их старта с помощью триггеров.

Конфигурация

Конфигурация может осуществляться через переменные среды, конфигурационные файлы и просто через передачу 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

Счета, выписки, операции, чеки, инвестиционные счета и операции из онлайн-банка "Тинькофф".

Авторизация

Для авторизации потребуется ввести код подтверждения из СМС.

Токен живет примерно сутки при условии регулярного пинга (выполняется клиентом автоматически).

Поддерживаемые базы данных

  • sqlite
  • postgres
  • mysql (не протестировано)
firefly

Для банковских данных, выгруженных с помощью джобов (на текущий момент только tinkoff) есть опция синхронизации с Firefly III. Синхронизация будет выполняться автоматически после каждого инстанса соответствующей джобы, если в конфигурации заполнена соответствующая секция.

Триггеры

Триггер Описание
xmpp Общение с пользователем (включая запрос кода подтверждения) происходит по протоколу XMPP (Jabber). Для запуска джобов нужно отправить соответствующее сообщение боту:
* all для запуска всех джобов
* tinkoff lkdr для запуска конкретных джобов
schedule Фоновый запуск джобов с заданным интервалом. Запуск происходит одновременно для всех пользователей, указанных в конфигурации триггера. Коды подтверждения запрашиваться не будут.
stdin Интерактивная командная строка. Рекомендуется отключить триггер schedule или перенаправить stderr в файл, чтобы логирование не мешало эксплуатации. Для запуска джобов ввести имя нужного пользователя и ID нужных джобов (аналогично триггеру xmpp).

Ответственность

Проект активно разрабатывается и дополняется. Отсутствие поломок существующего функционала и сохранения совместимости конфигурации не гарантировано.

Обратите внимание, что для конфигурации некоторых джобов необходимы чувствительные данные (логины/пароли). Примите меры для защиты конфигурационных файлов от доступа третьими лицами.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL