На 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:
1 parent
dc19fe6255
commit
3c42d2d4e2
2 files changed
+14
-3
No files matched your search
+6
-3
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user