fix: movies getting coellesed sometimes would select all for deletion

This commit is contained in:
Lucas Oskorep
2025-12-09 11:22:28 -05:00
parent 8123bb8846
commit 5a000b2431
3 changed files with 11 additions and 4 deletions
Generated
+1 -1
View File
@@ -651,7 +651,7 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
[[package]]
name = "jelly-dedup"
version = "0.1.0"
version = "0.1.1"
dependencies = [
"clap",
"dotenv",
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "jelly-dedup"
version = "0.1.0"
version = "0.1.1"
edition = "2024"
[dependencies]
+8 -1
View File
@@ -163,15 +163,22 @@ pub fn print_duplicate_movies(movie_groups: Vec<Vec<Movie>>) -> Vec<FileToDelete
println!("{}", "-".repeat(80));
println!(" Multiple copies found: {}\n", movie_group.len());
// Collect all media sources from all movies
// Collect all media sources from all movies and deduplicate by path
let mut all_sources: Vec<MediaSource> = Vec::new();
let mut seen_paths: std::collections::HashSet<String> = std::collections::HashSet::new();
for movie in &movie_group {
if let Some(media_sources) = &movie.media_sources {
for source in media_sources {
// Only add if we haven't seen this path before
if let Some(path) = &source.path {
if seen_paths.insert(path.clone()) {
all_sources.push(source.clone());
}
}
}
}
}
if !all_sources.is_empty() {
let to_delete = print_movie_versions(&first_movie.name, &all_sources);