[2026-09-22] eagle: personal/plans/watchlist-tmdb-missing-marker.md
This commit is contained in:
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` резолвере?
|
||||
Reference in new issue
Block a user