73 lines
4.1 KiB
Markdown
73 lines
4.1 KiB
Markdown
# Распознавание контента
|
||
|
||
## Задача
|
||
|
||
По доступным сигналам определить: это фильм или сериал; каноническое
|
||
название и год; для сериала — сезон и соответствие файлов сериям; при
|
||
включённых базах — provider-id. На выходе — план раскладки и оценка
|
||
уверенности.
|
||
|
||
## Сигналы
|
||
|
||
- Имя торрента и структура каталогов.
|
||
- Список файлов с размерами и расширениями.
|
||
- Текстовый контекст от человека.
|
||
- Распарсенное сообщение торрент-бота (если пришло через Telegram):
|
||
название с годом, качество, переводы, magnet — см. пример в
|
||
[BRIEF.md](../../BRIEF.md).
|
||
|
||
## Конвейер
|
||
|
||
1. **Пред-парс** имени релиза дешёвым парсером (`go-ptn`): черновые
|
||
название/год/сезон/серия и качество. Грубо, но бесплатно.
|
||
2. **LLM** (Anthropic, structured output): получает все сигналы и
|
||
пред-парс, возвращает структурированный план. Хорошо справляется с
|
||
русскими релиз-именами, чего не умеет парсер.
|
||
3. **Сверка с базой** (опц., если включена TMDB/TVDB): подтверждаем
|
||
название+год, берём официальный id и каноническое имя.
|
||
4. **Оценка уверенности** и решение: авто-раскладка или ревью.
|
||
|
||
## Структура ответа LLM (черновик)
|
||
|
||
```
|
||
type movie | series
|
||
title каноническое название
|
||
original_title оригинальное название (если есть)
|
||
year год
|
||
season номер сезона (для сериала)
|
||
provider_hint подсказка для поиска в базе
|
||
files[] { src, role: main|episode|subtitle|extra|sample,
|
||
season?, episode? }
|
||
confidence 0..1 — самооценка модели по полям
|
||
notes пояснения, неоднозначности
|
||
```
|
||
|
||
## Модель уверенности
|
||
|
||
Авто-раскладка только если выполнено всё:
|
||
|
||
1. **Самооценка LLM** ≥ порога (`recognition.auto_confidence_threshold`).
|
||
2. **Совпадение с базой** (если включена) — единственный сильный матч по
|
||
названию+году.
|
||
3. **Структурная валидация** проходит без предупреждений:
|
||
- фильм: ровно один основной видеофайл (семплы/экстра отброшены);
|
||
- сериал: число серий бьётся с базой (если есть), нумерация S·E
|
||
консистентна, без пропусков и дублей.
|
||
|
||
Иначе план уходит в **review**. На экране подтверждения всегда видно,
|
||
*почему* не авто — это страховка на дорогих файлах.
|
||
|
||
## Что делаем с краёв
|
||
|
||
- Семплы и «экстра» отбрасываем (эвристики по размеру/имени + LLM).
|
||
- Внешние субтитры (`.srt`, `.ass`) привязываем к видео и именуем по
|
||
Jellyfin (`*.ru.srt`).
|
||
- Сезон-паки разбираем по сериям; аниме с абсолютной нумерацией —
|
||
отдельный крайний случай, см. [drafts/ideas.md](../drafts/ideas.md).
|
||
|
||
## На будущее
|
||
|
||
`go-ptn` слабее питоновского `guessit`. Если точности пред-парса не
|
||
хватит — завернуть `guessit` лёгким сервисом-спутником (один файл рядом
|
||
с бинарём). См. [drafts/ideas.md](../drafts/ideas.md).
|