Crate scanseq

Crate scanseq 

Source
Expand description

§ScanSeq - High-Performance File Sequence Detection

Fast, Rust-powered library and Python extension for detecting numbered file sequences. Designed for VFX, animation, and media production pipelines.

§Crate Structure

scanseq (lib.rs)
├── core/           - Pure Rust sequence detection engine
│   ├── mod.rs      - Module exports (Scanner, Seq, get_seqs)
│   ├── file/       - File parsing, digit groups, mask generation
│   ├── seq/        - Sequence grouping algorithm
│   └── scan.rs     - Parallel directory scanning
└── Python bindings (feature = "python")

§Features

  • python: Enables PyO3 bindings for Python integration
    • Build with: maturin develop --features python
    • Or: cargo build --features python

§Rust API

use scanseq::core::Scanner;

let scanner = Scanner::new(vec!["/renders"], true, Some("*.exr"), 2);
for seq in scanner.iter() {
    println!("{} [{}-{}]", seq.pattern(), seq.start, seq.end);
}

§Python API

import scanseq

scanner = scanseq.Scanner(["/renders"], recursive=True, mask="*.exr")
for seq in scanner.result.seqs:
    print(f"{seq.pattern} [{seq.start}-{seq.end}]")

§Algorithm Overview

  1. Scan: Discover directories using jwalk (parallel)
  2. Parse: Extract digit groups from filenames, create masks
  3. Group: Hash by mask (e.g., render_@.exr), sub-group by anchors
  4. Detect: Find frame numbers, compute padding, identify gaps

See core module for detailed algorithm documentation.

Modules§

core
Core sequence detection engine.