def main(): print(f"π Scanning: SEASON_PATH") mkv_files = sorted(SEASON_PATH.glob("*.mkv")) if not mkv_files: print("β No MKV files found.") return
def check_hevc_bitdepth(filepath): """Use ffprobe to verify 10bit x265.""" cmd = [ "ffprobe", "-v", "error", "-select_streams", "v:0", "-show_entries", "stream=codec_name,profile,pix_fmt", "-of", "json", str(filepath) ] try: data = json.loads(subprocess.check_output(cmd, text=True)) stream = data["streams"][0] is_10bit = stream["pix_fmt"] in ("yuv420p10le", "yuv422p10le", "yuv444p10le") is_x265 = stream["codec_name"] == "hevc" return is_x265 and is_10bit except: return False Game of Thrones Season 5 -1080p x265 10bit Joy-
def fix_subtitle_delay(mkv_file): """Remux with subtitle delay (requires mkvtoolnix).""" temp_file = mkv_file.with_suffix(".fixed.mkv") cmd = [ "mkvmerge", "-o", str(temp_file), "--sync", f"0:KNOWN_SUB_DELAY_MS", str(mkv_file) ] print(f" Fixing subs: mkv_file.name") subprocess.run(cmd, check=True, capture_output=True) os.replace(temp_file, mkv_file) # overwrite original print(f" β Fixed") Game of Thrones Season 5 -1080p x265 10bit Joy-