Files
jellybit/tasks/items/disc-image-releases.md
T
av 5992d75b57 задачи: переписана disc-image-releases под проверенное поведение Jellyfin
- BDMV раскладывается каталогом, VIDEO_TS и .iso уходят в review: DVD-каталог
  Jellyfin распознаёт, но не проигрывает
- добавлены «Затрагивает» и критерии приёмки, задача проходит tasks.py ready
2026-08-10 20:12:06 +03:00

6.7 KiB
Raw Blame History

Раскладывать раздачу-копию 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 как один элемент (MovieResolverVideoType.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.