Magika-backed MIME detector integration for qubit-mime.
Overview
Qubit Magika provides MagikaMimeDetector, a qubit_mime::MimeDetector implementation backed by Google's Magika model. It keeps Magika and ONNX Runtime dependencies outside qubit-mime, while still allowing applications to register Magika as a detector provider.
The crate enables bundled-onnxruntime by default so ordinary builds can link and run without a separately installed ONNX Runtime. Disable default features if your application provides ONNX Runtime through another linking strategy.
Installation
[dependencies]
qubit-config = "0.12"
qubit-mime = "0.3"
qubit-magika = "0.6"
Quick Start
use qubit_magika::MagikaMimeDetectorProvider;
use qubit_mime::{
CONFIG_MIME_DETECTOR_DEFAULT,
MimeConfig,
MimeDetectorRegistry,
MimeError,
};
fn main() -> Result<(), MimeError> {
MimeDetectorRegistry::register_default(MagikaMimeDetectorProvider)?;
let mut raw_config = qubit_config::Config::new();
raw_config.set(CONFIG_MIME_DETECTOR_DEFAULT, "magika")?;
let config = MimeConfig::from_config(&raw_config)?;
let detector = MimeDetectorRegistry::default_registry()?.create_default_box(&config)?;
let mime_type = detector.detect_by_content(b"#!/usr/bin/env python3\nprint('hello')\n");
assert_eq!(Some("text/x-python".to_owned()), mime_type);
Ok(())
}
Provider Names
magikamagika-mime-detectorMagikaMimeDetector
Notes
MagikaMimeDetector delegates filename-only detection to qubit_mime::RepositoryMimeDetector. Content, reader, and file detection use Magika inference, then return Magika's MIME type mapping.