Видео: 10-bit, DV и профиль DV из заголовка
docker / build (push) Successful in 5m30s

На nnm строка «Видео» не называет битность и HDR — они только в заголовке («[4K, HDR10, DV 8.1, 10-bit]»).
- bit_depth: если в строке «Видео» нет, ищется в заголовке
- «DV» считается Dolby Vision (\b не цепляет DVD/DVDRip)
- профиль из «DV 8.1», «DV P7», «DoVi P5»; только реальные профили, «DV 10-bit» — не профиль
- тесты: раздача nnm «В поисках Дори», DVDRip / DV 10-bit, DV P7

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
DenozordecandClaude Opus 5.5 committed 2026-11-06 19:02:37 +07:00
1 parent dc19fe6255
commit 3c42d2d4e2
2 files changed
+14 -3

No files matched your search

+6 -3
View File
@@ -51,8 +51,10 @@ RE_FPS = re.compile(r"(?i)(?<![\d.,])(\d{2,3}(?:[.,]\d{1,6})?)\s*(?:fps|кадр
RE_RATE = re.compile(r"(?i)(?<![\d.,xх×*])(?<![xх×*] )(\d{1,3}(?: \d{3})+|\d+)((?:[.,]\d+)?)\s*([kкmм])\s*(?:bps|bit|бит|b/[sсc])")
RE_DEPTH = re.compile(r"(?i)(?<![\d.,])(8|10|12)\s*-?\s*(?:bits?|бит)(?!\s*/)")
RE_DV_PROFILE = re.compile(r"(?i)dolby\s*vision[^/\n]{0,15}?profile\s*(\d+(?:\.\d+)?)|dvhe\.0?(\d+)")
# сокращение в заголовке: «DV 8.1», «DV P7», «DoVi P5»; только реальные профили, «DV 10-bit» — не профиль
RE_DV_SHORT = re.compile(r"(?i)\b(?:DV|DoVi)\s*(?:P|profile\s*)?([45789](?:\.[1-4])?)\b(?!\s*-?\s*bit)")
HDR_FLAGS = [ # (шаблон, флаг) — что нашли, в этом порядке и отдаём
(r"dolby\s*vision|\bDoVi\b", "Dolby Vision"),
(r"dolby\s*vision|\bDoVi\b|\bDV\b", "Dolby Vision"), # «DV» из заголовка; \b не цепляет DVD/DVDRip
(r"HDR10\+|HDR10\s*plus", "HDR10+"),
(r"HDR10(?!\+|\s*plus)|SMPTE\s*ST\s*2086", "HDR10"),
(r"\bHLG\b", "HLG"),
@@ -107,8 +109,9 @@ def video_info(text: str, title: str = "") -> dict | None:
size = RE_SIZE.search(src) or RE_SIZE.search(extra)
width, height = (int(size.group(1)), int(size.group(2))) if size else (None, None)
fps = RE_FPS.search(src)
depth = RE_DEPTH.search(src)
dv = RE_DV_PROFILE.search(src) or RE_DV_PROFILE.search("\n".join(_field(text, r"HDR\s*format")))
depth = RE_DEPTH.search(src) or RE_DEPTH.search(title or "") # nnm: «10-bit» бывает только в заголовке
dv = (RE_DV_PROFILE.search(src) or RE_DV_PROFILE.search("\n".join(_field(text, r"HDR\s*format")))
or RE_DV_SHORT.search(src) or RE_DV_SHORT.search(title or ""))
hdr = hdr_flags(src, *_field(text, r"HDR\s*format"), release_quality(text), title)
return {
"codec": codec,