docs: lambac torrents howto (PidTor redapi fix) + watchlist marker done
This commit is contained in:
1 parent
b4463f8a1f
commit
6e0fe30f80
4 files changed
+306
-12
No files matched your search
@@ -0,0 +1,152 @@
|
||||
# Torrents в Lampa — как оно работает и как чинить
|
||||
|
||||
**Обновлено:** 2026-09-22
|
||||
**Связано:** [[personal/tech/lampac-torrserver]], [[personal/tech/lampac-deployment]], [[family/how-to/tv-lampac-plugin]]
|
||||
**Статус:** ✅ работает. Приёмка Alex: «Во! теперь появились торренты. запустил F1..»
|
||||
|
||||
---
|
||||
|
||||
## TL;DR
|
||||
|
||||
```
|
||||
Пункт «Торренты» пуст / 500 / 503
|
||||
→ проверь PidTor.redapi = http://jac.red (НЕ локальный!)
|
||||
→ очисти cache/fdb/
|
||||
→ docker restart lampac
|
||||
```
|
||||
|
||||
**Одна причина большинства поломок:** `redapi` указывает на локальный JacRed, который отдаёт формат **без поля `info`** → PidTor падает → 500/503.
|
||||
|
||||
---
|
||||
|
||||
## Архитектура
|
||||
|
||||
```
|
||||
Lampa (ТВ) → «Торренты» → PidTor (модуль lampac)
|
||||
↓ redapi
|
||||
jac.red (ВНЕШНИЙ, 144.31.3.10)
|
||||
↓ MagnetUri + info{}
|
||||
TorrServer (встроен в lampac, порт 9085 внутр.)
|
||||
↓
|
||||
качает на HDD Кра́кена
|
||||
```
|
||||
|
||||
🔴 **Поиск раздач идёт на ВНЕШНИЙ `jac.red`.** TorrServer только качает. Локальный JacRed есть, но **несовместим по формату**.
|
||||
|
||||
### Что нужно в `config-module/init.conf`
|
||||
|
||||
```json
|
||||
"PidTor": {
|
||||
"enable": true,
|
||||
"redapi": "http://jac.red",
|
||||
"min_sid": 15
|
||||
}
|
||||
```
|
||||
|
||||
⚠️ Файл именно `config-module/init.conf`. Правки в `config/init.conf` **не применяются и не дают ошибки** — просто ничего не меняется.
|
||||
|
||||
---
|
||||
|
||||
## Диагностика по коду ответа
|
||||
|
||||
| Код | Время | Значение | Что делать |
|
||||
|---|---|---|---|
|
||||
| **503** | 0.001–0.002s + `X-Invoke-Cache: HIT` | Ответ **из кэша**. Реальная причина скрыта | Очистить `cache/fdb/` |
|
||||
| **500** | 0.1–1s | Честная ошибка. Обычно NPE на `info` | Смотреть `redapi` |
|
||||
| **200** | — | Работает | — |
|
||||
|
||||
🔴 **503 = кэш, 500 = реальная ошибка.** Кэш `extend: 2700` = 45 минут, переживает `docker restart` (лежит на диске в `cache/fdb/`). Заголовок `X-Invoke-Cache: HIT` + время ~0.0015s — верный признак.
|
||||
|
||||
---
|
||||
|
||||
## 🔴 Главная ловушка: два разных 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`):
|
||||
|
||||
```csharp
|
||||
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
|
||||
|
||||
```bash
|
||||
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.
|
||||
|
||||
---
|
||||
|
||||
## Питфоллы
|
||||
|
||||
1. 🔴 **503 — это кэш, а не ошибка.** Сначала очистить `cache/fdb/`, потом делать выводы. Иначе час diagnostic по закэшированному отказу.
|
||||
2. 🔴 **`enabled: false` у всех 86 модулей — это НОРМА.** Служебное поле (расписание). Смотреть только `enable`.
|
||||
3. 🔴 **Лог lampac не показывает исключения** PidTor — `docker logs` пуст. Читать исходник (`Controller.cs`, `Model.cs`).
|
||||
4. 🔴 **`docker exec lampac python3` не работает** — python3 нет в образе. Парсить конфиги скриптом снаружи через `docker cp`.
|
||||
5. 🔴 **Конфиг — в `config-module/init.conf`**, не в `config/init.conf`.
|
||||
6. 🔴 **Кириллица в inline-ssh командах → BLOCKED** (tirith `confusable_text`). Только скриптом-файлом.
|
||||
7. 🔴 **Порт 9085 наружу закрыт** — работать через `/ts/` на 9118.
|
||||
|
||||
---
|
||||
|
||||
## Урок
|
||||
|
||||
Единственная причина поломки — **поменял рабочий параметр по соображению «локальный быстрее», не проверив формат ответа**.
|
||||
|
||||
Правильный порядок при подозрении на внешнюю зависимость:
|
||||
|
||||
```
|
||||
1. Сравнить ФОРМАТ ответа (набор полей JSON), не только код и время
|
||||
2. Отсутствие поля = потенциальный NPE в потребителе
|
||||
3. Только потом менять источник
|
||||
```
|
||||
|
||||
Дешевле сравнить два JSON, чем ломать модуль и разбирать час.
|
||||
|
||||
---
|
||||
|
||||
## Связанные
|
||||
|
||||
- [[personal/tech/lampac-torrserver]] — детальная диагностика, маршруты `/ts/`
|
||||
- [[personal/tech/lampac-deployment]] — деплой, плагин каталога
|
||||
Reference in new issue
Block a user