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]] [[package]]
name = "jelly-dedup" name = "jelly-dedup"
version = "0.1.0" version = "0.1.1"
dependencies = [ dependencies = [
"clap", "clap",
"dotenv", "dotenv",
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "jelly-dedup" name = "jelly-dedup"
version = "0.1.0" version = "0.1.1"
edition = "2024" edition = "2024"
[dependencies] [dependencies]
+9 -2
View File
@@ -163,12 +163,19 @@ pub fn print_duplicate_movies(movie_groups: Vec<Vec<Movie>>) -> Vec<FileToDelete
println!("{}", "-".repeat(80)); println!("{}", "-".repeat(80));
println!(" Multiple copies found: {}\n", movie_group.len()); 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 all_sources: Vec<MediaSource> = Vec::new();
let mut seen_paths: std::collections::HashSet<String> = std::collections::HashSet::new();
for movie in &movie_group { for movie in &movie_group {
if let Some(media_sources) = &movie.media_sources { if let Some(media_sources) = &movie.media_sources {
for source in media_sources { for source in media_sources {
all_sources.push(source.clone()); // 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());
}
}
} }
} }
} }