zantetsu-core 0.2.0

Heuristic anime metadata extraction and normalization engine
Documentation

zantetsu-core

Heuristic anime metadata extraction and normalization engine.

Part of the zantetsu crate family.

What it does

zantetsu-core parses anime release filenames into structured metadata — title, episode number, group tag, resolution, codecs, source, and more — using a fast regex-based heuristic engine. No machine learning, no network calls, no runtime downloads.

Install

[dependencies]
zantetsu-core = "0.2"

Requires Rust 1.85+.

Quick start

use zantetsu_core::parser::HeuristicParser;

let parser = HeuristicParser::new().unwrap();
let result = parser
    .parse("[SubsPlease] Jujutsu Kaisen - 24 (1080p) [A1B2C3D4].mkv")
    .unwrap();

assert_eq!(result.title.as_deref(), Some("Jujutsu Kaisen"));
assert_eq!(result.group.as_deref(), Some("SubsPlease"));
println!("{:?}", result.resolution); // Some(Resolution::P1080)

API overview

Item Description
HeuristicParser Main parser — call HeuristicParser::new() then .parse(filename)
Parser Unified wrapper around HeuristicParser with ParserConfig support
ParseResult Structured parse output
EpisodeSpec Single(u32), Range(u32, u32), Special(f32)
Resolution P480, P720, P1080, P2160, P4320
VideoCodec H264, H265, AV1, VP9, …
AudioCodec AAC, AC3, FLAC, Opus, …
MediaSource BluRay, WebDL, HDTV, …
QualityProfile / QualityScores Score a ParseResult against a configurable quality profile

What is parsed

Given a filename like:

[Erai-raws] Frieren - Beyond Journey's End - 01 [1080p][HEVC][AAC][Multi-Sub].mkv

zantetsu-core extracts:

  • Group: Erai-raws
  • Title: Frieren - Beyond Journey's End
  • Episode: Single(1)
  • Resolution: 1080p
  • Video codec: H265 (HEVC)
  • Audio codec: AAC
  • Confidence score: 0.0–1.0

Error handling

All public functions return Result<T, ZantetsuError>. Errors are typed and implement std::error::Error via thiserror.

use zantetsu_core::error::ZantetsuError;

match parser.parse("") {
    Err(ZantetsuError::EmptyInput) => eprintln!("empty filename"),
    Err(e) => eprintln!("parse error: {e}"),
    Ok(r) => println!("{r:?}"),
}

Related crates

Crate Purpose
zantetsu Unified façade — start here
zantetsu-vecdb Canonical title matching

License

MIT