diff --git a/family/projects/media-toolbox-kraken.md b/family/projects/media-toolbox-kraken.md index c6975ad3..42864790 100644 --- a/family/projects/media-toolbox-kraken.md +++ b/family/projects/media-toolbox-kraken.md @@ -300,6 +300,75 @@ docker run --rm ... media-pipeline:kraken \ `Karnavalnaya.noch.1956.BDRip.AVC.mkv` — есть в uTorrent и в Transmission на Кракене (`downloaded=0`). Файла нет нигде — **никогда не скачивался**. +## Router script: Sonarr/Radarr → правильная библиотека Jellyfin + +**Задача:** после импорта Sonarr/Radarr создать symlink в нужную папку Jellyfin на основе жанра/рейтинга. Sonarr/Radarr кладут файлы в `movies-radarr/` и `series-sonarr/` — Jellyfin видит только эти папки. Роутер создаёт symlinks в тематические библиотеки чтобы Jellyfin показывал правильную структуру. + +### Логика маршрутизации + +``` +Входные папки: + /media/movies-radarr/ → фильмы + /media/series-sonarr/ → сериалы + +Для каждого тайтла читаем NFO (или TMDb API): + - genres[] + - content_rating (R / 18+ / TV-MA / PG / etc.) + - type (movie / series) + +Алгоритм (приоритет сверху вниз): + + IF documentary IN genres: + movie → /media/documentaries/ + series → /media/documentaries-series/ + + ELIF animation IN genres AND rating NOT IN [R, 18+, TV-MA]: + movie → /media/cartoons/ + series → /media/cartoons-series/ + + ELSE (default): + movie → /media/movies/ + series → /media/series/ +``` + +Movies и Series — финальный fallback, если не попало в другие категории. + +### Что делает скрипт + +1. Сканирует `movies-radarr/` и `series-sonarr/` +2. Для каждого тайтла читает `movie.nfo` / `tvshow.nfo` → жанры + рейтинг +3. Если NFO нет → запрос TMDb API по имени папки +4. Определяет целевую папку по алгоритму выше +5. Создаёт symlink: `ln -s /media/movies-radarr/X /media/movies/X` +6. Копирует NFO + постер рядом с symlink (Jellyfin не видит метадату через symlink) +7. Тригерит Jellyfin rescan нужной библиотеки + +### Запуск + +- **При добавлении**: вызывается из Sonarr/Radarr → Settings → Connect → Custom Script +- **Полный пересчёт**: `router.py --rescan-all` + +### Что НЕ делает + +- Не трогает файлы в `movies-radarr/` и `series-sonarr/` +- Не удаляет старые symlinks без `--cleanup` +- Не переименовывает торренты + +### Jellyfin библиотеки (целевые) + +| Библиотека | Тип | Пути | +|---|---|---| +| Movies | movies | `/media/movies` + `/media/movies-radarr` | +| Series | tvshows | `/media/series` + `/media/series-sonarr` | +| Cartoons | movies | `/media/cartoons` | +| Cartoon Series | tvshows | `/media/cartoons-series` | +| Documentaries | movies | `/media/documentaries` | +| Documentary Series | tvshows | `/media/documentaries-series` | + +Порядок в Jellyfin UI: Movies → Series → Cartoons → Cartoon Series → Documentaries → Documentary Series → Music + +--- + ## *arr стек (Prowlarr / Radarr / Sonarr) — настройка 2026-05-17 ### Архитектура