hunch 2.0.2

A media filename parser for movies, TV, and anime — built in Rust, inspired by guessit
Documentation
# Position-dependent Other patterns (zone_scope = tech_only).
#
# These tokens are ambiguous — they can be metadata OR title words
# depending on their position in the filename. Zone filtering suppresses
# them in the title zone, preventing false positives like "Proof"
# (the TV show) or "3D" (in movie titles).
property = "other"
zone_scope = "tech_only"

[exact]
proof       = "Proof"
sample      = "Sample"

[exact_sensitive]
LiNE  = "Line Audio"

[[patterns]]
# DV (Dolby Vision) — short, ambiguous
match = '(?i)^dv$'
value = "Dolby Vision"
not_before = ["d", "b", "r"]

[[patterns]]
# HD (standalone) — not when adjacent to DTS, TV, CAM, etc.
match = '(?i)^hd$'
value = "HD"
not_before = ["tv", "dvd", "cam", "rip", "tc", "ts"]
not_after = ["dts"]

[[patterns]]
# HR (High Resolution)
match = '(?i)^hr$'
value = "High Resolution"

[[patterns]]
# MD (Mic Dubbed)
match = '(?i)^md$'
value = "Mic Dubbed"

[[patterns]]
# RC (Region C)
match = '(?i)^rc$'
value = "Region C"

[[patterns]]
# FIX (standalone) — must be surrounded by known tech tokens on BOTH sides.
# "DVD.fix.XViD" → match; "DVD.Fix" / "Fix.XViD" → no match.
match = '(?i)^fix$'
value = "Fix"
requires_before = ["dvd", "dvdr", "bd", "bluray", "bdrip", "brrip", "dvdrip", "webrip", "hdrip", "hdtv", "web", "webdl", "cam", "ts", "tc", "vhs", "screener", "scr", "pdtv", "sdtv", "dsr", "aac", "ac3", "dts", "flac", "mp3", "pcm", "truehd", "atmos", "eac3", "pal", "ntsc", "secam", "proper", "repack", "remux", "hdr", "hdr10", "sdr", "dubbed", "proof", "sample"]
requires_after = ["xvid", "divx", "x264", "x265", "h264", "h265", "hevc", "avc", "av1", "aac", "ac3", "dts", "flac", "mp3", "pcm", "truehd", "atmos", "eac3", "bluray", "bdrip", "brrip", "dvdrip", "webrip", "hdrip", "hdtv", "dvd", "dvdr", "bd", "web", "webdl", "cam", "ts", "tc", "vhs", "screener", "scr", "pdtv", "sdtv", "dsr", "pal", "ntsc", "secam", "proper", "repack", "remux", "hdr", "hdr10", "sdr"]

[[patterns]]
# iTunes HD
match = '(?i)^itunes[- .]?hd$'
value = "HD"

[[patterns]]
# Side-by-Side / Half-SBS (3D variant)
match = '(?i)^(?:half[- .]?)?sbs$'
value = "3D"

[[patterns]]
# Over-Under / Half-OU (3D variant)
match = '(?i)^(?:half[- .]?)?ou$'
value = "3D"