Initial commit (codex)

This commit is contained in:
2026-09-24 19:32:57 +03:00
commit 2ae1e3e0fb
11 changed files with 824 additions and 0 deletions

90
README.md Normal file
View File

@@ -0,0 +1,90 @@
# 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`.