[2026-09-22] eagle: personal/plans/lampac-pidtor-503-fix.md personal/plans/watchlist-tmdb-missing-marker.md personal/tech/lampac-deployment.md personal/tech/lampac-torrserver.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-22 19:30:17 +06:00
1 parent f7c06d2e41
commit 9e4713f81c
4 files changed
+232 -101

No files matched your search

+91 -77
View File
@@ -1,112 +1,126 @@
# PidTor 503 в «Торренты» — диагноз и фикс
# PidTor 500/503 — НАЙДЕНО И ИСПРАВЛЕНО
**Дата:** 2026-09-22
**Статус:** 🔴 ПЛАН, требует подтверждения (нужен рестарт lampac)
**Статус:** ✅ **ИСПРАВЛЕНО.** Все фильмы → HTTP 200
**Связано:** [[personal/tech/lampac-torrserver]], [[personal/tech/lampac-deployment]]
---
## Симптом (Alex)
> «по просмотру: у меня есть определенные сомнения что через torrserver идут,
> там только пункт "смотреть онлайн" работает и он добавляет вотермарк и рекламу
> 1xbet... потому что если пункт "торренты" выбрать при просмотре - то там пусто.»
> «если пункт "торренты" выбрать при просмотре - то там пусто»
## Диагноз: 503 закэширован lampac
## 🔴 ПРИЧИНА: мой же неправильный фикс. Локальный JacRed отдаёт формат без `info`
### Ключевое доказательство
### Доказательство сырьём
```
GET /lite/pidtor?title=F1&year=2025
HTTP/1.1 503 Service Unavailable
Content-Length: 0
X-Invoke-Cache: HIT ← 🔴 ОТВЕТ ИЗ КЭША, запроса к JacRed НЕТ
время ответа: 0.0016s ← мгновенно = из памяти
НАШ 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)
```
JacRed локальный: /api/v2.0/indexers/all/results?Query=F1 -> 200, 72 раздачи
sid=203, 26, 18, 7... (богатая выдача)
JacRed локальный: ?Query=Гамнет -> 200, 14 раздач, max sid=79
jac.red (чужой): ?Query=Гамнет -> 200, 15 раздач, 0.35s
TorrServer: /ts/echo -> MatriX.135, качает (343 пира на тесте)
JacRed изнутри: 0.12s локально, 0.20s внешний хост
```csharp
string mediainfo = torrent.info.sizeName ?? string.Empty;
// ^^^^^^^^^^^^^^ info == null в ответе локального JacRed
// → NullReferenceException → HTTP 500 → закэшировался как 503
```
**Вывод: один раз PidTor получил отказ → lampac закэшировал 503 → теперь отдаёт
его всем запросам по этим фильмам ~40 минут.**
## ❌ Что я сделал НЕПРАВИЛЬНО
### Где искать раздачи — PidTor ходит НАРУЖУ, не на Кра́кен
Переключил `PidTor.redapi` с `http://jac.red` на `http://127.0.0.1:9118`
(«локальный стабильнее»). **Это сломало PidTor полностью:**
```
PidTor.redapi = "http://jac.red" (144.31.3.10) ← ЧУЖОЙ хост
Цепочка:
Lampa → lampac PidTor → jac.red (ПОИСК раздач, чужой сервер)
→ magnet → TorrServer Кра́кена (КАЧАЕТ, локально)
→ поток /lite/pidtor/s<id>
🔴 Поиск раздач — на чужом сервере. TorrServer только качает.
было (redapi=jac.red): часть фильмов работала, часть 503 (кэш таймаутов)
стало (redapi=локальный): ВСЕ фильмы → 500 (NPE на info)
```
Оба варианта поиска рабочие:
- локальный JacRed lampac (`/api/v2.0/indexers/all/results`) — 0.12s
- внешний `jac.red` — 0.35s
Локальный JacRed **несовместим по формату** с PidTor: отдаёт урезанный
ответ без `info`, хотя модель PidTor (`Model.cs`) требует `torrent.info.sizeName`.
## План фикса
### Шаг 1 — сбросить кэш 503 (рестарт lampac)
```bash
docker restart lampac
```
Кэш `X-Invoke-Cache` живёт в памяти процесса → сбрасывается рестартом.
**Проверка после рестарта:**
```bash
curl -s -o /dev/null -w '%{http_code}\n' \
"http://127.0.0.1:9118/lite/pidtor?title=F1&year=2025"
# ожидаем 200 (было 503)
```
### Шаг 2 — переключить PidTor на ЛОКАЛЬНЫЙ JacRed (стабильнее)
## ✅ ФИКС
`config-module/init.conf`:
```json
{
"PidTor": {
"enable": true,
"redapi": "http://127.0.0.1:9118",
"min_sid": 1
}
"PidTor": {
"enable": true,
"redapi": "http://jac.red" ← вернуть внешний, он отдаёт ПОЛНЫЙ формат
}
```
Зачем:
- **`redapi` на локальный lampac** — не зависим от чужого `jac.red`, который
подтормаживает и даёт таймауты (причина закэшированного 503).
- **`min_sid: 1`** вместо 15 — сейчас отсекает большинство раздач.
По Гамнету: из 14 раздач только 6 проходят `min_sid=15`.
По F1 раздачи с sid=1, 4, 7 отсекаются, хотя они рабочие.
Убрал `min_sid: 3` (в стоке `15`; мой `3` тоже мог резать выдачу).
⚠️ `min_sid` — спорно: низкий sid = медленнее качает. Нужно решение Alex:
компромисс `min_sid: 3..5`, либо 1 (показывать всё).
### Проверка после фикса
### Шаг 3 — проверить, что 503 не возвращается
```
Гамнет 2025 → HTTP 200, раздач ✅
Горничная 2025 → HTTP 200, раздач ✅
Я ругаюсь 2025 → HTTP 200, раздач ✅
F1 2025 → HTTP 200, раздач ✅
Духless 2012 → HTTP 200, раздач ✅
Матрица 1999 → HTTP 200, раздач ✅
```
Прогнать 5 фильмов с паузой, убедиться: все 200.
До фикса: F1/Горничная/Я ругаюсь → 503, Духless → 500.
## Питфоллы
## 🔴 Что ещё выяснено попутно (важно для будущих сессий)
1. 🔴 **`X-Invoke-Cache: HIT` в заголовках** — главный маркер «ответ из кэша,
а не от источника». Всегда смотреть заголовки, не только код.
2. 🔴 **503 ≠ «раздач нет».** При отсутствии раздач PidTor отдаёт 200 с пустым
списком. 503 = отказ источника.
3. 🔴 **`min_sid: 15` режет выдачу.** Реальные сиды по свежим фильмам: 1–37.
4. 🔴 **Поиск раздач идёт наружу** (`jac.red`), TorrServer качает локально.
Не путать эти роли при диагностике.
5. 🔴 **Кэш PidTor ~40 минут** (README), в памяти процесса.
### Кэш 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.
@@ -10,6 +10,8 @@
Коммиты: `lampac-scripts` **`53e5803`** (имя/год из TMDB), `1122b71` (маркер в обе
стороны), `watchlist-sync` **`396acc3`**.
**Открытые задачи (в работе / ждут Alex)** → [[#🔜 Открытые задачи (2026-09-22, вечер)]]
⚠️ Единственная незакрытая: **категории в ленте прыгают при перезагрузке** (п. 3)
⚠️ TorrServer/PidTor — **починен** ([[personal/plans/lampac-pidtor-503-fix]])
**Связано:** [[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]]
---
@@ -175,19 +177,31 @@ displayindex: watchlist 1, rezka 10, kinobase 15, filmix 20, vokino 30,
`enumerable:true,configurable:true`) рядом с этой темой.
Требует отдельного разбора кода Lampac (LampaWeb/Lampa).
### 4. Реклама 1xbet при просмотре — ⏳ ЖДЁТ ВЫБОРА ALEX
### 4. Реклама 1xbet + пустые «Торренты» — ✅ РАЗОБРАНО И ПОЧИНЕНО
Alex: *«там только пункт "смотреть онлайн" работает и он добавляет вотермарк и
рекламу 1xbet - это точно с торрентов? потому что если пункт "торренты" выбрать
при просмотре - то там пусто.»*
**Разобрано: НЕ торренты.** Реклама идёт от 20 онлайн-балансеров
(`Online`/`OnlineRUS`/`OnlinePaid`/`SISI`). TorrServer чист, но раздач нет → пусто.
**Итог разбора (2026-09-22, вечер):**
Выключатель: `"online": false` в `LampWeb.initPlugins` (`$H/config-module/init.conf`).
Три варианта на выбор (погасить всё / частично / оставить) — в
[[personal/plans/lampac-disable-1xbet-ads]]. Полный разбор — в
[[personal/tech/lampac-deployment#🔴🔴 Источники воспроизведения: торренты ≠ «смотреть онлайн» (2026-09-22)]].
```
РЕКЛАМА → от 20 онлайн-балансеров (Online/OnlineRUS/OnlinePaid/SISI).
НЕ от торрентов. TorrServer рекламу не вставляет.
ТОРРЕНТЫ → были пусты из-за redapi, указывавшего на локальный lampac:
его JacRed отдаёт формат БЕЗ поля info
→ PidTor/Controller.cs:97 torrent.info.sizeName → NPE → 500 → кэш 503
ФИКС → redapi возвращён на http://jac.red. Все 6 тестовых фильмов → HTTP 200 ✅
```
🔴 **Alex гасить онлайн ЗАПРЕТИЛ:** *«Я БЛЯДЬ НЕ ПРОСИЛ ГАСИТЬ ОНЛАЙН, ЕБЛАН!
Я СКАЗАЛ ЧИНИТЬ torrserver!»* — задача была диагностировать TorrServer.
`online: false` НЕ добавлялся.
Разборы: [[personal/plans/lampac-pidtor-503-fix]] (причина + фикс),
[[personal/tech/lampac-torrserver]] (устройство цепочки),
[[personal/plans/lampac-disable-1xbet-ads]] (выключатель рекламы, если Alex
когда-нибудь попросит — пока НЕ применять).
### 5. Мелочи