[2026-09-23] plan: threshold from module README (watched_at, not percent)
This commit is contained in:
1 parent
945a4f6f5a
commit
ec49b14ac3
1 file changed
+36
-5
@@ -57,7 +57,31 @@ watched_at = 0 deleted = 0
|
||||
`docker cp lampac:/lampac/database/TimeCode.sql /tmp/` + `python3 -c "import sqlite3 ..."`.
|
||||
На хосте Кра́кена `python3` есть.
|
||||
|
||||
### 1.3 Что уже есть в `watchlist.json` — `tmdb_id` готов к матчу
|
||||
### 1.4 Порог «просмотрено» — ответ из документации модуля
|
||||
|
||||
README модуля (`/lampac/module/Sync/TimeCode/README.md`), раздел «Нативные клиенты»:
|
||||
|
||||
> **«Отдельного флага "просмотрено" нет: это `percent`. road Lampa его не несёт
|
||||
> и не несла никогда, порог завершённости — политика клиента, а не свойство записи.»**
|
||||
|
||||
Значит порог задаёт **клиент** (Lampa на ТВ), сервер его не знает. Две колонки:
|
||||
|
||||
| Колонка | Кто ставит | Значение |
|
||||
|---|---|---|
|
||||
| `watched_at` | клиент, мс | **Когда смотрели.** Арбитр конфликтов между устройствами |
|
||||
| `updated_at` | сервер, мс | Когда приняли строку. Курсор дельт `?since=` |
|
||||
| `percent` | клиент | Прогресс; флага «просмотрено» отдельно нет |
|
||||
|
||||
**Отсюда критерий отбора строки:**
|
||||
```
|
||||
deleted = 0 И percent > 0 И watched_at > 0
|
||||
```
|
||||
⚠️ `deleted=1` — это **снятая** отметка (надгробие), `position`/`percent` обнулены,
|
||||
`duration` сохранён. Такие строки **не** считать просмотром.
|
||||
⚠️ Состояние `percent=18, watched_at=0` (живая запись сейчас) = **начал смотреть,
|
||||
не досмотрел** → `[x]` НЕ ставить.
|
||||
|
||||
### 1.5 Что уже есть в `watchlist.json` — `tmdb_id` готов к матчу
|
||||
|
||||
`$H/lampac/wwwroot/watchlist.json` → `channels.*.items[]`, у **346/346** films есть `tmdb_id`.
|
||||
Матч делается по TMDB-ID, **без** хрупкого сравнения названий.
|
||||
@@ -83,8 +107,12 @@ watched_at = 0 deleted = 0
|
||||
2. **Новый файл** `watchlist_sync/sync_from_lampac.py`:
|
||||
- читает БД по пути из env `LAMPAC_TIMECODE_DB` (default
|
||||
`/lampac/database/TimeCode.sql`; хост-путь подставить в `.env`);
|
||||
- отбирает `deleted = 0` и (`percent >= 90` **или** `watched_at > 0`);
|
||||
- `identity` → `tmdb_id` (срезать `_movie` / `_tv`); `_tv` пропускать на первом этапе;
|
||||
- отбирает `deleted = 0` **И** `percent > 0` **И** `watched_at > 0`
|
||||
(см. 1.4 — «просмотрено» = `watched_at`, не `percent`);
|
||||
- `identity` → `tmdb_id`; форматы `movie-674`, `674_movie`, `tv-1851-s1e2`;
|
||||
на этапе 1 только фильмы, `tv-*` пропускать;
|
||||
- `position`/`duration`/`percent` выводить в лог для отладки — по ним видно,
|
||||
насколько клиент реально досмотрел;
|
||||
- строит `{tmdb_id: title}` из `watchlist.json` (`channels.*.items[]`);
|
||||
- для каждого найденного `[ ]`-строки в `.md` — `[x]` через `_mark_watched`;
|
||||
- `--dry-run` по умолчанию, `--apply` для записи; печатает каждое действие.
|
||||
@@ -95,8 +123,11 @@ watched_at = 0 deleted = 0
|
||||
5. **Крон.** В `~/scripts/watchlist-nightly.sh` — новый вызов **после** `sync-up`,
|
||||
**до** `sync-vault (push)`. Правка через `sudo cp` (`~/scripts/` — `root:root 755`).
|
||||
Бэкап скрипта до правки. Сумма новой версии зафиксировать в доке.
|
||||
6. **Порог `percent`.** Начать с `>= 90`. Проверить на живой записи (сейчас 18% —
|
||||
не должна проходить). При ложных срабатываниях — поднять до 95.
|
||||
6. **Порог.** Критерий — `watched_at > 0` (документация: «просмотрено» — это
|
||||
`watched_at`, а не `percent`). Живая запись сейчас `percent=18, watched_at=0` —
|
||||
проходить не должна. Если в логе увидим `watched_at > 0` при `percent` ~20-40 —
|
||||
значит Lampa помечает как просмотренное раньше конца; тогда добавить нижний порог
|
||||
`percent >= 50` и перепроверить.
|
||||
7. **Документировать** в `family/projects/watchlist-automation.md` (раздел про синк)
|
||||
+ ссылка из `personal/plans/lampac-watchlist-plugin.md`.
|
||||
|
||||
|
||||
Reference in new issue
Block a user