[2026-09-22] eagle: personal/plans/watchlist-tmdb-missing-marker.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-22 17:08:14 +06:00
1 parent 757501cebe
commit 1d2876df06
1 file changed
+144
@@ -0,0 +1,144 @@
# Watchlist — маркер «нет в TMDB» + заглушка карточки
**Дата:** 2026-09-22
**Статус:** черновик, ждёт апрува
**Связано:** [[personal/plans/lampac-watchlist-plugin]], [[family/projects/watchlist-automation]]
---
## Задача (дословно Alex)
> «Их нет?! Тогда какого хуя они БЛЯДЬ в списке вообще?! Скрипт должен поставить вопрос
> в списке напротив такого (кроме тех что ещё не вышли, там календарь стоит)»
> «В смысле блядь прописал соответствия вручную?! Че за нахуй?! Убирай нахуй!
> Это блядь скрипт должен делать!»
---
## Что установлено фактами
### 1. Ручные соответствия — УБРАНЫ (2026-09-22)
Я вписал в генератор словарь `MANUAL_TMDB` (Хамнет → 858024, WeWork → 795622,
Астрал 2 → 1291595) и «починил» 3 фильма руками. **Откачено по требованию Alex.**
Причина корректная: подмена результатов — не решение, а маскировка проблемы.
⚠️ **Побочный эффект отката:** постеры у Хамнета, WeWork и Астрала 2 вернутся к «НЕТ»,
пока не будет автоматического механизма. Данные в `/tmp/wl-out` пока содержат ручные
результаты (задеплоено) — при следующем прогоне генератора они исчезнут.
### 2. 4 фильма отсутствуют в TMDB физически
| Фильм | Кинопоиск-ID | Маркер | TMDB |
|---|---|---|---|
| Рассекая волны: экспедиция «Лас Бальсас» (2025) | 12432920 | 🗓️ | нет |
| Цена вершины (2025) | 11888712 | 🗓️ | нет |
| О добре и зле (2025) | 8184798 | 🗓️ | нет |
| Эхопраксия | — | ❓ | id=1650284 есть, но **без постера** |
Проверено запросами: RU-название, EN-алиас, разные годы — пусто.
### 3. Корень: `discover` не проверяет наличие в TMDB
`discover.py` тянет новинки из Кинопоиска и фильтрует **только по рейтингу и голосам**
(IMDb ≥ 7.0 / KP ≥ 8.5 для РФ, голосов ≥ 1000/500). Проверки «есть ли фильм в TMDB»
**нет**. Поэтому в `## Новинки` попадают позиции, которых TMDB не знает →
`resolve` их не может сопоставить → нет `tmdb_id` → нет постера → клик даёт «здесь пусто».
### 4. Почему маркер не сработал
`🗓️` (upcoming) ставится **при добавлении** в `discover` для ещё не вышедших фильмов.
`resolve` **пропускает** позиции с `❓`/`🗓️` (флаг `ambiguous` в `WatchItem`).
Итог: маркер есть, но он про «не вышел», а не про «нет в TMDB» — и повторно
позиция не проверяется никогда. Для `Эхопраксии` стоит `❓` с прошлых прогонов,
но резолвер её не тронет, пока маркер не снят (`--recheck`).
### 5. Текущие цифры (после деплоя)
| Категория | Позиций | Постеров | TMDB-ID |
|---|---|---|---|
| films | 360 | 310 | 314 |
| new | 33 | 31 | 31 |
| cartoons | 3 | 3 | 3 |
| anime | 7 | 7 | 7 |
| **итого** | **403** | **351** | **355** |
Без TMDB-ID: **48 позиций**.
---
## ПЛАНА РАБОТ (ждёт апрува)
### Шаг 1 — маркер `❓` автоматически в генераторе
**Файл:** `gen_watchlist_v2.py` (на Маке), функция `enrich` + новый writer в watchlist.
Логика:
```
для каждой позиции:
если tmdb_id найден -> как сейчас (постер + карточка)
иначе если маркер 🗓️ (upcoming) -> НЕ трогать (календарь = ещё не вышел)
иначе -> поставить ❓ в movies-watchlist.md
```
Что писать в `.md`: заменить/добавить `❓` перед названием, как это делает `resolve`.
Формат (как уже принято в файле):
```
- [ ] ❓ Название фильма
```
Питфоллы:
- не дублировать `❓`, если он уже стоит;
- **не трогать** позиции с `🗓️` — явное исключение по требованию Alex;
- не трогать `[x]` (просмотренные);
- писать атомарно: backup `.md` → запись → проверка размера.
### Шаг 2 — заглушка карточки для позиций без TMDB
Сейчас клик по такому элементу → `cards/card-movie-<id>.json` не существует →
«здесь пусто». Решение: генерировать карточку-заглушку с тем, что есть.
Содержимое заглушки: название, год, рейтинг, ссылка на Кинопоиск, пометка
«нет данных TMDB».
⚠️ **Пункт под вопросом** — Alex не подтвердил. Возможно, достаточно маркера `❓`
в списке (он сам увидит список и поправит названия). **Уточнить перед реализацией.**
### Шаг 3 — `discover` не добавляет то, чего нет в TMDB
**Файл:** `discover.py` в `~/Developer/watchlist-sync/`.
Добавить проверку в `_has_enough_votes()`-цепочку: после KP-фильтра делать
TMDB-поиск и **пропускать** фильм, если TMDB его не знает. Тогда мусор не попадает
в список вообще.
⚠️ **Риск:** фильмы, которых ещё нет в TMDB, но которые реально существуют, будут
потеряны для списка. Для upcoming (`🗓️`) можно оставить — они и так не резолвятся.
**Уточнить:** применять ли эту проверку к upcoming тоже.
---
## Порядок работ
| # | Шаг | Файл | Апрув |
|---|---|---|---|
| 1 | Маркер `❓` в генераторе | `gen_watchlist_v2.py` | ⏳ |
| 2 | Заглушка карточки (?) | `gen_watchlist_v2.py` | ⏳ требует уточнения |
| 3 | Фильтр TMDB в `discover` | `discover.py` | ⏳ |
**Приёмка:** открыть список — напротив фильмов, которых нет в TMDB и которые НЕ
upcoming, стоит `❓`. Фильмы с `🗓️` не тронуты.
---
## Открытые вопросы (нужен ответ Alex)
1. **Заглушка карточки** — нужна вообще, или достаточно маркера `❓` в списке?
2. **`discover`** — фильтровать по TMDB только для вышедших, или для upcoming тоже?
3. **Откат 3 постеров** — принять откат (Хамнет/WeWork/Астрал без постера, пока нет
автоматики), или сделать автопоиск по альтернативным названиям через Кинопоиск
(`alternativeName`), как уже делается в `watchlist-sync` резолвере?