2026-05-16 media-toolbox: classification fix + torrent case rename documented

This commit is contained in:
Alexey Martemyanov
2026-05-15 14:48:43 +06:00
parent 4f4358d76b
commit 653d2bf056
9 changed files with 131 additions and 23 deletions
+2
View File
@@ -7,6 +7,8 @@
**MAC:** `B0:6E:BF:60:6D:64`
> ⚠️ HTPC агрессивно уходит в сон — SSH таймаутит через ~10-15 мин простоя. Перед каждой SSH-сессией отправлять WoL и ждать **~70 сек** (не 30) до появления SSH.
### Скрипты (~/Automation/)
```bash
+6 -4
View File
@@ -31,7 +31,7 @@ ip: 192.168.1.14
| 11 — Hermes агент Кракен | ✅ | Запущен, Telegram @kraken_htpc_bot живой, mcpvault ✅, obsidian RW, SOUL.md, browser/Playwright ✅, Spotify ✅ |
| 11а — Docker на HDD | ✅ | data-root + containerd перенесены на HDD через symlink, SD освободилась до 22% |
| 12 — Obsidian sync (Taiga↔Kraken↔Eagle) | ✅ | Все 3 узла работают, кроны активны, двусторонний sync протестирован |
| 13 — Vault wiki (llm-wiki) | 🔲 | Eagle: scheduled wiki-curation job, Karpathy-style |
|| 13 — Vault wiki (llm-wiki) | | Eagle: scheduled wiki-curation job, Karpathy-style. Active 2026-05-13. |
---
@@ -323,6 +323,8 @@ Hermes маскирует секреты как `***` в terminal output. `$TOKE
| `gemini-2.5-flash` | ✅ primary |
| openrouter fallbacks | ✅ |
> ⚠️ **Gemini prepaid кредиты исчерпаны (2026-05-14)** — HTTP 429 RESOURCE_EXHAUSTED. Пока не пополнено, Кракен работает на OpenRouter free fallback (не поддерживает vision — изображения из Telegram не обрабатываются). Пополнить: https://aistudio.google.com/projects
### Telegram бот
- Имя: Кракен / Bot: [@kraken_htpc_bot](https://t.me/kraken_htpc_bot)
@@ -434,9 +436,9 @@ Eagle-only: scheduled Hermes job раз в сутки запускает wiki-cu
- Lint: orphans, broken links, stale content
**TODO:**
- [ ] Создать `wiki/SCHEMA.md`, `wiki/index.md`, `wiki/log.md`
- [ ] Добавить cron job на Eagle: ежедневно 02:00, skill `llm-wiki`
- [ ] Настроить `WIKI_PATH=~/obsidian/wiki` в Eagle `.env`
- [x] ~~Создать `wiki/SCHEMA.md`, `wiki/index.md`, `wiki/log.md`~~ ✅ 2026-05-13
- [x] ~~Добавить cron job на Eagle: ежедневно 02:00, skill `llm-wiki`~~ ✅ 2026-05-13
- [x] ~~Настроить `WIKI_PATH=~/obsidian/wiki` в Eagle `.env`~~ ✅ 2026-05-13
---
+8 -3
View File
@@ -94,11 +94,14 @@ media-pipeline (~/Developer/media_files_db, ветка kraken-agent)
#### 6. 🔴 Мультфильмы в library/movies (классификационный баг)
**Проблема:** `library/cartoons = 0 items`, `library/movies = 202 items` из которых **106 — мультфильмы** (симлинки ведут в `/media/cartoons/`). Pipeline при `apply` не учитывает source directory для определения выходной категории — всё льётся в `movies`.
**Проблема:** `library/cartoons = 0 items`, `library/movies = 202 items` из которых **106 — мультфильмы**. `MediaFinalizer.OutputConfig` содержал только `moviesDirectories` + `seriesDirectories``buildMovieActions` всегда писал в movies.
**Примеры неправильно классифицированных:** Despicable Me, Encanto, Luca, Умка, Чебурашка, Бременские музыканты, Ёжик в тумане, и ещё ~100 советских мультиков.
**Фикс (задеплоен):**
1. `Config.OutputConfig` + `MediaFinalizer.OutputConfig` расширены: добавлены `cartoonsDirectories` + `documentariesDirectories`.
2. `movieOutputDir(forGenres:)` — роутинг по resolved жанрам (Animation→cartoons, Documentary→documentaries). Source path не используется.
3. `ProviderSearchStrategy.facts()` теперь эмитит `NFOMetadataFact` с жанрами провайдера (раньше genres терялись, в граф не писались).
**Нужно:** в `MediaFinalizer`/`apply` логике использовать source dir (`/media/cartoons/``output.cartoons`, `/media/documentaries/``output.documentaries`) вместо TMDb genre для определения выходной папки.
**После деплоя:** нужно переместить существующие 106 неправильных entries из `library/movies` в `library/cartoons` (отдельный скрипт). Новые sync'и будут класть правильно.
- Настроить библиотеки в Jellyfin (http://192.168.1.14:8096)
- NFO файлы готовы (716 шт.), Jellyfin должен их подхватить
@@ -203,6 +206,8 @@ docker run --rm ... media-pipeline:kraken \
| Исходники | `~/Developer/media_files_db/`, ветка `kraken-agent` |
| Docker образ | `media-pipeline:kraken` (arm64, Colima 24GB) |
| kraken-ssh | `ssh kraken-ssh` → 10.99.1.2:22 через WireGuard (обновлено 2026-05-14) |
| docker deploy | `docker save \| ssh` зависает для образов >500MB. Деплоить только через Portainer API или scp+base64. После деплоя: `docker run --rm ... sync > /tmp/sync.log 2>&1 &` (background SSH) |
| Transmission RPC | Токен: `curl -D /tmp/hdrs ... > /dev/null`, затем `grep X-Transmission-Session-Id /tmp/hdrs \| awk '{print $2}' \| tr -d '\r\n'`. Payload с base64 торрента — писать в файл (`-d @file`), не аргументом (иначе "Argument list too long") |
---