[2026-09-21] eagle: family/how-to/arr-stack-kraken.md family/plans/watchlist-cleanup.md family/projects/watchlist-automation.md
This commit is contained in:
1 parent
56f6b46b19
commit
a9a638c645
3 files changed
+27
-15
No files matched your search
@@ -1,6 +1,6 @@
|
||||
---
|
||||
created: '2026-05-20'
|
||||
updated: '2026-09-20'
|
||||
updated: '2026-09-21'
|
||||
status: active
|
||||
tags:
|
||||
- kraken
|
||||
@@ -475,17 +475,22 @@ Sonarr API base: http://localhost:8989/sonarr/api/v3/
|
||||
```
|
||||
Проверка закачки: `queue` в Radarr показывает `grabbed/downloading`; `history` даёт точное имя взятого релиза. Transmission — `docker exec transmission transmission-remote --list` (RPC-юзер в `settings.json` пустой).
|
||||
|
||||
## Cron Jobs (на Кракене, восстановлены 2026-09-20)
|
||||
## Cron Jobs (на Кракене, восстановлены 2026-09-20, дополнены 2026-09-21)
|
||||
|
||||
Весь watchlist pipeline работает на Кракене (мигрировал с Eagle 2026-05-27). **Крон был мёртв с 2026-06-20 по 2026-09-20, восстановлен** (детали в начале документа).
|
||||
|
||||
| Job | Расписание | Скрипт |
|
||||
|-----|-----------|--------|
|
||||
| `watchlist-nightly` | ежедн. 01:00 | `~/scripts/watchlist-nightly.sh` |
|
||||
| `watchlist-cleanup` | ежедн. 02:00 | `~/scripts/watchlist-cleanup.sh --apply` |
|
||||
| `watchlist-discover` | вс 09:00 | `~/scripts/watchlist-discover.sh` |
|
||||
|
||||
⚠️ Фактический путь — `~/scripts/`, **не** `~/.hermes/scripts/`. Оба скрипта вызывают CLI напрямую через `uv run --project $WS`, без LLM. `uv` лежит в `~/.local/bin/uv`.
|
||||
|
||||
⚠️ **`~/scripts/` — root:root 755.** Добавить/заменить скрипт можно только `sudo install -m 755` (у kraken `sudo` без пароля). Обычная запись (`>`, `cp`) откажет с `Permission denied`.
|
||||
|
||||
⚠️ **`watchlist-cleanup.sh` без аргумента = dry-run.** В кроне обязателен `--apply`, иначе удаление не произойдёт и лог будет писать «nothing to delete». Это самая тихая из возможных поломок — проверять флаг при любой правке крона.
|
||||
|
||||
`WS` в обоих скриптах: `/srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/watchlist-sync` — **другой UUID**, чем фактический корень репо (см. ниже). Возможный источник поломки: проверить, что путь резолвится.
|
||||
|
||||
**watchlist-nightly.sh** (на Кракене):
|
||||
@@ -594,10 +599,10 @@ Jellyfin library mapping: Movies → `movies`, Cartoons → `mixed` (movies + ep
|
||||
- ✅ **[2026-09-20] Реальный прогон с новой логикой выполнен** — 19:53, `Done`, +3 фильма. Батч по порядку файла, ⭐ первым.
|
||||
- ✅ **[2026-09-20] Крон ВОССТАНОВЛЕН** — установлен 21:21 в crontab юзера `kraken`, бэкап `~/crontab-backup-20260920-212155.txt`. `nightly` 01:00 + `discover` вс 09:00, логи в `/tmp/`. Первая проверка в бою — прогон в 01:00.
|
||||
- 🟡 **[2026-09-20] Логи крона в `/tmp/`** — теряются при перезагрузке. Перенести в постоянное место (`~/logs/` или на диск), если нужна история прогонов.
|
||||
- 🟡 **[2026-09-20] Удаление просмотренных фильмов при заполнении диска >90%** — механизм **РЕАЛИЗОВАН** (коммит `aafbaf7`, команда `cleanup`, dry-run проверен), но **застрял на настройке корзины Radarr**. См. [[family/plans/watchlist-cleanup]]. Замер 2026-09-20: диск **83.7%** (не 88% — `df` считает с root-резервом), кандидатов на удаление **0**. Jellyfin **не отдаёт `DatePlayed`** (`None` у всех) — логика построена без опоры на дату. Не в cron, пока Alex не посмотрит dry-run.
|
||||
- ✅ **[2026-09-21] Удаление просмотренных фильмов при заполнении диска >90% — ЗАКРЫТО И В КРОНЕ.** Обёртка `~/scripts/watchlist-cleanup.sh` (была в `/tmp` — перенесена через `sudo install`, у kraken sudo **без пароля**), cron `0 2 * * * ... --apply`, лог `/home/kraken/logs/watchlist-cleanup.log`. **Корзина Radarr (`recycleBin`) — решено НЕ настраивать** (контейнерный/хостовый пути расходятся; Alex больше не переспрашивать). Обёртка по умолчанию делает **dry-run** — без `--apply` в кроне был бы вечный холостой ход. Полные детали — [[family/plans/watchlist-cleanup]].
|
||||
⚠️ Питфолл: `/media` — **не медиа-диск**, а пустая папка на SD-карте (`/dev/mmcblk0p2`), отдаёт 33.9%. Реальный диск `/dev/sda1` в `/srv/dev-disk-by-uuid-6194539b-.../`. Использовать `os.statvfs`, не `shutil.disk_usage("/media")`.
|
||||
- 🟡 **[2026-09-20] Корзина Radarr `recycleBin` не настраивается** — `PUT /api/v3/config/mediamanagement` → `400 FolderWritableValidator: not writable by user 'abc'`. Причина: внутри контейнера путь хоста не существует (Radarr видит `/media`). Нужна проверка `docker inspect radarr` mounts. Проверка **не выполнена** — апрув истёк.
|
||||
- 🟡 **[2026-09-20] Обёртка `watchlist-cleanup.sh` не установлена в `~/scripts/`** — директория `root:root 755`, писать нельзя. Нужен `sudo install -m 755`. Протестирована из `/tmp/`.
|
||||
- 🔴 **[2026-09-21] ДИСК КРИТИЧЕН: 94.7% / свободно 4.8 ГБ.** Порог 90% пройден, cleanup реально запускается, но **удаляет 0 файлов**: пересечение `[x]` ∩ Radarr-библиотека = **пусто** (177 просмотренных vs 28 фильмов с файлами). Ждёт, пока в watchlist поставят `[x]` на Radarr-фильмы. Топ-кандидаты: Babylon 98.8 ГБ, Schindler's List 95.9, Midsommar 91.9, Triangle of Sadness 85.6.
|
||||
- 🔴 **[2026-09-21] КОРЕНЬ: `[x]` не проставляется на новые закачки.** `sync-up` (Jellyfin watched → `[x]`) видит только 6 старых фильмов из `/media/movies`, ни одного из `/media/movies-radarr`. Пока это не починено, cleanup бесполезен, а диск будет заполняться. **Главная незакрытая задача всего pipeline.**
|
||||
- 🟡 **[2026-09-20] `sync-down` берёт всего 5 за прогон** — при 250 кандидатах разбор очереди займёт ~50 ночей. Рассмотреть увеличение `--batch` (сейчас `--batch 5` в `watchlist-nightly.sh`). Особенно актуально, раз фильтр `<6.0` уже отсеял 18.
|
||||
- 🟡 **[2026-09-20] Разобрать 5 застрявших закачек в очереди Radarr** со статусом `warning`: `Brokeback Mountain`, `Мортал Комбат 2`, `Sorry to Bother You`, `Город бога`, `День хомячка`. Висят давно, релиз не находится/не качается.
|
||||
- 🟡 **[2026-09-20] `Oficina do Diabo` / `Мастерская Сатаны` (2025)** — в Radarr, но релиз не найден. Ждёт RSS. Проверить через несколько дней.
|
||||
|
||||
Reference in new issue
Block a user