- BDMV раскладывается каталогом, VIDEO_TS и .iso уходят в review: DVD-каталог Jellyfin распознаёт, но не проигрывает - добавлены «Затрагивает» и критерии приёмки, задача проходит tasks.py ready
6.7 KiB
✨ Раскладывать раздачу-копию Blu-ray (BDMV) каталогом целиком
- Тип: feature
- Категория: Ядро продукта
- Зачем: раздача-образ Blu-ray разбирается пофайлово и едет в библиотеку россыпью .m2ts, а Jellyfin умеет такой каталог целиком
- Теги: goal:complex-releases
Иногда для очень редкого фильма качается не один видеофайл, а полная копия
диска — каталог BDMV/ (Blu-ray) или VIDEO_TS/ (DVD). Раскладка сегодня
сопоставляет источник цели пофайлово, поэтому такая раздача едет в библиотеку
россыпью: каждый .m2ts из BDMV/STREAM/ претендует на отдельный фильм или
серию. Станет наблюдаемо иначе: раздача с BDMV/ в корне попадает в библиотеку
одним элементом и играется, а раздача с VIDEO_TS/ или единственным .iso
уходит в ревью с названной причиной, а не раскладывается вслепую.
Что выяснено про Jellyfin (проверено 2026-08-10 по документации, исходникам резолвера и трекеру; развёрнута версия 10.11):
- BDMV работает. Сканер распознаёт папку с вложенным
BDMVкак один элемент (MovieResolver→VideoType.BluRay), прямое воспроизведение идёт. КаталогBDMVобязан быть непосредственным ребёнком папки фильма — то есть формаНазвание (Год) [tmdbid-…]/BDMV/…, которую мы и печатаем сейчас. - VIDEO_TS не играет. Элемент в библиотеке появляется, воспроизведение
падает или виснет много лет подряд (баг в
DvdLib); заведённые о нём задачи закрыты как устаревшие, в заметках 10.10 и 10.11 починки нет. Поэтому DVD раскладывать не будем: элемент, который не запускается, хуже честного ревью. - ISO вне поддержки по прямому заявлению документации Jellyfin.
- Ограничения, действующие и на рабочий BDMV: несколько версий, разбиение на части и внешние дорожки с субтитрами в дисковом каталоге не поддерживаются, а извлечение картиночных субтитров на лету из него сломано.
Затрагивает
layout.Planиlayout.PlanFile— публичные типы пакета: план сегодня это перечень файлов с ролями, дерево каталога-образа им не выражается;layout.Roleиlayout.Kind— роль файла образа и вид целевой ссылки;- таблица
file_linkи её миграция — если для образа заводится свой вид ссылки; - построение целевого пути в
layout— имя цели для файла образа задаётся его относительным путём внутриBDMV/, а не печатается из названия и года; - требование «Сопоставление источник → цель хардлинками» спеки
file-layout— оно сейчас говорит «для каждого распознанного файла (не каталога)»; - требование «Роли файлов на краях раздачи» спеки
recognition—.m2tsвнутриBDMV/не серии и не мусор; - переход в
reviewс новой причиной (spec recognition) — дляVIDEO_TSи.iso; - промпт распознавания, если признак образа снимается до обращения к LLM.
Критерии приёмки
- раздача с каталогом
BDMVв корне раскладывается зеркалом дерева: каждый файл подBDMV/получает хардлинк, а самBDMVоказывается непосредственным ребёнком папки фильма — оракул: тест раскладки на фикстуре дерева раздачи; - ни один
.m2tsизBDMV/STREAM/не попадает в план отдельным фильмом или серией — оракул: тест построения плана; - раздача с каталогом
VIDEO_TSв корне и раздача, где весь видеоматериал это.iso, уходят вreviewс причиной, называющей формат — оракул: тест перехода состояния плюс текст причины в карточке; - каждая цель дерева проходит существующую проверку «строго под библиотекой» —
оракул: тест на раздачу, где относительное имя файла содержит
...
Двигает «Завершение» цели в части «образ диска раскладывается без ручного вмешательства либо честно уходит в ревью с названной причиной».
Рамки
Исходная раздача не трогается — только чтение и link(2). Ремукс, распаковка
.iso и любое перекодирование в задачу не входят. Воспроизведение проверяется
человеком вручную на umbar: гейт против живого Jellyfin не ходит. Поддержка
внешних субтитров к дисковому каталогу не делается — её нет у самого Jellyfin.
Связано: openspec/specs/recognition/spec.md (роли файлов, переход в ревью),
openspec/specs/file-layout/spec.md (целевые имена фильма, сопоставление
хардлинками), пакеты recognize, layout.