[2026-09-22] eagle: personal/plans/kraken-media-inventory-cleanup.md personal/tech/lampac-deployment.md personal/tech/skill-lampac-kraken-deploy.md
This commit is contained in:
1 parent
5249bddf8f
commit
3ae71671e7
3 files changed
+330
-51
No files matched your search
@@ -3251,8 +3251,153 @@ else{Lampa.Listener.follow('app',function(e){if(e.type=='ready')patchCubMain();}
|
||||
Проверка в шаге 7 валидирует именно ключ `watchlist` и предупреждает,
|
||||
если в `/catalog` остался русский ключ.
|
||||
|
||||
## 🔴 Полная инвентаризация диска Кра́кена (2026-09-22, вечер)
|
||||
|
||||
Alex: *«проверь все что скачано сейчас из сериалов и фильмов (не только в sonarr/radarr папках)
|
||||
составь табличку что из этого есть в списке watchlist (и соответственно доступно в lampa)
|
||||
и то чего нет в lampa»* → *«вообще все. нужна полная инвентаризация что можно сносить,
|
||||
а что нельзя»*.
|
||||
|
||||
**Отдельный план с таблицей: [[personal/plans/kraken-media-inventory-cleanup]].**
|
||||
Здесь — только методика и переиспользуемые факты.
|
||||
|
||||
### Цифры
|
||||
|
||||
```
|
||||
802 видеофайла · 233 позиции · 1236.1 ГБ занято
|
||||
A. в watchlist (Lampa покажет): 29 поз. / 456.0 ГБ
|
||||
B. не в watchlist: 204 поз. / 780.1 ГБ
|
||||
точных дублей (имя+размер): 46 групп / 89.2 ГБ зря
|
||||
```
|
||||
|
||||
| Папка | Файлов | ГБ | Индексируется arr |
|
||||
|---|---|---|---|
|
||||
| `movies` | 51 | 309.7 | ❌ |
|
||||
| `documentaries-series` | 72 | 235.6 | ❌ |
|
||||
| `movies-radarr` | 11 | 176.2 | ✅ |
|
||||
| `cartoons` | 102 | 139.8 | ❌ |
|
||||
| `series-sonarr` | 57 | 116.1 | ✅ |
|
||||
| `cartoons-series` | 433 | 104.6 | ❌ |
|
||||
| `downloads` | 45 | 78.6 | ❌ staging |
|
||||
| `documentaries` | 25 | 71.9 | ❌ |
|
||||
| `series` | 6 | 3.6 | ❌ |
|
||||
|
||||
🔴 **Radarr/Sonarr индексируют только 252 ГБ из 1236** (21%). Остальные ~984 ГБ —
|
||||
ручные закачки, невидимые в UI стека.
|
||||
|
||||
### 🔴 `downloads/complete` — раздачи не удаляются после импорта
|
||||
|
||||
`downloads/complete/sonarr/` держит **завершённые раздачи, которые Sonarr уже
|
||||
скопировал в библиотеку и не убрал**. Дубли подтверждены совпадением имени файла
|
||||
И размера байт-в-байт:
|
||||
|
||||
```
|
||||
downloads/complete/sonarr/Очень странные дела.S03.WEB-DL.1080.HDR 21.33 ГБ -> series-sonarr S03
|
||||
downloads/complete/sonarr/Our.Flag.Means.Death.S01.2022... 19.31 ГБ -> series-sonarr S01
|
||||
downloads/complete/sonarr/Our.Flag.Means.Death.S02.WEBDL... 13.81 ГБ -> series-sonarr S02
|
||||
downloads/complete/sonarr/Stranger Things.s04.WEB-DL(HEVC)1080p.xz 13.06 ГБ -> series-sonarr S04
|
||||
downloads/complete/sonarr/Kiberderevnya.S01.2023.WEB-DL.1080p 11.11 ГБ -> The Cyberfarm S01
|
||||
```
|
||||
= **78.6 ГБ чистого дубля.** Sonarr настроен «копировать», а не «перемещать»
|
||||
(или `Remove Completed` выключен) — отсюда двойной расход.
|
||||
|
||||
⚠️ `Life.Is.Beautiful.1997.BDRip.1080p.mkv` (10.62 ГБ) лежит **трижды**:
|
||||
`movies-radarr/Life Is Beautiful (1997)/` + `cartoons/life is beautiful/` + ещё копия.
|
||||
Фильм в `cartoons` — ошибка раскладки, не случайность импорта.
|
||||
|
||||
### ⚠️ Ложный дубль: Stranger Things S03
|
||||
|
||||
`downloads/.../Очень странные дела.S03` и `series-sonarr/Stranger Things/Season 3`
|
||||
совпадают байт-в-байт, но в `series-sonarr` **нет S01** (только S02–S04) — библиотека
|
||||
формировалась из этой же раздачи. Перед удалением `downloads`-копии проверить,
|
||||
что Sonarr видит S03 как присутствующий.
|
||||
|
||||
### Метод: как группировать файлы в «позиции»
|
||||
|
||||
Плоский `find` даёт 802 строки — бесполезно. Группировка:
|
||||
|
||||
```python
|
||||
# movies / cartoons / documentaries — файлы в корне = каждая своя позиция
|
||||
# (иначе единственный «Вивариум» 1.46 ГБ склеивается в группу на 135 ГБ)
|
||||
if top in ("movies", "cartoons", "documentaries"):
|
||||
return (top, dirs[0]) if dirs else (top, r["file"])
|
||||
# downloads/complete/sonarr/<Pack Name>/... — по полному пути пака (сезонный пак)
|
||||
if top == "downloads" and len(dirs) >= 3 and dirs[0] == "complete":
|
||||
return (top, "/".join(dirs[:3]))
|
||||
# сериалы — первый подкаталог = шоу
|
||||
return (top, dirs[0]) if dirs else (top, r["file"])
|
||||
```
|
||||
|
||||
### 🔴 Матч с watchlist — только СТРОГОЕ равенство
|
||||
|
||||
Подстрочный матч (`c in e["name"]`) даёт мусор: короткие нормализованные строки
|
||||
вроде `гладиатор` совпадают со множеством позиций, счётчик «в watchlist» раздувается
|
||||
до неверного. Рабочее правило:
|
||||
|
||||
```python
|
||||
if c == e["n"] or (e["o"] and c == e["o"]): # точное равенство, len(c) >= 4
|
||||
```
|
||||
|
||||
Порядок эффекта: наивный подстрочный матч → 42 позиции / 811 ГБ «в watchlist»;
|
||||
строгий → 29 позиций / 456 ГБ. Разница — целиком ложные срабатывания.
|
||||
|
||||
**Нормализация** (обе стороны сравнения, обязательна): снять расширение → `[...]` → `(...)` →
|
||||
год → не-буквы → шум-слова (качество, релиз-группа, `web-dl`, `bdrip`, `x264`, `megapeer`,
|
||||
`bluebird`, `hdrezka`, транслит-хвосты) → сжать пробелы. Для сериалов дополнительно
|
||||
`strip_ep`: `S01E04`, `N серия`, `N выпуск`, `сезон N`.
|
||||
|
||||
🔴 **TMDB-ID в `watchlist.json` отдельным полем НЕ лежит.** Он в `href`:
|
||||
`https://www.themoviedb.org/movie/424781` → `re.search(r"/(\d{2,9})/?$", href)`.
|
||||
Попытка читать `item["tmdb_id"]` даёт `null` по всем 376 позициям.
|
||||
|
||||
### `missing.json` не пересекается с диском
|
||||
|
||||
Все 30 позиций из `missing.json` (маркер `❓`) — **рукописные заметки в списке**
|
||||
(`Солярис Тарковский`, `Идиот Бортко`, `Замок Балабанов`, `Спрут сериал`),
|
||||
а не скачанные файлы. Совпадений с диском — **0**.
|
||||
Вывод: «недоступно в Lampa» для файлов на Кра́кене вызывается **отсутствием в watchlist**,
|
||||
а не отсутствием в TMDB. Это разные причины, не смешивать.
|
||||
|
||||
### Где что лежит
|
||||
|
||||
```
|
||||
Диск: /srv/dev-disk-by-uuid-6194539b-03e0-4f33-986b-4da09834e82f/media/
|
||||
(49e8f586 — symlink на него; отдельного диска нет, проверено docker inspect)
|
||||
|
||||
Артефакты инвентаризации на Mac:
|
||||
/Users/admin/kraken-inventory.json — 233 позиции, полные поля
|
||||
/Users/admin/kraken-inventory.csv — таблица для Excel
|
||||
/Users/admin/kraken-dupes.json — 46 групп дублей
|
||||
/Users/admin/kraken-table-AB.md — markdown A/B таблицы
|
||||
```
|
||||
|
||||
Скрипты инвентаризации: `/tmp/kraken_inventory3.py` (финальный),
|
||||
`/tmp/kraken_final.py` (дубли + сводка), `/tmp/kraken_break.py` (разбор папки).
|
||||
|
||||
### Кандидаты на удаление (по риск-уровню)
|
||||
|
||||
1. **`downloads/complete` (78.6 ГБ)** — нулевой риск, всё есть в библиотеке.
|
||||
2. **Дубли `Life Is Beautiful`** — оставить одну из трёх копий.
|
||||
3. **`documentaries*` вне watchlist (307 ГБ)** — доксериалы, нужен просмотр глазами.
|
||||
4. **Всё не из watchlist (780 ГБ)** — включает `Oldboy`, `Project Hail Mary`, `F1`,
|
||||
`The Cyberfarm`, `Brassic` — возможно нужное.
|
||||
|
||||
## ⏳ Осталось добить (2026-09-22)
|
||||
|
||||
### 0. 🔴 Удаление медиа на Кра́кене — ждёт выбора Alex
|
||||
|
||||
Инвентаризация сделана: [[personal/plans/kraken-media-inventory-cleanup]].
|
||||
802 файла / 233 позиции / 1236 ГБ. Свободно 477 ГБ.
|
||||
|
||||
Предложены 3 варианта, ответа нет:
|
||||
1. Только `downloads/complete` — **78.6 ГБ**, нулевой риск (всё есть в библиотеке).
|
||||
2. + доксериалы вне watchlist — ~390 ГБ.
|
||||
3. Всё не из watchlist — 780 ГБ.
|
||||
|
||||
**Порядок действий при любом варианте:** дамп `radarr`/`sonarr` API в файл →
|
||||
удаление → проверка сырьём. Стект-директории (`movies-radarr`, `series-sonarr`)
|
||||
удалять только через API, иначе Radarr держит фантом.
|
||||
|
||||
### 1. 5 фильмов с Кинопоиск-ID — «здесь пусто», без постера
|
||||
|
||||
`film/12432920/`, `film/5454868/`, `film/11888712/`, `film/11825624/`, `film/8184798/`
|
||||
|
||||
@@ -45,6 +45,25 @@ related:
|
||||
10. 🔴 **`luna-send` по SSH печатает хелп вместо ответа** — обернуть в `script -q -c "..." /tmp/o.txt`.
|
||||
11. Фактический appId Lampa на ТВ — **`com.lampac.tv`** (не `org.lampa.tv` из запроса установки).
|
||||
|
||||
## Инвентаризация диска и удаление (добавлено 2026-09-22)
|
||||
|
||||
Полная таблица: [[personal/plans/kraken-media-inventory-cleanup]].
|
||||
|
||||
12. 🔴 **arr индексирует только 252 ГБ из 1236** (21%). Остальное — ручные закачки,
|
||||
невидимые в UI Radarr/Sonarr. «Нет в Radarr» ≠ «нет на диске».
|
||||
13. 🔴 **`downloads/complete/sonarr/` — завершённые раздачи, не удалённые после импорта.**
|
||||
Байт-в-байт дубли библиотеки = **78,6 ГБ зря**. Самый безопасный кандидат на снос.
|
||||
14. 🔴 **Матч с watchlist — только СТРОГОЕ равенство** нормализованных названий, `len >= 4`.
|
||||
Подстрочный матч раздувает счёт: 42 позиции / 811 ГБ вместо реальных 29 / 456 ГБ.
|
||||
15. 🔴 **В `watchlist.json` нет поля `tmdb_id`** — он в `href`
|
||||
(`.../movie/424781`), вынимать регексом `/(\d{2,9})/?$`.
|
||||
16. 🔴 **`missing.json` (30 позиций с `❓`) не пересекается с диском** — это рукописные
|
||||
заметки в списке. «Недоступно в Lampa» для файлов = **нет в watchlist**, не «нет в TMDB».
|
||||
17. Группировка 802 файлов: файлы в корне `movies`/`cartoons`/`documentaries` — каждая своя
|
||||
позиция (иначе «Вивариум» 1,46 ГБ склеивается в группу на 135 ГБ).
|
||||
18. Удаление только через API arr-стека; `deleteFiles=true` — проверять, что путь внутри
|
||||
библиотеки. Дамп API в файл перед операцией.
|
||||
|
||||
## Установка Lampa на ТВ (сжато)
|
||||
|
||||
```bash
|
||||
@@ -81,13 +100,16 @@ ssh kraken 'sudo rm -rf /srv/dev-disk-by-uuid-6194539b-03e0-4f33-986b-4da09834e8
|
||||
## Не закрыто
|
||||
|
||||
- Лимит кэша TorrServer — дефолт. Рекомендуется ~20 ГБ.
|
||||
- `init.conf` не смонтирован — правки через `docker exec` не переживают пересоздание контейнера.
|
||||
- 🔴 Удаление медиа на Кра́кене — ждёт выбора Alex (3 варианта в
|
||||
[[personal/plans/kraken-media-inventory-cleanup]], раздел «Что дальше»).
|
||||
- Шаг 7 — watchlist в UI Lampa: [[personal/plans/lampac-watchlist-plugin]].
|
||||
- Секции Watchlist внутри CUB-фида — инжект залит, приёмка в UI не подтверждена.
|
||||
|
||||
## Реальный скилл (файл)
|
||||
|
||||
`~/.hermes/hermes-whale/skills/devops/lampac-kraken-deploy/SKILL.md`
|
||||
|
||||
⚠️ **Скилл в файловой системе отстал от этой заметки** — в нём нет пунктов 9–11
|
||||
(установка Lampa на ТВ по SSH, питфолл `luna-send`+`script`, фактический appId `com.lampac.tv`).
|
||||
При следующей загрузке скилла — подтянуть из [[personal/tech/lampac-deployment]].
|
||||
✅ **Синхронизирован 2026-09-22 (вечер).** Пункты 9–11 (установка Lampa на ТВ по SSH,
|
||||
питфолл `luna-send`+`script`, appId `com.lampac.tv`) и новые 12–18 (инвентаризация диска,
|
||||
дубли `downloads/complete`, строгий матч с watchlist, `tmdb_id` в `href`) перенесены
|
||||
в файл скилла, включая раздел «Pillar: disk inventory & deletion candidates».
|
||||
Reference in new issue
Block a user