Files
obsidian-vault/wiki/concepts/watchlist-automation.md
T

7.9 KiB
Raw Blame History

title, namespace, created, updated, last_synced, type, tags, confidence
title namespace created updated last_synced type tags confidence
Watchlist Automation — Полный Flow personal 2026-05-20 2026-05-27 2026-05-27 concept
kraken
watchlist
automation
synthesis
0.9

Watchlist Automation — Полный Flow

Синтез: как family/documents/movies-watchlist.md превращается в скачанный контент. Объединяет tech/arr-stack-kraken, concepts/kraken-media-stack, tech/hermes-docker-kraken.

Полная цепочка

[вс 09:00] watchlist-discover  ←  KP API топ фильмов 2024-2025
                  ↓ добавляет в секцию "Новинки 👍/👎"
         movies-watchlist.md
         Alex ставит 👍 / 👎
                  ↓
[ежедн 09:00] watchlist-resolve  ← SSH Кракен → resolve → commit
[ежедн 10:00] watchlist-sync-down
  → process-thumbs (перемещает 👍 → начало списка)
  → sync-down (добавляет батч в Radarr/Sonarr)
                  ↓
Radarr (7878) / Sonarr (8989)
  → Prowlarr (9696) → RuTracker / Kinozal(M) / NoNaMe / etc.
  → Transmission (9091)
  → /media/movies-radarr или /media/series-sonarr
                  ↓
router.py (Custom Script) → читает жанры из NFO/TMDb
  → symlink в /media/{movies,cartoons,documentaries,...}/
                  ↓
Jellyfin (8096) → rescan → виден контент

Статусы в movies-watchlist.md

Символ Значение Действие
[ ] не смотрел, в очереди sync-down добавляет в Radarr/Sonarr
[x] просмотрено sync-up из Jellyfin watched history
⬇️ добавлено в Radarr/Sonarr ждёт скачки
👍 нравится (новинка) process-thumbs переносит в начало → попадёт в sync-down
👎 не хочу (новинка) process-thumbs перемещает в ## Новинки👎
🗓️ upcoming (ещё не вышел) discover помечает, не скачивается
не найдено / ambiguous ждёт ручного уточнения
🧟‍♀️ horror (genre_id=27) информационный маркер

Структура секций movies-watchlist.md

## Новинки - 👍/👎   ← discover добавляет сюда
## Фильмы            ← основной список, отступ 2 пробела (  - [ ])
## Мультфильмы
## Аниме
## Новинки👎         ← ← без пробела перед 👎
## Связанные заметки

Важно: process_thumbs автоматически определяет отступ из ## Фильмы и сохраняет при переносе. SECTION_THUMBDN = "## Новинки👎" (без пробела) — должно точно совпадать с заголовком.

Cron Jobs (2026-05-27: migrated to Kraken)

Watchlist pipeline runs entirely on Kraken (migrated from Eagle 2026-05-27). Eagle previously ran watchlist-nightly via SSH; now Kraken runs it locally.

Job Расписание Хост Скрипт
watchlist-nightly ежедн. 01:00 Kraken ~/.hermes/scripts/watchlist-nightly.sh
watchlist-discover вс 09:00 Kraken ~/.hermes/scripts/watchlist-discover.sh

watchlist-nightly.sh (на Kraken):

  1. sync-vault.sh (pull) → process-thumbs --applysync-vault.sh (push)
  2. resolve --recheck --applysync-down --apply --batch 5sync-up --applysync-vault.sh (push)

Paths on Kraken HDD (UUID 49e8f586-3839-4c5d-a1e1-58bfc3579ade):

  • /home/kraken/obsidian → symlink to /srv/dev-disk-by-uuid-.../obsidian
  • watchlist-sync: /srv/dev-disk-by-uuid-.../Developer/watchlist-sync

Discover — Фильтрация

Тип Порог
Мировые IMDb ≥ 7.0 или KP ≥ 7.0
Российские KP ≥ 8.5 (защита от накрутки)
Upcoming год ≥ текущий−1
Минимум голосов IMDb ≥ 1000 или KP ≥ 500

KP API endpoint: https://api.poiskkino.dev/v1.4/movie (redirect с api.kinopoisk.dev).

*arr Stack — Индексеры (Prowlarr)

ID Имя Тип Примечание
1 RuTracker semi-private блокирует при rate limit на сутки
2 RuTor public поиск по imdbid
3 Byrutor public
4 NoNaMe Club semi-private анонимный
5 Kinozal semi-private резерв
6 Kinozal (M) semi-private магнет — без grab limit, предпочтительный

Pi-hole pitfall: блокирует skyhook.sonarr.tv → Sonarr/Radarr поиск молча не запускается. Фикс: dns: [8.8.8.8] в docker-compose.yml.

Router Script — Маршрутизация по жанру

После импорта Sonarr/Radarr: router.py --apply создаёт symlinks:

  • Animation (не R/18+) → /media/cartoons/ или /media/cartoons-series/
  • Documentary → /media/documentaries/ или /media/documentaries-series/
  • Прочее → /media/movies/ или /media/series/

Kopirует NFO + постер рядом с symlink (Jellyfin не видит метадату через symlink напрямую).

Open Tasks (2026-05-20)

  • 🟡 Передавать Transmission locations через router script при каждом импорте (сейчас вручную)
  • 🔴 rsync невыполненных фильмов с HTPC на Кракен (Фильмы не перенесенные с htpc на кракен.md)
  • 🟡 Watchlist sync-up: добавить перенесённые фильмы в нужные разделы

Pitfalls

Items added from Kinopoisk with full markdown link syntax [Title](https://kinopoisk.ru/film/12345/) (2025) were passed raw to TMDB search → not found → marked permanently (not i.ambiguous skips on next run). Fix: commit 2db1ed9 — extract plain title from markdown links before passing to TMDB. Items incorrectly marked require manual --recheck.

KP API Endpoint

api.kinopoisk.dev redirects to api.poiskkino.dev/v1.4/movie. Use the redirect destination directly to avoid DNS issues.

watchlist-sync — Python CLI

Репо: ~/Developer/watchlist-sync (GitHub: mallexxx/watchlist-sync).

watchlist-sync resolve   — TMDB + KP API → ID, тип (movie/tv)
watchlist-sync sync-down — добавить батч (max 5) в Radarr/Sonarr, поставить ⬇️
watchlist-sync sync-up   — Jellyfin watched → [x] в .md

Резолвер: TMDB /search/multi + KP fallback. Пороги: min_rating: 6.0, min_score: 0.75. При 2+ кандидатах → (LLM разрешает в cron каждые 6ч, нерешённые → уточнение в Zulip).

Stage 2 (после ≥50 просмотров): AI-curated recommendations — три списка (с женой / один / семья) на основе TMDB профиля, добавляются в конец watchlist как ## 🤖 Рекомендации (YYYY-WNN).

Jellyfin library mapping: Movies → movies, Cartoons → mixed (movies + episodes).

See Also