[2026-09-21] eagle: family/how-to/arr-stack-kraken.md family/plans/watchlist-cleanup.md family/plans/watchlist-disk-overflow-fix.md family/projects/watchlist-automation.md
This commit is contained in:
1 parent
c16cf199ce
commit
313df3409d
4 files changed
+309
-10
No files matched your search
@@ -599,9 +599,16 @@ GET /Users/{uid}/Items?IsPlayed=true&IncludeItemTypes=Movie&Fields=DatePlayed,Pa
|
||||
|
||||
- 46 фильмов в базе, **28 с файлами** (на 2026-09-20 было 18 — библиотека растёт, диск заполняется).
|
||||
- Топ по размеру: Babylon 98.8 GB, Schindler's List 95.9, Midsommar 91.9, Triangle of Sadness 85.6, Chaos Walking 62.7, Unhinged 60.9.
|
||||
- 🔴 **Диск `/dev/sda1` ЗАПОЛНЕН 100% (0 байт свободно), 2026-09-21.** Ранее (2026-09-21 утром) было 94.7%, `df` показывал 100%. **Radarr лежит с `disk I/O error`** — SQLite не может писать при нуле места:
|
||||
```bash
|
||||
curl -s "http://localhost:7878/radarr/api/v3/movie?apikey=$KEY"
|
||||
# → {"message":"disk I/O error","description":"...SQLiteException (0x87AF045D): disk I/O error..."}
|
||||
```
|
||||
⚠️ **API Radarr не читается, пока диск не освобождён** — не искать причину в конфиге/сети, сначала проверить место.
|
||||
**Причина заполнения:** `sync-down --batch 5` качал 5 фильмов ежедневно без проверки свободного места. `watchlist-nightly` и `watchlist-discover` **остановлены** 2026-09-21 (см. [[family/projects/watchlist-automation]]).
|
||||
**Виновники по объёму — 5 remux-файлов = 403.4 ГБ:** Babylon 92.0, Schindler's List 89.4, Midsommar 85.6, Triangle of Sadness 79.7, Unhinged 56.7 ГБ. Остальные 22 файла (WEB-DL/BDRip, 4–29 ГБ) — не remux, не трогать.
|
||||
- `recycleBin: ''` — **корзины нет, и настраивать её решено НЕ будет** (2026-09-21). `PUT config/mediamanagement` с путём хоста даёт `400 FolderWritableValidator: not writable by user 'abc'`: внутри контейнера Radarr медиа замаплено как `/media`, хостового пути `/srv/...6194539b.../media/.recyclebin` там не существует. Обходить маппингом ради корзины признано нецелесообразным — удаление идёт через Radarr API, а не `rm`. `recycleBinCleanupDays: 7`, `deleteEmptyFolders: False`.
|
||||
- **Все monitored=True.** Если удалить файл, не сняв monitored, Radarr скачает заново — поэтому `cleanup` делает `PUT monitored=false` **до** `DELETE` (порядок критичен).
|
||||
- 🔴 **Диск `/dev/sda1` заполнен на 94.7%** (4.8 ГБ свободно, `df` показывает 100%). Порог авто-удаления (90%) пройден, cron `watchlist-cleanup` работает ежедневно в 02:00 — но удалять пока нечего, см. ниже.
|
||||
|
||||
Проверка одним вызовом:
|
||||
```bash
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# План: авто-удаление просмотренного (watchlist cleanup)
|
||||
|
||||
**Дата:** 2026-09-20 (обновлено 2026-09-21)
|
||||
**Статус:** ✅ РЕАЛИЗОВАНО И В КРОНЕ. Корзина закрыта (без неё). Ждёт `[x]` на Radarr-фильмах
|
||||
**Связано:** [[watchlist-automation]], [[arr-stack-kraken]]
|
||||
**Статус:** ✅ РЕАЛИЗОВАНО И В КРОНЕ. Корзина закрыта (без неё). ⚠️ **Бесполезен сейчас: диск 100%, пересечение `[x]` ∩ Radarr = 0. Блокер — заполнение диска, см. [[family/plans/watchlist-disk-overflow-fix]]**
|
||||
**Связано:** [[watchlist-automation]], [[arr-stack-kraken]], [[watchlist-disk-overflow-fix]]
|
||||
|
||||
---
|
||||
|
||||
@@ -133,6 +133,39 @@ return used / total * 100.0
|
||||
```
|
||||
С веткой `--apply` при пороге 80: после прогона **18 файлов / 702 ГБ не тронуты** — удалять было нечего.
|
||||
|
||||
## 🔴🔴 2026-09-21 (вечер): ДИСК 100%, Radarr ЛЁГ — cleanup НИ ПРИ ЧЁМ
|
||||
|
||||
**Alex поправил ошибочный вывод:** cleanup **не мог занять место** — он только удаляет. Это очевидно,
|
||||
и первая версия разбора зря указывала на него.
|
||||
|
||||
**Настоящая причина заполнения — `sync-down`:** крон `watchlist-nightly` (01:00) добавлял
|
||||
**5 фильмов ежедневно** (`--batch 5`) **без проверки свободного места**. Radarr качал, пока диск не кончился.
|
||||
|
||||
**Состояние:**
|
||||
```
|
||||
df -h → /dev/sda1 1.8T 1.7T 0 100% ← 0 байт свободно
|
||||
Radarr API → {"message": "disk I/O error", ...SQLiteException...}
|
||||
```
|
||||
SQLite не может писать при нуле места → **API Radarr не читается**, метаданные недоступны.
|
||||
|
||||
**Виновники по объёму — 5 remux = 403.4 ГБ** (Babylon 92.0 / Schindler's List 89.4 / Midsommar 85.6 /
|
||||
Triangle of Sadness 79.7 / Unhinged 56.7). Остальные 22 файла — не remux (WEB-DL/BDRip), крупные,
|
||||
но кодированные.
|
||||
|
||||
**Сделано:** крон `watchlist-nightly` + `watchlist-discover` **остановлен** (бэкап `~/crontab-backup-20260921.txt`).
|
||||
`watchlist-cleanup` (02:00) **оставлен активным** — он безвреден.
|
||||
|
||||
**Ожидает апрува:** удаление 5 remux-файлов + снятие `⬇️` у Неистового.
|
||||
Полный план ремонта — [[family/plans/watchlist-disk-overflow-fix]].
|
||||
|
||||
### Что это меняет для cleanup
|
||||
|
||||
**Ничего в механике — но он по-прежнему бесполезен.** Пересечение `[x]` ∩ Radarr = 0,
|
||||
и он не покрывает `/media/movies`. Порог 90% он видит, но удалять ему нечего.
|
||||
Разбираться **после** того, как освободят место и поставят стоп-кран в `sync-down`.
|
||||
|
||||
---
|
||||
|
||||
## 🔴 ЗАМЕР 2026-09-21: порог ПРОЙДЕН, а удалять нечего
|
||||
|
||||
```
|
||||
|
||||
@@ -0,0 +1,165 @@
|
||||
---
|
||||
title: План — переполнение диска Kraken (watchlist pipeline)
|
||||
created: '2026-09-21'
|
||||
updated: '2026-09-21'
|
||||
type: plan
|
||||
namespace: family
|
||||
status: in-progress
|
||||
tags:
|
||||
- kraken
|
||||
- watchlist
|
||||
- disk
|
||||
- radarr
|
||||
- incident
|
||||
related:
|
||||
- '[[family/projects/watchlist-automation]]'
|
||||
- '[[family/plans/watchlist-cleanup]]'
|
||||
- '[[family/how-to/arr-stack-kraken]]'
|
||||
---
|
||||
|
||||
# План: переполнение диска Kraken — причины и ремонт
|
||||
|
||||
> **Инцидент 2026-09-21.** Диск `/dev/sda1` на Кра́кене (1.8 ТБ) заполнен до **нуля байт**.
|
||||
> Radarr лежит с `disk I/O error`. `watchlist-nightly` и `watchlist-discover` остановлены.
|
||||
> Причина: `sync-down --batch 5` качал 5 фильмов ежедневно **без проверки свободного места**.
|
||||
|
||||
---
|
||||
|
||||
## Статус: Фаза 0 ожидает апрува Alex
|
||||
|
||||
| Фаза | Что | Статус |
|
||||
|---|---|---|
|
||||
| 0 | Освободить место (удалить 5 remux = 403.4 ГБ) | 🔴 **ЖДЁТ АПРУВА** |
|
||||
| 0b | Снять `⬇️` у Неистового в watchlist | ⏸ после Фазы 0 |
|
||||
| 1 | `MIN_FREE_GB` в скрипт (стоп-кран) | ⏸ |
|
||||
| 2 | Лимит размера файла | ❌ **НЕ ДЕЛАЕМ** — Alex: «лимит качества и так настроен» |
|
||||
| 3 | Починить `cleanup` (видит только Radarr) | ⏸ отдельно |
|
||||
| 4 | Вернуть крон с меньшим `--batch` | ⏸ после Фазы 1 |
|
||||
|
||||
**Сделано 2026-09-21:** крон `watchlist-nightly` + `watchlist-discover` остановлен.
|
||||
Бэкап crontab: `~/crontab-backup-20260921.txt`.
|
||||
|
||||
---
|
||||
|
||||
## Фаза 0 — Освободить место (БЛОКЕР)
|
||||
|
||||
### Что удалять: 5 remux-файлов, 403.4 ГБ
|
||||
|
||||
Замер `find -printf` по `/media/movies-radarr` — 27 видеофайлов, **remux'ов ровно 5**:
|
||||
|
||||
```
|
||||
92.0 GB /media/movies-radarr/Babylon (2022)/Babylon (2022) - UHD BD-Remux by Wild_Cat.mkv
|
||||
89.4 GB /media/movies-radarr/Schindler's List (1993)/Schindler's.List.1993.2160p.HDR.BDRemux.mkv
|
||||
85.6 GB /media/movies-radarr/Midsommar (2019)/Midsommar.2019.DC.BDREMUX.2160p.HDR.seleZen.mkv
|
||||
79.7 GB /media/movies-radarr/Triangle of Sadness (2022)/Triangle.of.Sadness.2022.BDREMUX.2160p.HDR.seleZen.mkv
|
||||
56.7 GB /media/movies-radarr/Unhinged (2020)/Неистовый.2020.UHD.Blu-Ray.Remux.2160p.mkv
|
||||
```
|
||||
|
||||
Полный префикс пути: `/srv/dev-disk-by-uuid-6194539b-03e0-4f33-986b-4da09834e82f`.
|
||||
|
||||
### ⚠️ Что НЕ трогать
|
||||
|
||||
**22 остальных файла — не remux** (WEB-DL / BDRip / x264 / x265, 4–29 ГБ). Размер не признак:
|
||||
| Файл | Размер | Тип |
|
||||
|---|---|---|
|
||||
| `Oldboy (2003)/Oldeuboi [2003].mkv` | 28.6 GB | не remux |
|
||||
| `Project.Hail.Mary...2160p.iT.WEB-DL.DV.HDR.H.265.mkv` | 28.1 GB | не remux (WEB-DL) |
|
||||
| `Whiplash (2014)/Одержимость (Whiplash) 2014.mkv` | 23.7 GB | не remux |
|
||||
|
||||
**Признак remux — имя файла:** `Remux` / `BDREMUX` / `BDRemux` / `BD-Remux`.
|
||||
|
||||
### 🔴 Метки `⬇️` в watchlist — есть только у одного из пяти
|
||||
|
||||
`family/documents/movies-watchlist.md`:
|
||||
|
||||
| Фильм | Строка | Метка |
|
||||
|---|---|---|
|
||||
| Неистовый (Unhinged) | 107: `- [x] ⬇️ Неистовый` | ✅ |
|
||||
| Babylon (2022) | 83: `- [ ] Babylon (2022)` | ❌ |
|
||||
| Midsommar | 81: `- [ ] 🧟♀️ midsommar 2019` | ❌ |
|
||||
| Triangle of Sadness | 82: `- [ ] Triangle of Sadness 2022` | ❌ |
|
||||
| Schindler's List | — | **отсутствует в файле** |
|
||||
|
||||
`sync-down` ставит `⬇️` только на то, что добавил сам. Эти четыре попали в Radarr иначе.
|
||||
|
||||
**Решение Alex:** снять `⬇️` (там, где есть). `[x]` у Неистового **не трогать** — это отметка просмотра.
|
||||
|
||||
### Почему удаляем файлами, а не через Radarr API
|
||||
|
||||
Radarr **не отвечает** — диск в нуле, SQLite не может писать:
|
||||
```json
|
||||
{"message": "disk I/O error",
|
||||
"description": "...System.Data.SQLite.SQLiteException (0x87AF045D): disk I/O error..."}
|
||||
```
|
||||
После освобождения места Radarr сам пересканирует и увидит `hasFile=false`.
|
||||
|
||||
---
|
||||
|
||||
## Фаза 1 — Стоп-кран `MIN_FREE_GB` (главный фикс)
|
||||
|
||||
**Цель:** перед добавлением фильма в Radarr проверить свободное место. Если мало — не добавлять.
|
||||
|
||||
**Где:** `watchlist_sync/sync_down.py` (или `cli.py` — уточнить по коду перед правкой).
|
||||
|
||||
```python
|
||||
# Minimum free space on the media disk before queueing new downloads.
|
||||
# Prevents filling the disk to zero (incident 2026-09-21).
|
||||
MIN_FREE_GB = 100 # ← значение согласовать с Alex
|
||||
```
|
||||
|
||||
Проверка **перед** циклом добавления:
|
||||
```python
|
||||
st = os.statvfs(MEDIA_PATH) # НЕ shutil.disk_usage("/media")!
|
||||
free_gb = (st.f_bfree * st.f_frsize) / (1024**3)
|
||||
if free_gb < MIN_FREE_GB:
|
||||
print(f"only {free_gb:.1f} GB free (< {MIN_FREE_GB} GB) — not queueing anything")
|
||||
return
|
||||
```
|
||||
|
||||
⚠️ **Питфолл:** `/media` — **не медиа-диск**, это пустая папка на SD-карте (`/dev/mmcblk0p2`, 14 ГБ). Реальный диск — `/srv/dev-disk-by-uuid-6194539b-.../`. Брать `os.statvfs` по реальному корню.
|
||||
⚠️ **`df` завышает** (~+4%, root-резерв ext4). Для порогов использовать `os.statvfs`.
|
||||
|
||||
**Порядок работ:** бэкап → правка → dry-run → проверка Alex → коммит.
|
||||
|
||||
---
|
||||
|
||||
## Фаза 2 — Лимит размера ❌ НЕ ДЕЛАЕМ
|
||||
|
||||
Alex 2026-09-21: **«лимит качества и так настроен»**. Профиль `WEB-4K (no remux)` (Radarr/Sonarr id **7**) уже запрещает Remux-1080p/2160p и BR-DISK. Новых лимитов не вводим.
|
||||
|
||||
⚠️ Но: профиль **не ограничивает размер** — только тип релиза. Все 5 виновников качались под профилем `Any` (id 1) **до фикса 2026-09-04**. Существующие файлы под новый профиль не подпадают.
|
||||
|
||||
---
|
||||
|
||||
## Фаза 3 — Починить `cleanup` (отдельно, осторожно)
|
||||
|
||||
**Дефект:** cleanup сопоставляет `[x]` из watchlist с **Radarr-библиотекой**, а просмотренное лежит в `/media/movies` (ручные торренты). Пересечение = 0 → удаляет 0 файлов.
|
||||
|
||||
**Замер 2026-09-21:** `watchlist [x] items: 177` / `radarr movies with file: 28` / `nothing to delete`.
|
||||
|
||||
**Это не причина инцидента** — cleanup не мог занять место, он только удаляет. Расширять его — отдельная задача, идёт после Фаз 0–1.
|
||||
|
||||
---
|
||||
|
||||
## Фаза 4 — Вернуть крон
|
||||
|
||||
После того как Фаза 1 проверена и стоп-кран работает:
|
||||
- вернуть строки `watchlist-nightly` (01:00) и `watchlist-discover` (вс 09:00) в crontab;
|
||||
- **снизить `--batch`** (сейчас 5) — 5 фильмов/сутки без учёта размера и есть корень инцидента.
|
||||
|
||||
---
|
||||
|
||||
## Уроки
|
||||
|
||||
1. **Любой скрипт, ставящий закачки в очередь, ОБЯЗАН проверять свободное место до добавления.** Лимита качества недостаточно — он про тип релиза, не про размер.
|
||||
2. **«Radarr молчит / I/O error» на заполненном диске — сначала проверить место**, потом конфиг и сеть.
|
||||
3. **Крон в 01:00 без присмотра = диск заполняется незаметно.** Тревога при >порога не настроена: cleanup писал «nothing to delete» и молчал.
|
||||
4. **Не выдавать догадки за факт.** Первая версия разбора указывала на `cleanup` как виновника — Alex поправил: cleanup удаляет, а не занимает. Виновник — `sync-down`.
|
||||
|
||||
---
|
||||
|
||||
## Связанные заметки
|
||||
|
||||
- [[family/projects/watchlist-automation]] — полный pipeline, статус крона
|
||||
- [[family/plans/watchlist-cleanup]] — механизм cleanup (порог 90%, лимит 10)
|
||||
- [[family/how-to/arr-stack-kraken]] — *arr стек, профили качества, API
|
||||
@@ -475,15 +475,105 @@ Sonarr API base: http://localhost:8989/sonarr/api/v3/
|
||||
```
|
||||
Проверка закачки: `queue` в Radarr показывает `grabbed/downloading`; `history` даёт точное имя взятого релиза. Transmission — `docker exec transmission transmission-remote --list` (RPC-юзер в `settings.json` пустой).
|
||||
|
||||
## 🔴 2026-09-21: ДИСК ЗАПОЛНЕН 100%, КРОН `nightly`/`discover` ОСТАНОВЛЕН
|
||||
|
||||
**Причина остановки:** `sync-down --batch 5` (5 фильмов ежедневно) работал **без проверки свободного места**. Диск заполнился до **нуля байт**.
|
||||
|
||||
### Признак «сервисы ломаются» — Radarr отдаёт disk I/O error
|
||||
|
||||
```bash
|
||||
curl -s "http://localhost:7878/radarr/api/v3/movie?apikey=$KEY"
|
||||
# → {"message": "disk I/O error\ndisk I/O error",
|
||||
# "description": "...System.Data.SQLite.SQLiteException (0x87AF045D): disk I/O error..."}
|
||||
```
|
||||
SQLite не может писать при нуле свободного места. **Метаданные Radarr через API не читаются, пока диск не освобождён.** Это первое, что надо проверять при «Radarr молчит» на заполненном диске.
|
||||
|
||||
### Фактическое заполнение (2026-09-21)
|
||||
|
||||
```
|
||||
df -h → /dev/sda1 1.8T 1.7T 0 100% /srv/dev-disk-by-uuid-6194539b-...
|
||||
df -h → /dev/mmcblk0p2 14G 4.7G 8.4G 36% / (SD-карта, не медиа-диск)
|
||||
```
|
||||
Docker: 29.4.3, Debian 12 bookworm, **arch `aarch64`**, 25 контейнеров, 22 образа.
|
||||
|
||||
### Что именно съело место — 5 REMUX-файлов = 403.4 ГБ
|
||||
|
||||
Замер `find -printf` по `/media/movies-radarr` (27 видеофайлов). **Настоящих remux'ов ровно 5** — по имени файла (`Remux`/`BDREMUX`/`BDRemux`):
|
||||
|
||||
| Размер | Фильм | Файл |
|
||||
|---|---|---|
|
||||
| 92.0 GB | Babylon (2022) | `Babylon (2022) - UHD BD-Remux by Wild_Cat.mkv` |
|
||||
| 89.4 GB | Schindler's List (1993) | `Schindler's.List.1993.2160p.HDR.BDRemux.mkv` |
|
||||
| 85.6 GB | Midsommar (2019) | `Midsommar.2019.DC.BDREMUX.2160p.HDR.seleZen.mkv` |
|
||||
| 79.7 GB | Triangle of Sadness (2022) | `Triangle.of.Sadness.2022.BDREMUX.2160p.HDR.seleZen.mkv` |
|
||||
| 56.7 GB | Unhinged (2020) | `Неистовый.2020.UHD.Blu-Ray.Remux.2160p.mkv` |
|
||||
| **403.4 GB** | **итого** | |
|
||||
|
||||
⚠️ **Остальные 22 файла — НЕ remux** (WEB-DL / BDRip / x264 / x265, 4–29 ГБ). Крупные, но кодированные — не трогать. Например `Oldboy (2003)/Oldeuboi [2003].mkv` 28.6 ГБ и `Project.Hail.Mary...2160p.iT.WEB-DL.DV.HDR.H.265.mkv` 28.1 ГБ — **не remux**, несмотря на размер.
|
||||
|
||||
**Корень:** захардкоженный `qualityProfileId: 1` (профиль `Any`) в `arr.py` — починен только 2026-09-04. Всё, что качалось до этого, брало remux'ы по 60–98 ГБ.
|
||||
|
||||
### 🔴 Метки `⬇️` на 4 из 5 remux'ов В watchlist НЕТ
|
||||
|
||||
Проверено грепом по `family/documents/movies-watchlist.md`:
|
||||
|
||||
| Фильм | Строка в watchlist | Метка |
|
||||
|---|---|---|
|
||||
| Неистовый (Unhinged) | **107**: `- [x] ⬇️ Неистовый` | ✅ есть (и `[x]`) |
|
||||
| Babylon (2022) | **83**: `- [ ] Babylon (2022)` | ❌ нет |
|
||||
| Midsommar | **81**: `- [ ] 🧟♀️ midsommar 2019` | ❌ нет |
|
||||
| Triangle of Sadness | **82**: `- [ ] Triangle of Sadness 2022` | ❌ нет |
|
||||
| Schindler's List | **не найден в файле** | ❌ нет |
|
||||
|
||||
**Вывод:** `sync-down` помечает `⬇️` только то, что добавил сам. Эти 4 попали в Radarr другим путём (вручную / до появления меток). Снимать метку не с чего — кроме Неистового.
|
||||
|
||||
### Порядок работ, согласованный с Alex
|
||||
|
||||
1. **Удалить 5 remux-файлов** (403.4 ГБ) → диск оживает → Radarr API заработает.
|
||||
2. **Снять `⬇️` у Неистового** (строка 107). `[x]` — **не трогать** (это отметка просмотра).
|
||||
3. **Добавить `MIN_FREE_GB` в скрипт** — стоп-кран перед добавлением в Radarr.
|
||||
4. ⚠️ Лимит качества Alex считает уже настроенным (`WEB-4K (no remux)`, id 7) — **новый лимит не делаем**.
|
||||
|
||||
⚠️ Удаление **напрямую файлами**, не через Radarr API — API лежит на заполненном диске. Radarr пересканирует и увидит `hasFile=false`.
|
||||
|
||||
### Остановка крона (сделано 2026-09-21)
|
||||
|
||||
```bash
|
||||
crontab -l > ~/crontab-backup-$(date +%Y%m%d-%H%M%S).txt # бэкап ПЕРЕД
|
||||
crontab -l | grep -v "watchlist-nightly\|watchlist-discover" > /tmp/crontab-new.txt
|
||||
crontab /tmp/crontab-new.txt
|
||||
crontab -l | grep -c "watchlist-nightly\|watchlist-discover" # → 0 (проверка)
|
||||
```
|
||||
Бэкап: `~/crontab-backup-20260921.txt`.
|
||||
**Осталось в кроне:** `sync-vault` (часовой), 2× `pgs-to-srt`, `watchlist-cleanup` (02:00).
|
||||
**Убрано:** `watchlist-nightly` (01:00), `watchlist-discover` (вс 09:00).
|
||||
|
||||
### 🔴 Незакрытые дефекты скрипта (моя ответственность)
|
||||
|
||||
| # | Дефект | Следствие |
|
||||
|---|---|---|
|
||||
| 1 | Нет проверки свободного места перед `sync-down` | Radarr качает, пока диск не кончится |
|
||||
| 2 | Нет лимита размера файла | Один фильм = 60–100 ГБ |
|
||||
| 3 | Нет стоп-крана при заполнении > порога | Нет автоматической остановки |
|
||||
| 4 | `cleanup` не видит `/media/movies` | Просмотренное не удаляется, диск не освобождается |
|
||||
|
||||
**План ремонта (согласован):** сначала Фаза 1 — `MIN_FREE_GB` в скрипт (главный фикс), потом возврат крона с меньшим `--batch`. Cleanup — отдельно.
|
||||
|
||||
**Правило на будущее:** любой скрипт, ставящий закачки в очередь, ОБЯЗАН проверять свободное место **до** добавления. Лимита качества недостаточно — он ограничивает тип релиза, но не размер.
|
||||
|
||||
---
|
||||
|
||||
## 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` |
|
||||
> ⚠️ **С 2026-09-21 `watchlist-nightly` и `watchlist-discover` ОСТАНОВЛЕНЫ** (диск 100%, см. секцию выше). Таблица ниже — целевое состояние; фактически активен только `watchlist-cleanup`.
|
||||
|
||||
| Job | Расписание | Скрипт | Факт 2026-09-21 |
|
||||
|-----|-----------|--------|-----------------|
|
||||
| `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`.
|
||||
|
||||
@@ -601,8 +691,12 @@ Jellyfin library mapping: Movies → `movies`, Cartoons → `mixed` (movies + ep
|
||||
- 🟡 **[2026-09-20] Логи крона в `/tmp/`** — теряются при перезагрузке. Перенести в постоянное место (`~/logs/` или на диск), если нужна история прогонов.
|
||||
- ✅ **[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-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-21] ДИСК ЗАПОЛНЕН 100% (0 байт свободно). `nightly` + `discover` ОСТАНОВЛЕНЫ.** Работал `sync-down --batch 5` ежедневно без проверки места. Radarr лёг с `disk I/O error` (SQLite не может писать). Полный разбор — в секции «🔴 2026-09-21: ДИСК ЗАПОЛНЕН 100%» выше. Бэкап crontab: `~/crontab-backup-20260921.txt`.
|
||||
- 🔴 **[2026-09-21] ЖДЁТ АПРУВА ALEX: удаление 5 remux-файлов = 403.4 ГБ.** Babylon 92.0 / Schindler's List 89.4 / Midsommar 85.6 / Triangle of Sadness 79.7 / Unhinged 56.7 ГБ. Удалять **файлами напрямую** (Radarr API лежит). Затем снять `⬇️` у Неистового (строка 107), `[x]` не трогать. ⚠️ У 4 из 5 метки `⬇️` в watchlist нет; Schindler's List в файле отсутствует вовсе.
|
||||
- 🔴 **[2026-09-21] ФАЗА 1 РЕМОНТА: добавить `MIN_FREE_GB` в `sync-down`.** Стоп-кран: если свободно < порога — не добавлять в Radarr. **Главный фикс**, без него возврат крона бессмыслен. Лимит качества Alex считает уже настроенным — **новый не делать**.
|
||||
- 🔴 **[2026-09-21] КОРЕНЬ: `[x]` не проставляется на новые закачки.** `sync-up` (Jellyfin watched → `[x]`) видит только 6 старых фильмов из `/media/movies`, ни одного из `/media/movies-radarr`. Пока это не починено, cleanup бесполезен, а диск будет заполняться.
|
||||
- 🔴 **[2026-09-21] ДИСК КРИТИЧЕН: 94.7% / свободно 4.8 ГБ (замер до полного заполнения).** Порог 90% пройден, cleanup реально запускается, но **удаляет 0 файлов**: пересечение `[x]` ∩ Radarr-библиотека = **пусто** (177 просмотренных vs 28 фильмов с файлами).
|
||||
- 🟡 **[2026-09-21] Cleanup не видит `/media/movies`** — смотрит только Radarr-библиотеку, поэтому просмотренное из папки ручных торрентов не удаляется. Расширять — отдельно и осторожно (удаление файлов).
|
||||
- 🟡 **[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