use exiftool::{ExifTool, ExifToolError};
use std::path::Path;
const IMAGE_PATH: &str = "data/image.jpg";
fn main() -> Result<(), ExifToolError> {
let et = ExifTool::new()?;
let path = Path::new(IMAGE_PATH);
let make_json = et.json_tag(path, "Make", &[])?;
println!("Make (JSON): {make_json}");
let model: String = et.read_tag(path, "Model", &[])?;
println!("Model (String): {model}");
let width_opt: Option<u32> = et.read_tag(path, "ImageWidth", &[])?;
println!("Width (Option<u32>): {width_opt:?}");
let comment_opt: Option<String> = et.read_tag(path, "NonExistentTag", &[])?;
println!("NonExistentTag (Option<String>): {comment_opt:?}");
match et.read_tag::<String>(path, "NonExistentTag", &[]) {
Err(ExifToolError::TagNotFound { tag, .. }) => {
println!("Correctly failed to read required tag '{tag}': TagNotFound");
}
_ => panic!("Expected TagNotFound!"),
}
Ok(())
}