use vid_dup_finder_lib::*;
pub fn main() {
inner()
}
#[test]
fn test() {
inner()
}
fn inner() {
let cat_vids = &[
"examples/vids/cat.1.mp4",
"examples/vids/cat.2.mp4",
"examples/vids/cat.3.webm",
];
let dog_vids = &[
"examples/vids/dog.1.mp4",
"examples/vids/dog.2.mp4",
"examples/vids/dog.3.webm",
];
let all_vids = cat_vids
.iter()
.chain(dog_vids.iter())
.map(|vid| std::env::current_dir().unwrap().join(vid));
let hashes: Vec<VideoHash> = all_vids
.filter_map(|ref fname| {
println!("Loading {}", fname.to_string_lossy());
match VideoHash::from_path(fname) {
Ok(hash) => Some(hash),
Err(e) => {
println!("failed to create hash from {}. Error: {}.", fname.to_string_lossy(), e);
panic!()
}
}
})
.collect();
let tol = NormalizedTolerance::default();
let dup_groups = search(hashes, tol);
println!("found {} duplicate groups", dup_groups.len());
for (i, dup_group) in dup_groups.iter().enumerate() {
println!("\nGroup: {}, entries: {}", i, dup_group.len());
for entry in dup_group.duplicates() {
println!(" {}", entry.display())
}
}
assert_eq!(dup_groups.len(), 2);
assert_eq!(dup_groups[0].len(), 3);
assert_eq!(dup_groups[1].len(), 3);
}