91 lines
3.4 KiB
Markdown
91 lines
3.4 KiB
Markdown
# 2026-matrix-sumka
|
||
|
||
Matrix-бот для запуска
|
||
[`2026-linux-sumka`](https://git.tyukalov.su/nikita/2026-linux-sumka.git).
|
||
Бот принимает поддерживаемые аудио- и видеофайлы, запускает `sumka` в отдельном
|
||
Docker-контейнере и отправляет пользователю готовый `output.pdf`.
|
||
|
||
Одновременно выполняется только одно задание. Новый файл во время обработки
|
||
сразу отклоняется и не ставится в очередь.
|
||
|
||
Поддерживаемые расширения: `.mp4`, `.mkv`, `.avi`, `.mp3`, `.m4a`, `.wav`.
|
||
Файл можно отправить в Matrix как видео, аудио или обычный файл.
|
||
|
||
## Как это работает
|
||
|
||
Для каждого принятого видео бот:
|
||
|
||
1. очищает `runtime/work`;
|
||
2. скачивает файл как `runtime/work/input.<расширение>`;
|
||
3. запускает контейнер `sumka` через `run_sumka.sh`;
|
||
4. читает этапы обработки из `report.txt`;
|
||
5. проверяет код выхода процесса;
|
||
6. отправляет `output.pdf` в исходную Matrix-комнату.
|
||
|
||
Вывод контейнера сохраняется в `runtime/work/sumka.log`.
|
||
|
||
## Конфигурация
|
||
|
||
При первом запуске автоматически создаётся `runtime/config.json`:
|
||
|
||
```json
|
||
{
|
||
"matrix_homeserver": "https://matrix.example.org",
|
||
"matrix_user": "sumka-bot",
|
||
"store_dir": "session_storage",
|
||
"sumka_image": "sumka:amd",
|
||
"ai_api_key": "change-me",
|
||
"sumka_args": []
|
||
}
|
||
```
|
||
|
||
`matrix_user` — локальная часть Matrix ID без `@` и имени сервера.
|
||
В `sumka_args` можно передать аргументы командной строки `sumka`, например имена
|
||
моделей. Для NVIDIA укажите образ с `nvidia` в теге, например `sumka:nvidia`;
|
||
для AMD — `sumka:amd`.
|
||
|
||
## Запуск в Docker
|
||
|
||
На машине заранее должны быть собраны нужный образ `sumka` и образ бота.
|
||
|
||
```bash
|
||
mkdir -p runtime
|
||
docker compose build
|
||
docker compose run --rm bot
|
||
```
|
||
|
||
Первый запуск создаст конфиг и завершится. Заполните
|
||
`runtime/config.json`, затем повторите команду для первой авторизации в Matrix.
|
||
После успешного входа остановите процесс через `Ctrl+C`; сессия сохранится в
|
||
`runtime/session_storage`.
|
||
|
||
Пароль также можно передать через окружение:
|
||
|
||
```bash
|
||
MATRIX_PASSWORD='matrix-password' \
|
||
docker compose run --rm -e MATRIX_PASSWORD bot
|
||
```
|
||
|
||
Постоянный запуск:
|
||
|
||
```bash
|
||
docker compose up -d
|
||
```
|
||
|
||
Бот использует Docker daemon хоста через `/var/run/docker.sock`; вложенный
|
||
Docker daemon не запускается.
|
||
|
||
## Запуск через `.venv`
|
||
|
||
Нужны Python 3.12+, Docker CLI, `libmagic` и `libolm`.
|
||
|
||
```bash
|
||
python3 -m venv .venv
|
||
. .venv/bin/activate
|
||
python -m pip install -r requirements.txt
|
||
cp config.example.json config.json
|
||
python main.py
|
||
```
|
||
|
||
Используется стабильная версия `mab` `v0.5.2`.
|