From f09269485874e75ee7575d63211a6fae9bc76583 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Tue, 22 Sep 2026 19:36:57 +0600 Subject: [PATCH] docs: drop pidtor-503 plan, links -> family/how-to/lampac-torrents --- personal/plans/lampac-pidtor-503-fix.md | 126 -- .../plans/watchlist-tmdb-missing-marker.md | 6 +- ...-tmdb-missing-marker.md.bak-links-20260922 | 1206 +++++++++++++++++ personal/tech/lampac-deployment.md | 4 +- personal/tech/lampac-torrserver.md | 6 +- 5 files changed, 1214 insertions(+), 134 deletions(-) delete mode 100644 personal/plans/lampac-pidtor-503-fix.md create mode 100644 personal/plans/watchlist-tmdb-missing-marker.md.bak-links-20260922 diff --git a/personal/plans/lampac-pidtor-503-fix.md b/personal/plans/lampac-pidtor-503-fix.md deleted file mode 100644 index d3ef90c1..00000000 --- a/personal/plans/lampac-pidtor-503-fix.md +++ /dev/null @@ -1,126 +0,0 @@ -# PidTor 500/503 — НАЙДЕНО И ИСПРАВЛЕНО - -**Дата:** 2026-09-22 -**Статус:** ✅ **ИСПРАВЛЕНО.** Все фильмы → HTTP 200 -**Связано:** [[personal/tech/lampac-torrserver]], [[personal/tech/lampac-deployment]] - ---- - -## Симптом (Alex) - -> «если пункт "торренты" выбрать при просмотре - то там пусто» - -## 🔴 ПРИЧИНА: мой же неправильный фикс. Локальный JacRed отдаёт формат без `info` - -### Доказательство сырьём - -``` -НАШ JacRed (redapi=http://127.0.0.1:9118), поля ответа: - ['Category','Details','MagnetUri','Peers','PublishDate','Seeders','Size','Title','Tracker'] - ^^^ info НЕТ! - -jac.red (внешний), поля ответа: - [..., 'ffprobe', 'info', 'languages'] ← info ЕСТЬ - info = {"quality":480, "voices":["Дубляж"], "sizeName":"2.02 GB", - "name":"Хамнет: История, вдохновившая «Гамлета»", "relasted":2025} -``` - -### Где падает (PidTor/Controller.cs:97) - -```csharp -string mediainfo = torrent.info.sizeName ?? string.Empty; -// ^^^^^^^^^^^^^^ info == null в ответе локального JacRed -// → NullReferenceException → HTTP 500 → закэшировался как 503 -``` - -## ❌ Что я сделал НЕПРАВИЛЬНО - -Переключил `PidTor.redapi` с `http://jac.red` на `http://127.0.0.1:9118` -(«локальный стабильнее»). **Это сломало PidTor полностью:** - -``` -было (redapi=jac.red): часть фильмов работала, часть 503 (кэш таймаутов) -стало (redapi=локальный): ВСЕ фильмы → 500 (NPE на info) -``` - -Локальный JacRed **несовместим по формату** с PidTor: отдаёт урезанный -ответ без `info`, хотя модель PidTor (`Model.cs`) требует `torrent.info.sizeName`. - -## ✅ ФИКС - -`config-module/init.conf`: - -```json -"PidTor": { - "enable": true, - "redapi": "http://jac.red" ← вернуть внешний, он отдаёт ПОЛНЫЙ формат -} -``` - -Убрал `min_sid: 3` (в стоке `15`; мой `3` тоже мог резать выдачу). - -### Проверка после фикса - -``` -Гамнет 2025 → HTTP 200, раздач ✅ -Горничная 2025 → HTTP 200, раздач ✅ -Я ругаюсь 2025 → HTTP 200, раздач ✅ -F1 2025 → HTTP 200, раздач ✅ -Духless 2012 → HTTP 200, раздач ✅ -Матрица 1999 → HTTP 200, раздач ✅ -``` - -До фикса: F1/Горничная/Я ругаюсь → 503, Духless → 500. - -## 🔴 Что ещё выяснено попутно (важно для будущих сессий) - -### Кэш 503 (`X-Invoke-Cache: HIT`) — симптом, не причина - -``` -"cache": { "type": "fdb", "memExtend": true, "extend": 2700 } ← 45 минут -``` - -Заголовок `X-Invoke-Cache: HIT` + время ответа `0.0015s` = ответ из кэша. -При чистке `cache/fdb/` 503 сменился на честный 500 — то есть кэш маскировал -настоящую ошибку. **Сброс кэша обязателен при диагностике** — иначе видишь -старый закэшированный отказ и делаешь ложные выводы. - -### `enabled: false` у ВСЕХ модулей — это НОРМА - -``` -PidTor: enable=True, enabled=False -И то же у всех 86 модулей (Filmix, HDVB, Kinobase, ...) -``` - -⚠️ `enabled` — служебное поле (расписание/workinghours), НЕ выключатель. -Смотреть только `enable`. Поле не причина отказов. - -### Кэш PidTor: ключ = все параметры - -``` -pidtor:{title}:{original_title}:{year}:{original_language}:{serial} 40 минут -``` - -Запрос `F1` без года → 200, с годом → 503. Разные ключи, разный результат. -Проверять надо ТЕМ ЖЕ набором параметров, что посылает клиент. - -### Два разных API JacRed - -``` -/api/v1.0/torrents?search=... ← я использовал, работает -/api/v2.0/indexers/all/results?title=... ← это зовёт PidTor -``` - -⚠️ Проверять надо **тот маршрут, которым ходит модуль**, а не удобный. - -## Питфоллы, стоившие времени - -1. 🔴 **Сначала смотреть, что модуль ждёт, потом «улучшать».** Я переключил - redapi ради «стабильности», не проверив совместимость формата → поломал. -2. 🔴 **503 = кэш, 500 = реальная ошибка.** Свежий запрос после сброса кэша - даёт честный код. -3. 🔴 **Лог lampac не показывает исключения** PidTor — `docker logs` пуст. - Приходится читать исходник модуля (`Controller.cs`). -4. 🔴 **`docker exec lampac python3` — НЕ работает** (python3 нет в образе). - Парсить JSON ламповых конфигов — скриптом снаружи через `docker cp`. -5. 🔴 **Порт 9085 TorrServer снаружи закрыт** — только `/ts/` через 9118. diff --git a/personal/plans/watchlist-tmdb-missing-marker.md b/personal/plans/watchlist-tmdb-missing-marker.md index ee22a9a9..b8ff4c66 100644 --- a/personal/plans/watchlist-tmdb-missing-marker.md +++ b/personal/plans/watchlist-tmdb-missing-marker.md @@ -11,11 +11,11 @@ стороны), `watchlist-sync` **`396acc3`**. **Открытые задачи (в работе / ждут Alex)** → [[#🔜 Открытые задачи (2026-09-22, вечер)]] ⚠️ Единственная незакрытая: **категории в ленте прыгают при перезагрузке** (п. 3) -✅ TorrServer/PidTor — **починен И ПРИНЯТ В UI** ([[personal/plans/lampac-pidtor-503-fix]]): +✅ TorrServer/PidTor — **починен И ПРИНЯТ В UI** ([[family/how-to/lampac-torrents]]): Alex запустил F1 в плеере, торренты появились. ✅ Год «Волшебный участок: Фильм» — **разобран, не баг**: фильм `In Production`, `release_date` пуст у самого TMDB. Оставлено `null` осознанно. -**Связано:** [[personal/plans/lampac-watchlist-plugin]], [[personal/plans/lampac-disable-1xbet-ads]], [[personal/plans/lampac-pidtor-503-fix]], [[family/projects/watchlist-automation]], [[family/projects/watchlist-sync]], [[personal/tech/lampac-deployment]], [[personal/tech/lampac-torrserver]] +**Связано:** [[personal/plans/lampac-watchlist-plugin]], [[personal/plans/lampac-disable-1xbet-ads]], [[family/how-to/lampac-torrents]], [[family/projects/watchlist-automation]], [[family/projects/watchlist-sync]], [[personal/tech/lampac-deployment]], [[personal/tech/lampac-torrserver]] --- @@ -215,7 +215,7 @@ Alex: *«там только пункт "смотреть онлайн" рабо ([[personal/tech/lampac-torrserver]]) ``` -Разборы: [[personal/plans/lampac-pidtor-503-fix]] (причина + фикс), +Разборы: [[family/how-to/lampac-torrents]] (причина + фикс), [[personal/tech/lampac-torrserver]] (устройство цепочки), [[personal/plans/lampac-disable-1xbet-ads]] (выключатель рекламы, если Alex когда-нибудь попросит — пока НЕ применять). diff --git a/personal/plans/watchlist-tmdb-missing-marker.md.bak-links-20260922 b/personal/plans/watchlist-tmdb-missing-marker.md.bak-links-20260922 new file mode 100644 index 00000000..ee22a9a9 --- /dev/null +++ b/personal/plans/watchlist-tmdb-missing-marker.md.bak-links-20260922 @@ -0,0 +1,1206 @@ + +# Watchlist — автопоиск TMDB + маркер «нет в базе» (без ручных правок) + +**Дата:** 2026-09-22 +**Статус:** ✅ ОСНОВНАЯ ЗАДАЧА ЗАВЕРШЕНА. Шаги 1, 1.3, 2, 3 задеплоены и приняты в UI. +Маркер `❓` работает **в обе стороны** (24 снято, 18 поставлено), боевой `.md` +синхронизирован с каталогом, автозакачка в Radarr отключена и **16 авто-закачек +удалены вместе с файлами**, кэш резолва на HDD, кэш-копия с SD удалена, +**название и год карточки берутся из TMDB** (было — из `.md`). +Коммиты: `lampac-scripts` **`53e5803`** (имя/год из TMDB), `1122b71` (маркер в обе +стороны), `watchlist-sync` **`396acc3`**. +**Открытые задачи (в работе / ждут Alex)** → [[#🔜 Открытые задачи (2026-09-22, вечер)]] +⚠️ Единственная незакрытая: **категории в ленте прыгают при перезагрузке** (п. 3) +✅ TorrServer/PidTor — **починен И ПРИНЯТ В UI** ([[personal/plans/lampac-pidtor-503-fix]]): +Alex запустил F1 в плеере, торренты появились. +✅ Год «Волшебный участок: Фильм» — **разобран, не баг**: фильм `In Production`, +`release_date` пуст у самого TMDB. Оставлено `null` осознанно. +**Связано:** [[personal/plans/lampac-watchlist-plugin]], [[personal/plans/lampac-disable-1xbet-ads]], [[personal/plans/lampac-pidtor-503-fix]], [[family/projects/watchlist-automation]], [[family/projects/watchlist-sync]], [[personal/tech/lampac-deployment]], [[personal/tech/lampac-torrserver]] + +--- + +## ✅ Название и год карточки — из TMDB (2026-09-22, коммит `53e5803`) + +Alex: *«че по имени в карточке? оно должно из источника ставиться»*, +*«названия блядь доделал?»*, *«БЛЯДЬ фильм есть или нет?? ... Отображать как в tmdb/kp»*. + +### Что было / что стало + +```python +# БЫЛО: it["name"] = название из .md, it["year"] = год из .md (часто null) +# СТАЛО: tmdb_details() тянет ru-RU title + original_title + год из release_date +``` + +`tmdb_details()` расширен полями `title`, `original_title`, `en_title`, `year`, +`release_date`. В `enrich()` — подстановка с приоритетом **русское название TMDB → +оригинал → `.md` как fallback**. Год проставляется, если в `.md` был `None`. + +### Доказательства расхождения (сырьё) + +| в `.md` | TMDB `ru-RU` | TMDB `en-US` | +|---|---|---| +| `Смерть единорога` | **`Смерть Единорога`** | `Death of a Unicorn` | +| `Everything Everywhere All at Once` | **`Всё везде и сразу`** | `Everything…` | +| `Простите за беспокойство` | `Простите за беспокойство` | `Sorry to Bother You` | +| `Духless` | `Духless` | `Soulless` | +| `Бумбараш` | `Бумбараш` | `Bumbarash` | + +**Год вообще не проставлялся** (`year: null` в каталоге), хотя TMDB отдаёт +`release_date='2025-03-17'`. + +### 🔴 Миграция кэша деталей + +`cache/.lampac_tmdb_details.json` (367 записей) **не содержал `title`** — старая +версия сохраняла только описание/жанры/актёров. Добавлена проверка: + +```python +key = f"{mtype}/{tmdb_id}" +if key in details: + d = details[key] + if d.get("title"): # ← миграция: без title дотянуть заново + return d +``` + +Записи дотягиваются по одной при первом обращении (~12 запросов/с, ~30 сек на 367). + +### Результат боевого прогона + +``` +376 позиций без года: 1 (из 376) — 'Волшебный участок: Фильм' (нет в TMDB) +296 позиций: русское name + original +источники: Radarr 9, TMDB 346, автопоиск по названию 17, по kp_id 4, miss 33, карточек 376 + +'Смерть Единорога' orig='Death of a Unicorn' year=2025 +'Всё везде и сразу' orig='Everything…' year=2022 +'Простите за бесп…' orig='Sorry to Bother You' year=2018 +'Я ругаюсь' orig='I Swear' year=2025 +'Гамнет' orig='Hamnet' year=2025 +``` + +🔴 **Скрипты, вносившие правку, лежат в `~/lampac-tmp/`:** +`probe_titles.py` (сверка ru/en), `probe_details.py` (состав кэша), +`probe_migrate.py` (проверка миграции), `verify_names.py` (итог прогона). + +🔴 **Прогон дважды падал на обрыве ssh** (`client_loop: send disconnect: Broken pipe`) +даже с `setsid nohup`. Рабочее решение — `systemd-run --user --unit=gen-watchlist +--scope /tmp/gen-runner.sh`. См. [[personal/tech/lampac-deployment]]. + +--- + +## 🔜 Открытые задачи (2026-09-22, вечер) + +### 1. Удаление авто-закачек из Radarr/Sonarr — ✅ ВЫПОЛНЕНО (2026-09-22, 18:44) + +Alex: *«удаляй»* (после *«закачки отменять и проверить еще раз что заново не добавятся»* +и *«удалить все добавленные автоматикой закачки в т.ч. файлы. и radarr и sonarr»*). + +**Удалено 16/16 (все HTTP 200), 0 ошибок. Файлы ушли с диска физически.** + +``` +Radarr : 50 → 34 фильма, added >= 20.09: 0, monitored: 0 + очередь 0, wanted/missing 0, .recyclebin пусто + 12 каталогов в $M/movies-radarr удалены (29 → 17) +Sonarr : 13 сериалов, added >= 20.09: 0 — авто-закачек НЕ было, не трогали +дамп : /tmp/radarr-sonarr-dump-20260922-184351/ +снимок : /tmp/radarr-delete-snapshot.json +``` + +🔴 Полная таблица, API-вызовы, питфолл `deleteFiles=true` и **критичное +открытие про двойной путь `/media/movies-radarr`** — в +[[personal/tech/lampac-deployment#📋 Инвентаризация авто-закачек в Radarr/Sonarr (2026-09-22)]]. + +**Гарантия «заново не добавятся» — проверена фактом:** +``` +1. sync-down вырезан из watchlist-nightly.sh → в кроне вызова нет +2. все 34 оставшихся фильма Radarr: monitored=false → поиск раздач не запускается + + queue 0 записей + wanted/missing 0 записей +``` + +⚠️ **СДЕЛАНО (ранее висело):** коммит правки `watchlist-nightly.sh` +(вырезанный `sync-down`) в git — **всё ещё НЕ сделан**, единственный хвост +этого пункта. + +### 2. Имя в карточке — из источника (TMDB/КП) — ✅ ВЫПОЛНЕНО (2026-09-22) + +Alex: *«че по имени в карточке? оно должно из источника ставиться»* + *«иди делать он»*. + +**Сделано:** `tmdb_details()` теперь тянет `title` (ru-RU) + `original_title` + +`year` из `release_date`. В `enrich()` имя/оригинал/год подставляются из источника, +`.md` остаётся fallback'ом (год из `.md` не перетирается — он может быть точнее +для локальных премьер). + +Прошлая версия этого пункта (объяснение, «что нужно») **отменена — сделано**: + +``` +в .md: TMDB ru-RU: +'Смерть единорога' → 'Смерть Единорога' ← регистр из источника +'Everything…' → 'Всё везде и сразу' +'Простите за бесп…'→ orig='Sorry to Bother You' +year: null → 2025 / 2018 / 2012 / 1972 +``` + +**Миграция кэша:** 367 записей без поля `title` дотягиваются при первом +обращении (проверка `d.get("title")` в начале `tmdb_details`). + +**Боевой прогон (EXIT=0):** 376 позиций, без года 1 (`Волшебный участок: Фильм`), +296 с русским названием + оригиналом. Коммит **`53e5803`** (запушен). + +🔴 **Питфолл:** `setsid nohup` НЕ спасает от обрыва ssh — прогон умирал дважды. +Решение: `systemd-run --user --unit=gen-watchlist --scope