Files
mattermost-dl/README.md
T
Сергей Маринкевич eb2c9bab19 Add README with quick start and crontab example.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-01 11:55:13 +07:00

85 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# mattermost-dl
Локальная выгрузка истории Mattermost в JSON и поиск по ней (SQLite FTS и MCP).
- `mattermost-dl.py` — скачивает каналы в `results/YYYYMMDD/`
- `mm_index.py` — индексирует выгрузки в `mattermost_index.sqlite`
- `mm_search.py` — поиск из командной строки
- `mm_search_mcp.py` — тот же поиск как MCP-сервер
- `renew.sh` — инкрементальная выгрузка команд и обновление индекса
`config.json`, `cookies.pkl`, `results/` и база индекса в git не попадают.
## Быстрый старт
```bash
cd /home/grayhook/Documents/mattermost-dl
python3 -m venv .venv
.venv/bin/pip install mattermostdriver requests beautifulsoup4 fastmcp
cp config.json.example config.json
```
В `config.json` укажите хост Mattermost (без `https://`), `login_mode` (`gitlab`, `token` или `password`) и логин. Пароль в файл не пишется.
Первый запуск интерактивный: скрипт спросит недостающие поля и сохранит токен.
```bash
.venv/bin/python mattermost-dl.py
```
Дальше выгрузка без вопросов — оба флага обязательны. `--channel all` берёт все каналы команды, иначе список имён через запятую.
```bash
.venv/bin/python mattermost-dl.py --team esr-daily --channel all
```
После первого успешного прогона в конфиг пишутся `incremental`, `last_export_at` и `output_base`. Следующие запуски дописывают только новые сообщения в ту же папку.
Индекс (для быстрого поиска и вложений):
```bash
.venv/bin/python mm_index.py
```
Поиск:
```bash
.venv/bin/python mm_search.py "текст" --user sergey.marinkevich --limit 20
```
Обновить все настроенные команды и индекс одной командой:
```bash
./renew.sh
```
`renew.sh` выгружает `esr-daily`, `esr-developers` и `esr-dev-and-qa`, затем вызывает `mm_index.py`.
## Crontab
Каждые 15 минут в рабочие часы будней — выгрузка и инкрементальный индекс. По субботам в 10:15 — полная переиндексация.
```cron
*/15 8-22 * * 1-5 cd /home/grayhook/Documents/mattermost-dl && /usr/bin/bash renew.sh >> /tmp/mattermost-dl.log 2>&1
15 10 * * 6 cd /home/grayhook/Documents/mattermost-dl && ./.venv/bin/python3 mm_index.py --reindex-all >> /tmp/mattermost-dl-weekly.log 2>&1
```
## Поиск
| Задача | Команда |
|---|---|
| Текст сообщения | `mm_search.py "запрос"` |
| Пользователь, канал, команда | `--user`, `--channel`, `--team` |
| Даты | `--after 2026-01-01 --before 2026-02-01` |
| Имя вложения | `--file-name` (нужен индекс) |
| Текст внутри вложения | `--file-content` (нужен индекс, только UTF-8) |
| Каталог пользователей | `--resolve-user "Фамилия"` / `--search-users "запрос"` |
Корень выгрузки по умолчанию `results`, база — `mattermost_index.sqlite`. Переопределение: `-r` / `--root` и `--db`. Полный проход без кэша файлов: `mm_index.py --reindex-all`.
## MCP
`mm_search_mcp.py` по умолчанию работает через stdio. Общий HTTP-процесс: `MM_MCP_TRANSPORT=http`, хост и порт — `MM_MCP_HOST` / `MM_MCP_PORT` (по умолчанию `127.0.0.1` и `8766`), путь — `MM_MCP_PATH` (`/mcp`). Пример юнита — `mm-search-mcp.service`.
Переменные поиска: `MM_SEARCH_ROOT` (по умолчанию `results`), `MM_SEARCH_DB` (`mattermost_index.sqlite`), `MM_CONFIG_PATH` (`config.json`). Подробности инструментов — в `mattermost-search/SKILL.md`.