# 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.