hunch 2.0.1

A media filename parser for movies, TV, and anime — built in Rust, inspired by guessit
Documentation

🔍 Hunch

CI Crates.io Docs License

A fast, offline media filename parser for Rust — extract title, year, season, episode, codec, language, and 49 properties from messy filenames.

A Rust rewrite of Python's guessit. Pure, deterministic, single-binary, linear-time regex only (ReDoS-immune).

Quick Start

brew install lijunzh/hunch/hunch   # macOS/Linux
cargo install hunch                 # from source
cargo binstall hunch                # pre-built binary

CLI

$ hunch "The.Walking.Dead.S05E03.720p.BluRay.x264-DEMAND.mkv"
{
  "container": "mkv",
  "episode": 3,
  "release_group": "DEMAND",
  "screen_size": "720p",
  "season": 5,
  "source": "Blu-ray",
  "title": "The Walking Dead",
  "type": "episode",
  "video_codec": "H.264"
}

For batch parsing across a media library and cross-file context for ambiguous CJK / anime filenames, see the User Manual.

Library

use hunch::hunch;

let result = hunch("The.Walking.Dead.S05E03.720p.BluRay.x264-DEMAND.mkv");
assert_eq!(result.title(), Some("The Walking Dead"));
assert_eq!(result.season(), Some(5));
assert_eq!(result.episode(), Some(3));

Documentation

📖 Full documentation site: https://lijunzh.github.io/hunch

Document What's there
User Manual Install, CLI, library API, all 49 properties, batch parsing, cross-file context
guessit Compatibility Pass rates per property, methodology
Known Limitations Edge cases that remain difficult to handle
Migrating to v2.0.0 Breaking-change guide
Design Principles, architecture, key decisions
API Reference Full Rust API docs
Changelog Version history

Accuracy

Validated against guessit's upstream test suite — see the compatibility report for the live pass rate, regenerated from cargo test -- --ignored guessit_compat so it can't drift. Edge cases that remain difficult are documented under Known Limitations.