[2026-09-23] eagle: family/projects/watchlist-automation.md personal/plans/lampac-watched-to-watchlist.md personal/plans/lampac-watchlist-plugin.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-23 21:07:33 +06:00
1 parent 34dfc8cfc6
commit 945a4f6f5a
3 files changed
+78

No files matched your search

+50
View File
@@ -110,6 +110,56 @@ no-op), `nightly` 01:00, `catalog` 02:30→02:32 (каналов 4, позици
осталась с ранней версии. Правка `crontab` = боевой конфиг → порядок «коммит ДО → правка →
заливка → проверка Alex → коммит ПОСЛЕ».
### 🔴 2026-09-23: `[x]` из Lampa НЕ проставляется — канал найден, но не подключён
**Вопрос Alex:** «А у нас из лампы уходят отметки просмотрено в список галочками как было в jellyfin?»
**Ответ: НЕТ.** Ни Lampa, ни Jellyfin сейчас не дают `[x]`. Задача в работе — см.
[[personal/plans/lampac-watched-to-watchlist]].
**Почему Jellyfin-канал мёртв (замеры 2026-09-23):**
| Проверка Jellyfin (`BaseItems` / `UserData`) | Значение |
|---|---|
| `BaseItems` всего | 53 |
| из них `movie` | **0** |
| из них `series` | 1 (плейлист/коллекция) |
| `UserData.IsPlayed=true` | **0** |
| `PlaybackActivity` | **0** |
Причина: смотрят через **Lampa + TorrServer**, а не Jellyfin. Плюс с 2026-09-22
автозакачки выключены → новые файлы в Jellyfin не приходят. `sync_up.py`
(`GET /Users/{id}/Items?IsPlayed=true` → `[x]`) читает пустоту.
**🔑 Где реально живёт история просмотров — модуль Lampac `TimeCode`:**
| Элемент | Значение |
|---|---|
| Модуль | `/lampac/module/Sync/TimeCode/` (`Controller.cs`, `plugin.js`, `SqlContext.cs`) |
| БД | `/lampac/database/TimeCode.sql` (SQLite). **На хосте:** `$H/lampac/database/TimeCode.sql` |
| Таблица | `timecodes` |
| Колонки | `Id, user, identity, card, item, position, duration, percent, profile, deleted, watched_at, updated_at, extra` |
| Пишет | Lampa → `POST /timecode/add` (легаси) / `/timecode/set` (нативный), пачками ≤10 req/s |
| Ключ личности | `identity = {tmdb_id}_movie` — готовый ключ для матча со списком по TMDB-ID |
Живая запись на 2026-09-23 (единственная в БД):
```
identity = 1758655_movie card = movie-1758655
position = 1222.0 duration = 6898.0 percent = 18.0
watched_at = 0 deleted = 0
```
🔴 **Питфолл: `sqlite3` в контейнере `lampac` НЕТ** (`sh: sqlite3: not found`).
Читать БД так: `docker cp lampac:/lampac/database/TimeCode.sql /tmp/` + на хосте
`python3 -c "import sqlite3; ..."`. На хосте Кра́кена `python3` есть.
⚠️ `viewed.json` и `config.db` в `/lampac/data/ts/` — это **TorrServer'овские**, к
TS-истории просмотров Lampa отношения не имеют (не путать).
**Решение (план, ждёт апрува):** новый модуль `sync_from_lampac.py` в `watchlist-sync` —
читает `timecodes` (`deleted=0` и (`percent>=90` или `watched_at>0`)) → матч по `tmdb_id`
из `watchlist.json` (у **346/346** films `tmdb_id` есть) → `[x]` через существующий
`sync_up._mark_watched` → вызов в `watchlist-nightly.sh` после `sync-up`.
Полный план, грабли и чек-лист приёмки — [[personal/plans/lampac-watched-to-watchlist]].
### 🔜 2026-09-22: УДАЛЕНИЕ авто-закачек — инвентаризация снята, ЖДЁТ КОМАНДЫ
Alex: *«закачки отменять и проверить еще раз что заново не добавятся»* →
@@ -134,3 +134,30 @@ watched_at = 0 deleted = 0
- **Не** возвращаем `sync-down` в крон — закачек быть не должно.
- **Не** пишем в Jellyfin — он не источник просмотров.
- **Не** трогаем `cleanup` — отдельная задача.
---
## 7. Открытый вопрос (задан Alex 2026-09-23, ответа нет)
Как именно в Lampa ставится «просмотрено» — **вручную кнопкой** или **автоматически
при досмотре до конца**? От этого зависит порог в шаге 6:
| Как ставится | Какая колонка сработает |
|---|---|
| Вручную кнопкой | `watched_at > 0` (Lampa кладёт `updated` в `watched_at`) |
| Автодосмотр до конца | `percent >= 90` |
В плане заложены **оба условия одновременно** (`percent >= 90` **ИЛИ** `watched_at > 0`) —
работает в любом случае, но при ответе Alex можно сузить и убрать ложные срабатывания.
---
## 8. Связанные находки этой сессии (не часть плана, но проверено)
- **Стек после ребута:** 14/14 контейнеров поднялись сами, Radarr/Sonarr queue `0`,
Transmission 9 торрентов всё `Done/Idle`, диск 31%, Lampac 200 / Jellyfin 302.
Ночные скрипты (cleanup 02:00, nightly 01:00, catalog 02:30) отработали.
Записано в [[family/projects/watchlist-automation]].
- **🔴 Лог `nightly` живёт в `/tmp/watchlist-nightly.log`** → умирает при ребуте.
Сегодняшний прогон следа не оставил. Предложен фикс (перенести в `~/logs/`),
ждёт команды. Остальные логи уже в `~/logs/`.
@@ -7,6 +7,7 @@ related:
- '[[family/projects/watchlist-sync]]'
- '[[family/projects/watchlist-automation]]'
- '[[family/documents/movies-watchlist]]'
- '[[personal/plans/lampac-watched-to-watchlist]]'
status: cub-sections-working-awaiting-tv-restart-deploy
tags:
- lampac