Skip to content

soaska/faceswaper

Repository files navigation

faceswapper

Бот телеграм с конструкцией, позволяющей выполнять распределенные вычисления на нескольких устройствах. Отдельно запускаются телеграм бот, который отвечает на запросы пользователя, работает с базой данных и создает задачи, база данных pocketbase и обработчик задач, который может быть запущен в нескольких экземплярах на разных устройствах для ускорения вычислений. В данном примере представлена обработка видео с помощью ffmpeg для создания кружочков в телеграме. При этом не требуется большая мощность, поэтому возможость горизонтального масштабирования не играет роли. Играет роль улучшеная модель контроля задач, отслеживания ошибок, которые сохраняются в базе данных с графическим интерфейсом. Задачи можно перезапускать, и они не сбрасываются при перезапуске бота.

Запуск в контейнере

Скопируем код

git clone https://github.com/soaska/faceswaper.git
cd faceswaper

Заполним окружение

cp example.env .env
vim .env

Запустим pocketbase, перейдем по её url, создадим пользователя.

podman compose up pocketbase

Теперь можем запускать бота и воркер.

podman compose up -d --build

Запуск

Запустим pocketbase по этой инструкции. Удалим collection users. Зайдем во вкладку settings / import collections. Далее в меню load from json выбираем файл pocketbase/collections/PB Schema.json

Скопируем код

git clone https://github.com/soaska/faceswaper.git
cd faceswaper

Перейдем в telegram-bot и заполним окружение

cd telegram-bot
cp example.env .env
vim .env

Скопируем .env в job-manager

cp .env ../job-manager/

Скачаем зависимости и запустим

go mod download
go run .

Перейдем в job-manager, запустим его

cd ../job-manager
go mod downloadl
go run .

Бот отвечает на сообщения с помощью компонента telegram-bot, задачи выполняются job-manager. Компоненты связаны базой данных pocketbase, все операции выполняются через нее, ее наличие обязательно. Папки telegram-bot/data и job-manager/cache содержат только временные файлы и могут быть удалены в период неактивности программы. job-manager требует ffmpeg.

По вопросам пишите в issues или на почту soaska@cornspace.su.

License: MPL-2.0