Failed to authenticate. API Error: 401 Invalid authentication credentials
[2026-05-14] vault sync
This commit is contained in:
@@ -6,25 +6,19 @@ ssh -i ~/.ssh/id_rsa bazzite@192.168.1.86
|
||||
```
|
||||
Пароль sudo: `bazzite`
|
||||
|
||||
## SSH-доступ с Кракена (Portainer)
|
||||
## SSH-доступ с Кракена ✅
|
||||
|
||||
Кракен-агент работает внутри Docker-контейнера — SSH-клиента нет.
|
||||
Управление HTPC через Portainer API EP=3: одноразовый alpine-контейнер с примонтированными ключами.
|
||||
Кракен может SSH на HTPC напрямую. Ключ уже авторизован.
|
||||
|
||||
**Ключ Кракена** (добавить в HTPC `~/.ssh/authorized_keys`):
|
||||
```
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFl9JjpovitpHUdM1yCpmWb/iC0fe7fYVyXjLLrJSCVR kraken
|
||||
```
|
||||
|
||||
Добавить с Eagle (когда HTPC проснётся):
|
||||
```bash
|
||||
ssh -i ~/.ssh/id_rsa bazzite@192.168.1.86 \
|
||||
"echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFl9JjpovitpHUdM1yCpmWb/iC0fe7fYVyXjLLrJSCVR kraken' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
|
||||
ssh -i /opt/data/home/.ssh/id_ed25519 -o StrictHostKeyChecking=no bazzite@192.168.1.86 'КОМАНДА'
|
||||
```
|
||||
|
||||
⚠️ **TODO:** выполнить, когда HTPC проснётся. До этого Кракен не может SSH на HTPC.
|
||||
- Ключ внутри контейнера: `/opt/data/home/.ssh/id_ed25519`
|
||||
- WoL (пробудить): Python socket, MAC `B0:6E:BF:60:6D:64`
|
||||
- sudo пароль: `bazzite`
|
||||
|
||||
Полная дока по управлению с Кракена: скилл `htpc-control` (`~/.hermes/skills/smart-home/htpc-control/`)
|
||||
Полная дока: скилл `htpc-control` в `~/.hermes/skills/smart-home/htpc-control/SKILL.md`
|
||||
|
||||
## Go (на HTPC)
|
||||
Go установлен в `/usr/local/go/bin/go` (не в PATH по умолчанию).
|
||||
|
||||
@@ -44,13 +44,16 @@ media-pipeline (~/Developer/media_files_db, ветка kraken-agent)
|
||||
|
||||
## Текущий статус (2026-05-14, сессия 5)
|
||||
|
||||
### Sync результаты
|
||||
| Категория | Папок | NFO | Статус |
|
||||
|-----------|-------|-----|--------|
|
||||
| movies | 127 | 127 | ✅ 100% |
|
||||
| series | 45 | ✅ | ✅ |
|
||||
| cartoons | 126 | ~119 | ✅ почти всё (8 через resolve-manual) |
|
||||
| documentaries | 35 | ~27 | ⚠️ 8 остались (см. ниже) |
|
||||
### Sync результаты (последний запуск — dry_run=false)
|
||||
| Категория | Resolved | Unresolved | Статус |
|
||||
|-----------|----------|------------|--------|
|
||||
| movies | ✅ | 2 (generation.p, Black Mirror dup) | NFO пишутся |
|
||||
| series | ✅ | 1 (Black Mirror — homonym) | NFO пишутся |
|
||||
| cartoons | ✅ | 6 | в работе |
|
||||
| documentaries | ✅ | 6 | Tier 4 запускается |
|
||||
| **Итого** | **401** | **15** | sync запущен |
|
||||
|
||||
> `dry_run` выключен (2026-05-14), запущен `sync` — NFO пишутся на диск.
|
||||
|
||||
### Что работает
|
||||
- ✅ Docker образ `media-pipeline:kraken` задеплоен (ветка `kraken-agent`)
|
||||
@@ -62,31 +65,31 @@ media-pipeline (~/Developer/media_files_db, ветка kraken-agent)
|
||||
|
||||
### Открытые задачи
|
||||
|
||||
#### 1. 🔴 Web search path для документалок и специфичного контента
|
||||
**Принятое решение:** ничто из библиотеки не должно оставаться в unresolved. Если TMDb/KP не находят — должен срабатывать web search (IMDb HTML scrape, Tier 4). Сейчас `webSearch.enabled=true` в config.json, но 8 документалок всё равно в unresolved.
|
||||
#### 1. 🔴 [ОБЯЗАТЕЛЬНО К ИСПОЛНЕНИЮ] Довести media-pipeline до 0 unresolved без resolve-manual
|
||||
|
||||
**8 оставшихся:**
|
||||
- `/media/cartoons/25е - первый день`
|
||||
- `/media/documentaries/bbc. the real jungle book bear 2012`
|
||||
- `/media/documentaries/bbc. секреты собак`
|
||||
- `/media/documentaries/penguin meet the family (2020)`
|
||||
- `/media/documentaries/бегемоты - жизнь в воде`
|
||||
- `/media/documentaries/гиганты моря 2011`
|
||||
- `/media/documentaries/таинственная жизнь собак (hdtvrip 720p, 2013)`
|
||||
- `/media/documentaries/тайная жизнь собак (2016г)`
|
||||
**Принцип:** `resolve-manual` — не решение. Тул должен резолвить всё автоматически.
|
||||
**Текущее состояние:** 32 unresolved после sync (dry_run=false). Разбивка:
|
||||
|
||||
**Что нужно сделать:**
|
||||
- Запустить sync с `--debug` или отследить почему web search не помогает для этих item'ов
|
||||
- IMDbSearchProvider (Tier 4) должен находить BBC документалки по названию
|
||||
- Если IMDb тоже не находит — включить AIAgent (Tier 5) с OpenAI key, или добавить fallback: если все тиры вернули 0 кандидатов и папка содержит хотя бы один видеофайл → запускать web search по Google/IMDb с более агрессивными вариантами запроса
|
||||
- Цель: `unresolved.json` после sync = пустой
|
||||
**Группа A — старые source-папки (scan подхватывает оригиналы после apply):**
|
||||
`apply` создаёт canonical папки с симлинками, но оригинальные папки (`flow.aka.straume...`, `bezumnyj_maks_3...` и т.д.) остаются и при следующем scan снова попадают в unresolved. Это архитектурный баг.
|
||||
- **Нужно:** scanner должен пропускать папки, чьи файлы уже используются как цели симлинков в canonical структуре (или: хранить список resolved source-paths в unresolved.json и пропускать их при scan).
|
||||
|
||||
**Группа B — мультики (tie/ambiguity):**
|
||||
`козленок`, `тигренок`, `нехочуха.xvid`, `чебурашка.m4v`, `котенок по имени гав.m4v`, `25е - первый день`, `рики тики тави`, `приключения фунтика`, `незнайка`, `миграция`
|
||||
- Причины: KP возвращает несколько кандидатов с одинаковым весом (tie), или IMDB/web search не находит по транслитерации.
|
||||
- **Нужно:** улучшить tie-breaking (год из папки/файла, popularity score из KP), расширить кириллические варианты запроса.
|
||||
|
||||
**Группа C — документалки:**
|
||||
`bbc. the real jungle book bear 2012`, `bbc. секреты собак`, `penguin meet the family (2020)`, `бегемоты - жизнь в воде`, `гиганты моря 2011`, `таинственная жизнь собак (hdtvrip 720p, 2013)`, `тайная жизнь собак (2016г)`, `prehistoric.planet.s02.1080p`, `жизнь птиц 1998`, `пингвины. шпион в толпе`, `супер белки (2018)`, `шпион в снегах 2018`
|
||||
- Tier 4 (IMDb scrape) запускается, но candidates = 0 — title matching слишком строгий для BBC-документалок.
|
||||
- **Нужно:** для documentaries/ добавить relaxed matching (убирать "bbc.", год, технические теги из запроса перед поиском).
|
||||
|
||||
#### 2. 🟡 torrent-fix для 7 старых торрентов с путями `D:/Movies`
|
||||
- Transmission хранит old paths `D:/Movies/...` — нужен `torrent-fix` subcommand
|
||||
|
||||
#### 3. 🟡 Jellyfin библиотеки
|
||||
- Настроить библиотеки в Jellyfin (http://192.168.1.14:8096)
|
||||
- NFO файлы готовы, Jellyfin должен их подхватить
|
||||
- NFO файлы готовы (716 шт.), Jellyfin должен их подхватить
|
||||
|
||||
#### 4. 🟢 Hermes cron на Кракене
|
||||
- Периодический запуск sync (новые загрузки через Transmission)
|
||||
@@ -97,8 +100,8 @@ media-pipeline (~/Developer/media_files_db, ветка kraken-agent)
|
||||
|
||||
| Решение | Описание |
|
||||
|---------|----------|
|
||||
| **Unresolved = 0** | Цель — ничто из библиотеки не должно оставаться в unresolved после sync. Web search (Tier 4) и AI agent (Tier 5) — последние резервы перед тем как считать item нераспознанным |
|
||||
| **Web search enabled** | `providers.webSearch.enabled=true` в config.json. IMDb scrape как Tier 4 для всего, что не нашли TMDb/KP |
|
||||
| **Unresolved = last resort** | `unresolved.json` — НЕ мусорка. Это очередь для AI-агента (Tier 5), который по крону подбирает нераспознанные и разрешает их через LLM + web search. Для данной библиотеки цель: Tier 0-4 (TMDb → KP → IMDb scrape → web search) должны закрывать всё — в `unresolved.json` не должно попадать ни одного item'а из текущей библиотеки. |
|
||||
| **Web search enabled** | `providers.webSearch.enabled=true` в config.json. IMDb scrape как Tier 4 для всего, что не нашли TMDb/KP. Tier 4 должен срабатывать до того, как item уходит в unresolved.json |
|
||||
| **Документалки приоритет KP** | BBC/Discovery документалки плохо индексированы в TMDb. KP часто знает их под русскими названиями. Стратегия: сначала KP с русским названием из папки, потом IMDb |
|
||||
| **resolve-manual** | Только для экстренных случаев, не как регулярный процесс |
|
||||
| **Single-file NFO** | Для `.mkv`/`.m4v` файлов NFO создаётся рядом (`film.nfo`), не внутри |
|
||||
@@ -184,10 +187,27 @@ docker run --rm ... media-pipeline:kraken \
|
||||
|
||||
---
|
||||
|
||||
## Источник торрентов (важно)
|
||||
|
||||
Торренты на Кракене (128 шт.) импортированы из **Windows Transmission-daemon** на HTPC:
|
||||
```
|
||||
/run/media/bazzite/Windows/windows/serviceprofiles/localservice/appdata/local/transmission-daemon/
|
||||
├── torrents/ ← 210 .torrent файлов
|
||||
└── resume/ ← 214 resume (пути, статус)
|
||||
```
|
||||
Валидация resume (2026-05-14): **185/214 файлов есть на HTPC**. 29 missing:
|
||||
- ~15 медиафайлов с утраченного диска `X:/Movies/` — потеряны безвозвратно
|
||||
- ~14 игр/архивов из `Downloads/Unsorted/` — не медиа, не важно
|
||||
|
||||
Отдельно: **uTorrent** (`/run/media/bazzite/Windows/program files/utorrent/`) — 131 .torrent файл, resume.dat с 18 записями. Из них только 6 хешей совпадают с Кракеном.
|
||||
|
||||
`Karnavalnaya.noch.1956.BDRip.AVC.mkv` — есть в uTorrent и в Transmission на Кракене (`downloaded=0`). Файла нет нигде — **никогда не скачивался**.
|
||||
|
||||
## Журнал
|
||||
|
||||
- **2026-05-13 сессия 1:** HTPC разбужен, rsync запущен (~1.3TB), торрент-база импортирована (128 торрентов)
|
||||
- **2026-05-13 сессия 1:** HTPC разбужен, rsync запущен (~1.3TB), торрент-база импортирована (128 торрентов из Windows Transmission-daemon)
|
||||
- **2026-05-13 сессия 2:** Docker build arm64, deploy на Кракен, first sync
|
||||
- **2026-05-13 сессия 3:** `kraken-agent` ветка: UnresolvedStore, resolve-manual, agent, torrent-fix subcommands
|
||||
- **2026-05-14 сессия 4:** 5 системных багов исправлены. Sync: 222/317 resolved (70%).
|
||||
- **2026-05-14 сессия 5:** resolve-manual для 13 items (movies/cartoons/series/documentaries). unresolved: 24 → 8. Исправлен баг NFO path для single-файлов. kraken-ssh переключён на WireGuard.
|
||||
- **2026-05-14 сессия 5:** resolve-manual для 13 items. unresolved: 24 → 8. NFO path bug fix. kraken-ssh → WireGuard.
|
||||
- **2026-05-14 сессия 6 (текущая):** dry_run=false, sync запущен → 401 resolved, 32 unresolved. `apply` создаёт canonical папки + симлинки (оригиналы не трогает). 716 NFO написано. Валидация торрентов HTPC.
|
||||
|
||||
Reference in New Issue
Block a user