Skip to content

vsmuxtools.video.resumable

get_resume_parts

get_resume_parts(output: Path) -> tuple[list[Path], list[int], int]

Collect matching parts and their retained lengths, excluding an incomplete final part.

Source code in vsmuxtools/video/resumable.py
def get_resume_parts(output: Path) -> tuple[list[Path], list[int], int]:
    """Collect matching parts and their retained lengths, excluding an incomplete final part."""
    pattern = output.with_stem(output.stem + "_part_???")
    candidates = sorted(pattern.parent.glob(pattern.name))
    parts, keyframes = [], []
    for index, part in enumerate(candidates):
        if part.stem != f"{output.stem}_part_{index:03d}":
            raise error(f"Missing resume part {index:03d} before {part.name}.", get_resume_parts)
        try:
            keyframe = parse_keyframes(part)[-1]
        except Exception:
            keyframe = 0
        if keyframe:
            parts.append(part)
            keyframes.append(keyframe)
        elif index != len(candidates) - 1:
            raise error(f"Incomplete resume part {part.name} precedes another part.", get_resume_parts)
    return parts, keyframes, len(parts)