Шаблони каталогів
До змісту документації · Схема пакета · Імпорт і очищення
Шаблони серіалів перевіряються раніше за наведені нижче шаблони фільмів. Дивіться імпорт серіалів.
Виявлення каталогів починається після звичайних файлів. Кандидатами є лише безпосередні дочірні каталоги джерела. Кожен рекурсивно сканується командою find -ls; каталог призначення виключено. Для зіставлення з шаблонами підтримуваний медіафайл має бути більшим за 100 MiB.
flowchart TD
Start["Наступний дочірній каталог за наявності місця в пакеті"] --> Scan["Отримати find -ls і метадані файлів рекурсивно"]
Scan --> Filter["Вибрати підтримувані медіафайли понад 100 MiB"]
Filter --> Two{"Рівно два придатні медіафайли?"}
Two -->|Так| Years{"Обидва мають роки у назвах і вони різні?"}
Years -->|Ні| Parts["Фільм із двох частин"]
Years -->|Так| Separate["Окремі фільми з роками"]
Two -->|Ні| Many{"Є придатні фільми поза додатковими матеріалами?"}
Many -->|Так| Separate
Many -->|Ні| Leave["Залишити каталог без змін"]
Parts --> PartsLLM["DirectoryContextTwoParts: назва, рік, впевненість, порядок частин"]
Separate --> HasYear{"У назві цього фільму є рік?"}
HasYear -->|Так| SingleLLM["Звичайний діалог для одного файлу"]
HasYear -->|Ні| YearLLM["Повний find -ls: визначити рік або вибрати No year"]
PartsLLM --> Subtitles["Детерміновано зіставити SRT"]
SingleLLM --> Subtitles
YearLLM --> Subtitles
Subtitles --> Unique{"Субтитри пов'язані однозначно?"}
Unique -->|Так| Keep["Зберегти пару субтитрів і відео"]
Unique -->|Ні| Unresolved["Записати unresolved_srt; не чіпати субтитри"]
Keep --> Matching["Продовжити зіставлення TMDB та імпорт"]
Unresolved --> Matching
Зв’язки субтитрів визначаються ще під час виявлення, до діалогів із моделлю. На схемі їх винесено після обох гілок, бо правила однакові. Номери частин призначаються після діалогу для двох частин.
Рік розпізнається на початку або в кінці основи назви файлу, перед розширенням, із підтримуваними роздільниками чи дужками. Два файли з однаковим роком проходять як дві частини. Так само, якщо року немає в одного чи обох. Різні роки виключають шаблон двох частин.
Окремі фільми всередині каталогів теж вибираються. Колекції, що не відповідають шаблонам серіалів чи двох частин, обробляються як окремі фільми, навіть без років у назвах. Відомі додаткові матеріали, зразки, трейлери та короткі сюжети не входять до цього маршруту. Увесь каталог усе одно займає одне місце в пакеті.
Лише вибраний фільм без розпізнаного року запускає діалог про відсутній рік. LLM отримує призначену назву файлу та повний find -ls, включно з іншими файлами, що можуть підказувати рік випуску. Вона повертає назву, припущений рік або No year (null), і впевненість. Часові позначки файлової системи не вважаються доказом року випуску.
Потім R3el шукає в TMDB за назвою і припущеним роком або без року, якщо LLM вибрала No year. Пошук із роком та рівно одним результатом переходить до імпорту. Інакше результати й список файлів із датами випуску кандидатів передаються LLM для окремого вибору. Пошук без року завжди використовує цей крок, навіть за одного чи нуля результатів. Модель може вибрати відсутність відповідності; невирішені елементи залишаються видимими. Звичайні повтори при нульовому результаті й пошук сусідніх років тут не застосовуються.
Зіставлення SRT спочатку шукає відповідну основу назви в тій самій папці, потім унікальну основу деінде в просканованому каталозі. Якщо назви різні, один відеофайл і один SRT у тій самій папці також можуть утворити пару. Кілька субтитрів до одного відео неоднозначні, адже нові імена зіткнуться. Такі випадки позначаються unresolved_srt; LLM не зіставляє субтитри.
Пріоритет форматів описано в іменуванні файлів. Поріг розміру використовується лише для виявлення; очищення перевіряє всі підтримувані медіафайли незалежно від розміру в усьому дереві джерела.