12 KiB
Torrents в Lampa — как оно работает и как чинить
Обновлено: 2026-09-24 Связано: personal/tech/lampac-torrserver, personal/tech/lampac-deployment, family/how-to/tv-lampac-plugin, family/how-to/arr-stack-kraken Статус: ✅ работает. Приёмка Alex: «Во! теперь появились торренты. запустил F1..»
TL;DR
Пункт «Торренты» пуст / 500 / 503
→ проверь PidTor.redapi = http://jac.red (НЕ локальный!)
→ снять кэш ответа (см. «Где на самом деле кэш» ниже)
→ docker restart lampac
Одна причина большинства поломок: redapi указывает на локальный JacRed, который отдаёт формат без поля info → PidTor падает → 500/503.
🔴 Где на самом деле кэш (исправлено 2026-09-24)
Прежняя запись «кэш лежит в cache/fdb/» неверна. Факт:
$H/lampac/cache/fdb/ → только ПУСТЫЕ каталоги 0/ 1/ 2/ … f/ (0 файлов)
$H/lampac/cache/module/ → 76 файлов без расширений, base64-ish имена
(OEdMn4LsmVEkyTEYgfu5dg), file = PE32 .NET DLL
cache/module/ — это сборки .NET-модулей, кэш модулей, а не JSON-ответы PidTor.
Опознать модуль по содержимому:
grep -l "pidtor" $H/lampac/cache/module/* # → файл, внутри которого PidTor.dll
strings <файл> | grep -iE "pidtor|\.dll"
# → PidTor.dll, lite/pidtor, lite/pidtor/serial/{id}, lite/pidtor/s{id}
⚠️ Перед «очистить cache/fdb/» проверь, что там есть файлы —
find $H/lampac/cache/fdb -type f | wc -l. Пусто → чистка не даст ничего.
Кэш модулей в cache/module/ без нужды не трогать: модули пересобираются при старте.
📌 Практический вывод: при 503 первым делом пробовать заголовок, который ещё
не запрашивался (другой год / другой title) — свежий ключ не попадёт в старый кэш и
даст честный ответ. docker restart lampac кэш ответов не снимает.
По каким трекерам ищет PidTor
Свой список PidTor не держит. Он идёт на {redapi}/api/v2.0/indexers/all/results?title=..&year=..
— суффикс all означает «все индексеры JacRed разом». Состав трекеров определяется
стороной jac.red, а не lampac.
🔴 Prowlarr в этой цепочке не участвует. У Prowlarr свои 6 индексера (RuTracker · Kinozal · Kinozal (M) · RuTor · NoNaMe Club · Byrutor), и питает он Radarr/Sonarr (family/how-to/arr-stack-kraken). Прямого моста «Prowlarr → источники Lampa» нет; добавить трекер в Prowlarr ≠ добавить источник в плеер.
Как влиять на список источников (два пути):
| Путь | Как | Блокер |
|---|---|---|
| Локальный JacRed lampac | править набор трекеров в его БД ($H/lampac/data/), затем переключить redapi на http://127.0.0.1:9118 |
🔴 формат без info → NPE. Переключать только после появления поля info |
| Prowlarr в обход PidTor | добавить трекеры в Prowlarr и качать ими в Radarr/Sonarr | это не «источники в Lampa» — в плеере их не видно |
⚠️ Шум «один источник в «Смотреть онлайн» и качество плохое» — это онлайн-балансеры
(Online/OnlineRUS/OnlinePaid/SISI), а не PidTor. Качество диктует CDN источника.
Архитектура
Lampa (ТВ) → «Торренты» → PidTor (модуль lampac)
↓ redapi
jac.red (ВНЕШНИЙ, 144.31.3.10)
↓ /api/v2.0/indexers/all/results (все индексеры)
↓ MagnetUri + info{}
TorrServer (встроен в lampac, порт 9085 внутр.)
↓
качает на HDD Кра́кена
🔴 Поиск раздач идёт на ВНЕШНИЙ jac.red. TorrServer только качает. Локальный JacRed есть, но несовместим по формату (нет info).
Что нужно в config-module/init.conf
"PidTor": {
"enable": true,
"redapi": "http://jac.red",
"min_sid": 15
}
⚠️ Файл именно config-module/init.conf. Правки в config/init.conf не применяются и не дают ошибки — просто ничего не меняется.
Диагностика по коду ответа
| Код | Время | Значение | Что делать |
|---|---|---|---|
| 503 | 0.001–0.035s + X-Invoke-Cache: HIT |
Ответ из кэша. Реальная причина скрыта | Запросить новый ключ (другой год/title) для честного ответа; см. «Где на самом деле кэш» |
| 500 | 0.1–1s | Честная ошибка. Обычно NPE на info |
Смотреть redapi |
| 200 | — | Работает | — |
🔴 503 = кэш, 500 = реальная ошибка. X-Invoke-Cache: HIT + время <0.04s — верный признак.
🔴 503 не означает «раздач нет». Это кэшированный отказ. Делать выводы о трекерах
можно только по свежему (некэшированному) ответу.
🔴 Главная ловушка: два разных JacRed
ВНЕШНИЙ jac.red — поля ответа:
[..., 'ffprobe', 'info', 'languages'] ← info ЕСТЬ
info = {"quality":480, "voices":["Дубляж"],
"sizeName":"2.02 GB", "relasted":2025}
ЛОКАЛЬНЫЙ JacRed (127.0.0.1:9118) — поля ответа:
['Category','Details','MagnetUri','Peers','PublishDate',
'Seeders','Size','Title','Tracker']
↑ info НЕТ → NPE
PidTor падает здесь (PidTor/Controller.cs:97):
string mediainfo = torrent.info.sizeName ?? string.Empty;
// ^^^^^^^^^^^^^^ info == null → NullReferenceException → HTTP 500
Локальный JacRed быстрее (0.12s против 0.35s), поэтому соблазн переключить есть. Не переключать. Скорость не стоит поломки.
Проверка работоспособности
1. PidTor по фильму (то, чем ходит клиент)
эндпоинт: http://192.168.1.14:9118/lite/pidtor?title=<Название>&year=<Год>
ожидаем: HTTP 200, непустой ответ
Проверять тем же набором параметров, что посылает клиент — ключ кэша включает title:original_title:year:language:serial. F1 без года → 200, с годом → другой ключ.
2. Прямой источник (JacRed)
{PidTor.redapi}/api/v2.0/indexers/all/results?title=<Название>&year=<Год>
⚠️ Именно маршрут /api/v2.0/indexers/all/results — тот, которым ходит PidTor. /api/v1.0/torrents тоже работает, но это другой эндпоинт; проверка через него ничего не доказывает.
3. Список раздач TorrServer
curl -s -X POST http://127.0.0.1:9118/ts/torrents \
-H 'Content-Type: application/json' -d '{"action":"list"}'
🔴 Только такой вызов. -d '[]', -d '{}', без тела → 400. GET /ts/torrents → 404. Порт 9085 снаружи недоступен, только /ts/ через 9118.
4. Приёмка
Запустить фильм в плеере. «API отвечает 200» ≠ «работает». Приёмка только в UI.
Питфоллы
- 🔴 503 — это кэш, а не ошибка. Сначала снять кэш ответа, потом делать выводы. Иначе час диагностики по закэшированному отказу. ⚠️ Кэш не в
cache/fdb/(там пусто) — см. «Где на самом деле кэш»; быстрее всего запросить новый ключ (другой год/title). - 🔴 503 ≠ «раздач нет». Это кэшированный отказ; выводы о трекерах делать только по свежему ответу.
- 🔴 Prowlarr не влияет на источники Lampa. Он питает Radarr/Sonarr; PidTor ходит на
jac.red. - 🔴
enabled: falseу всех 86 модулей — это НОРМА. Служебное поле (расписание). Смотреть толькоenable. - 🔴 Лог lampac не показывает исключения PidTor —
docker logsпуст. Читать исходник (Controller.cs,Model.cs). - 🔴
docker exec lampac python3не работает — python3 нет в образе. Парсить конфиги скриптом снаружи черезdocker cp. - 🔴 Конфиг — в
config-module/init.conf, не вconfig/init.conf. - 🔴 Кириллица в inline-ssh командах → BLOCKED (tirith
confusable_text). Только скриптом-файлом. - 🔴 Порт 9085 наружу закрыт — работать через
/ts/на 9118. - ⚠️ Кириллический
titleв query-параметре через Mac уходит в таймаут апрува (BLOCKED) — использовать%D0%9C...-экранирование или+вместо пробела;+в URL работает (title=Мастерская+сатаны).
Урок
Единственная причина поломки — поменял рабочий параметр по соображению «локальный быстрее», не проверив формат ответа.
Правильный порядок при подозрении на внешнюю зависимость:
1. Сравнить ФОРМАТ ответа (набор полей JSON), не только код и время
2. Отсутствие поля = потенциальный NPE в потребителе
3. Только потом менять источник
Дешевле сравнить два JSON, чем ломать модуль и разбирать час.
⚠️ Второй урок (2026-09-24): не выдумывать расположение файлов. «Кэш в cache/fdb/»
прожило в двух доках сутки, хотя папка пустая. Проверять факт (find … | wc -l),
а не повторять запись из доки.
Связанные
- personal/tech/lampac-torrserver — детальная диагностика, маршруты
/ts/ - personal/tech/lampac-deployment — деплой, плагин каталога, разбор «Мастерская сатаны» 2026-09-24
- family/how-to/arr-stack-kraken — стек Prowlarr/Radarr/Sonarr (отдельная, не связанная ветка)
- personal/tech/prowlarr-flaresolverr-cloudflare — индексера Prowlarr