28 KiB
Executable File
created, namespace, type, status, tags, title, updated, related, summary
| created | namespace | type | status | tags | title | updated | related | summary | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-09-22 | family | how-to | работает-min_sid-на-обсуждении |
|
Torrents в Lampa — как оно работает и как чинить | 2026-09-25 |
|
PidTor: три причины пустого списка — кэш-503, Playwright-503 на многословном title, и min_sid:15 отрезающий нишевые раздачи. Свежие фильмы работают, документалки требуют решения Alex по min_sid. |
Torrents в Lampa — как оно работает и как чинить
Обновлено: 2026-09-25 Связано: personal/tech/lampac-torrserver, personal/tech/lampac-deployment, family/how-to/tv-lampac-plugin, family/how-to/arr-stack-kraken, personal/tech/lampa-jellyfin-plugin Статус: ✅ работает. Приёмка Alex: «Во! теперь появились торренты. запустил F1..»
TL;DR
Пункт «Торренты» пуст / 500 / 503
→ проверь PidTor.redapi = http://jac.red (НЕ локальный!)
→ снять кэш ответа (см. «Где на самом деле кэш» ниже)
→ docker restart lampac
Одна причина большинства поломок: redapi указывает на локальный JacRed, который отдаёт формат без поля info → PidTor падает → 500/503.
Вторая причина 503 (найдена 2026-09-25): длинный многословный title. См. раздел ниже.
Третья причина (2026-09-25): min_sid: 15 отбрасывает нишевые раздачи. Даже когда
JacRed нашёл и title короткий — пустой список. Документалки не набирают 15 сидов.
См. раздел «Третья причина» ниже.
🔴 Где на самом деле кэш (исправлено 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 кэш ответов не снимает.
🔴 Вторая причина 503: длинный многословный title (2026-09-25)
Повод: Alex — «эти фильмы можно как-нибудь в торрентах на лампе найти?» (о 45 документалках с диска Kraken, безотносительно Jellyfin).
Проверено на Кра́кене, 2026-09-25:
/lite/pidtor?title=Spy%20in%20the%20Snow&year=2018 → 503 (пустое тело)
/lite/pidtor?title=Spy%20in%20the%20Snow → 503
/lite/pidtor?title=Spy → 200, HTML с рабочей раздачей
/lite/pidtor?title=Penguin%20Meet%20the%20Family → пусто
Пробел в title через %20 даёт 503; одно слово — 200 с результатом.
Кириллица работает (title=шпион в снегах → 200, раздача найдена).
Причина — Chromium/Playwright внутри lampac, а не JacRed
jac.red напрямую исправен и быстр:
curl "http://jac.red/api/v2.0/indexers/all/results?apikey=&Query=attenborough"
→ 200, 0.48s, Blue Planet II 156 ГБ 4K BDRemux (rutracker + nnmclub)
curl "…Query=шпион в снегах"
→ 200, BBC Шпион в снегах (rutracker, bitru, nnmclub, kinozal), sid=3
docker logs lampac при этом забит циклом:
Chromium: Browser_Disconnected
Chromium: Initialization → CreateAsync → LaunchAsync
Chromium: v154.0.8037.57 / headless / True
…
Chromium: Timeout 180000ms exceeded.
- <launched> pid=21522
- [err] Failed to connect to the bus: socket /run/dbus/system_bus_socket:
No such file or directory
Chromium стартует, отваливается, рестартует — и на запросе с несколькими словами
уходит в 180-секундный таймаут, который отдаётся наружу как 503.
Фоновый шум dbus/bus.cc:405 в логах контейнера — это оно, не отдельная проблема.
⚠️ Не путать с cached-503 из раздела выше: там признак X-Invoke-Cache: HIT +
время <0.04s. Здесь 503 приходит свежим, без попадания в кэш.
Практический вывод для поиска
- Искать одним-двумя словами, не полным названием.
SpyвместоSpy in the Snow;PenguinвместоPenguin Meet the Family. - Диакритику/апострофы ломают запрос —
Nature's Biggest Beastsпопробовать какNatureилиBiggest Beasts. - Русские документалки ищутся лучше по русскому названию, чем по
транслитерации папки:
шпион в снегах→ раздача есть. - Если пусто на 200 — это честные «0 раздач», а не сбой. Сверить через
jac.red …?Query=<слово>напрямую.
Незакрытый дефект (ждёт решения Alex)
Playwright в контейнере lampac уходит в цикл и валит запросы с длинным title.
Не трогал — правка base.conf/ограничение параллельных Chromium вне задачи.
Кандидаты: ограничить параллельный запуск Chromium либо отключить headless-модули
в base.conf (в SkipModules уже есть Potok, MsxNative, ForkPlayerXML).
🔴 Третья причина: min_sid: 15 — фильтр, который режет документалки (2026-09-25)
Повод: Alex — «понятно. занеси наблюдение в доку по лампе» (после разбора документалок с диска Kraken).
Факт. Даже когда JacRed раздачу нашёл и title короткий (200, не 503), PidTor
может отдать пустой список. Причина — min_sid в секции PidTor.
Текущее значение в current.conf lampac (строка 3378):
"PidTor": {
"enable": true,
"redapi": "http://jac.red",
"apikey": null,
"min_sid": 15, ← 🔴 вот он
"max_size": 0,
"emptyVoice": true,
"forceAll": false,
"torrs": null,
"auth_torrs": null
}
Фильтр в PidTor/Controller.cs:86-89:
int sid = torrent.Seeders;
if (sid >= init.min_sid) // 15 по умолчанию
… // раздача показывается
Раздача с Seeders < 15 отбрасывается молча — наружу приходит пустой список,
не ошибка.
Почему это бьёт именно по документалкам
Нишевый контент не набирает сидов:
| Запрос | JacRed нашёл | Сидов | PidTor отдал |
|---|---|---|---|
шпион в снегах (BBC Spy in the Snow) |
rutracker, bitru, nnmclub, kinozal | 3 | ❌ отфильтровано |
Spy in the Snow (rutracker) |
WEB-DL 1080p ДБ | 3 | ❌ отфильтровано |
attenborough → Blue Planet II |
rutracker + nnmclub, 156 ГБ 4K | — | зависит от сидов |
Для фильмов-новинок 15 сидов норма; для BBC-документалки 2018 года — почти недостижимо.
Второй барьер рядом — фильтр по качеству
Controller.cs:84: раздача проходит дальше только если forceAll == true или
в имени есть 2160p / 1080p / 720p (либо 4k/uhd).
Spy in the Snow содержит 1080p → этот барьер проходит; min_sid его убивает.
Как снижать min_sid
| Значение | Смысл |
|---|---|
0 |
показывать всё, включая мёртвые раздачи (0 сидов) |
1–2 |
компромисс: мёртвые отсекаются, нишевые проходят |
15 |
текущее; режет почти все документалки |
Порядок правки боевого конфига (personal/plans/lampac-kraken):
коммит current.conf до → правка min_sid → заливка + рестарт lampac →
приёмка Alex в UI (искать Spy in the Snow в PidTor) → коммит после.
🔴 Приёмка = раздача видна в UI, а не «API отвечает 200».
Добавка к диагностике: rjson как быстрый чекап
# пустой список vs 503 — различать так (тело {} = отфильтровано, не сбой):
curl "http://127.0.0.1:9118/lite/pidtor?title=Spy&rjson=true" → {}
rjson=true отдаёт JSON вместо HTML — удобнее для скриптов. Пустой {} при
известной раздаче в JacRed = фильтр min_sid/качество, а не поломка.
По каким трекерам ищет 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) для честного ответа; см. «Где на самом деле кэш» |
| 503 | 2–180s, без X-Invoke-Cache |
🔴 Chromium/Playwright внутри lampac. Обычно длинный многословный title |
Искать одним-двумя словами; однословный title → 200. См. «Вторая причина 503» |
| 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.
⚠️ ПРЕДЫСТОРИЯ: min_sid уже трогали — и откатили (2026-09-22)
🔴 Перед любой правкой min_sid прочитать это.
На сессии 2026-09-22 я сам понижал min_sid до 3 — и это было откачено:
· min_sid: мой 3 убран → стоковое 15
Причина отката — min_sid не был причиной пустого списка у Alex. Реальная
причина была redapi: он указывал на локальный JacRed, который отдаёт формат
без поля info → PidTor/Controller.cs:97 (torrent.info.sizeName) → NPE → 500.
Стоковое 15 рабочее состояние, зафиксированное в personal/tech/lampac-torrserver
§«Статус закрытия»: ✅ min_sid: 3 убран → сток 15.
Трогать его — значит переоткрывать закрытую задачу.
⚠️ Не путать два случая:
| 2026-09-22 (закрыто) | 2026-09-25 (открыто) | |
|---|---|---|
| Симптом | «Торренты» пусто у всех фильмов | конкретные документалки пусто |
| Причина | redapi → локальный JacRed (нет info) |
Seeders < 15 |
| Фикс | redapi = http://jac.red |
обсуждение min_sid |
| Вывод | min_sid не при чём |
min_sid — вероятная причина |
Т.е. понижение min_sid обосновано только для нишевого контента
(BBC-документалки, 0–3 сида). Для свежих фильмов стоковое 15 всех устраивало —
Гамнет: из 14 раздач проходили 6, F1 играл, приёмка Alex пройдена.
📋 Решение ожидает Alex: min_sid 15 → 1–2 (НЕ НАЧАТО)
Статус: план записан, правка не начата, ждёт подтверждения Alex.
Что предлагается: понизить min_sid до 1–2, чтобы нишевые документалки
(BBC Spy in the Snow, сидов 0–3) перестали отсеиваться.
Цена (озвучена Alex, не забыть повторить): понижение min_sid — решение Alex,
низкий sid = медленнее качает. Т.е. раздачи с 1–2 сидами будут играть хуже.
| Значение | Что даёт | Риск |
|---|---|---|
15 (текущее) |
свежие фильмы отлично, документалки пусто | нишевый контент недоступен |
1–2 |
документалки появляются | медленная загрузка на нишевых раздачах |
0 |
всё, включая мёртвые | плеер будет висеть на раздачах с 0 сидов |
Порядок правки (если Alex подтвердит)
- Коммит
current.confДО правки. - Правка
min_sidвconfig-module/init.conf(неconfig/init.conf— правки там не применяются и не дают ошибки). - Заливка +
docker restart lampac. - 🔴 Приёмка Alex В UI: искать
Spy in the Snowв разделе PidTor, запустить. «API отвечает 200» ≠ «работает». - Коммит ПОСЛЕ.
Объём: ~15 минут + приёмка на ТВ.
⚠️ Файл: правки идут в config-module/init.conf. current.conf — эффективный,
слитый из base.conf + init.conf; правка current.conf напрямую перезапишется
при старте. Держать в голове, в каком из двух файлов менять.
Открытый дефект: Playwright валит длинные запросы (не закрыт)
Статус: найден 2026-09-25, не трогал, ждёт решения Alex.
Симптом: /lite/pidtor?title=Spy%20in%20the%20Snow → 503, а ?title=Spy → 200.
Multi-word title уходит в 180-секундный таймаут Chromium/Playwright внутри lampac.
Chromium: Browser_Disconnected → Initialization → CreateAsync → LaunchAsync
Chromium: Timeout 180000ms exceeded.
- [err] Failed to connect to the bus: /run/dbus/system_bus_socket: No such file
Кандидаты на фикс:
- ограничить параллельный запуск Chromium;
- отключить headless-модули в
base.conf(SkipModulesуже содержитPotok,MsxNative,ForkPlayerXML).
Обходной путь (работает сейчас): искать одним-двумя словами. Русские документалки — по русскому названию, не по имени папки на диске.
⚠️ Это отдельный дефект от min_sid. Если починить Playwright, длинные запросы
начнут отвечать, но min_sid всё равно отрежет раздачи с <15 сидов.
Питфоллы
- 🔴 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=Мастерская+сатаны). - 🔴
titleиз нескольких слов = 503 (Playwright-таймаут). Проверено 2026-09-25:title=Spy%20in%20the%20Snow→ 503,title=Spy→ 200. Это НЕ «раздач нет» и НЕ кэш (X-Invoke-Cacheотсутствует). Искать одним словом. - 🔴 Шум
dbus/bus.cc:405 … /run/dbus/system_bus_socketвdocker logs lampac— маркер той же проблемы. Chromium в контейнере без dbus стартует и отваливается;Browser_Disconnected+Timeout 180000ms exceededв логе = PidTor будет отдавать 503. - ⚠️
docker logs lampacтонет в Chromium-шуме (grep -viE "dbus|chromium|playwright") — иначе реальные строки не видно. Исключений PidTor там по-прежнему НЕТ (см. п. 5). - 🔴 Пустой список ≠ 503. Три разных состояния:
503(кэш/Playwright),{}/пусто при 200 (= фильтрыmin_sid/качество отрезали),500(NPE наinfo). Проверятьrjson=trueдля быстрого различения. - 🔴
min_sid: 15режет документалки молча. Сидов у BBC-докфильмов обычно 0–3. Если JacRed находит, а PidTor пусто — смотретьmin_sidпервым делом, не трекеры.
Урок
Единственная причина поломки — поменял рабочий параметр по соображению «локальный быстрее», не проверив формат ответа.
Правильный порядок при подозрении на внешнюю зависимость:
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 (отдельная, не связанная ветка)