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
- Build with:
§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
- Scan: Discover directories using jwalk (parallel)
- Parse: Extract digit groups from filenames, create masks
- Group: Hash by mask (e.g.,
render_@.exr), sub-group by anchors - Detect: Find frame numbers, compute padding, identify gaps
See core module for detailed algorithm documentation.
Modules§
- core
- Core sequence detection engine.