Handle missing display_aspect_ratio and movies differing only in case.
This commit is contained in:
parent
4d0ce2cd13
commit
da717aeae1
@ -149,7 +149,7 @@ enum Stream {
|
|||||||
codec_long_name: String,
|
codec_long_name: String,
|
||||||
coded_height: usize,
|
coded_height: usize,
|
||||||
coded_width: usize,
|
coded_width: usize,
|
||||||
display_aspect_ratio: String,
|
display_aspect_ratio: Option<String>,
|
||||||
#[serde(default, deserialize_with = "from_str")]
|
#[serde(default, deserialize_with = "from_str")]
|
||||||
duration: f32,
|
duration: f32,
|
||||||
height: usize,
|
height: usize,
|
||||||
@ -376,7 +376,10 @@ impl Movies {
|
|||||||
let mut movie_counter = HashMap::new();
|
let mut movie_counter = HashMap::new();
|
||||||
for m in &self.movies {
|
for m in &self.movies {
|
||||||
let (path, _cmd) = m.files.first().unwrap();
|
let (path, _cmd) = m.files.first().unwrap();
|
||||||
let parent = clean_path_parent(path).to_string_lossy().to_string();
|
let parent = clean_path_parent(path)
|
||||||
|
.to_string_lossy()
|
||||||
|
.to_ascii_lowercase()
|
||||||
|
.to_string();
|
||||||
movie_counter.entry(parent).or_insert(Vec::new()).push(m);
|
movie_counter.entry(parent).or_insert(Vec::new()).push(m);
|
||||||
}
|
}
|
||||||
let mut dupes = Vec::new();
|
let mut dupes = Vec::new();
|
||||||
|
|||||||
@ -37,7 +37,7 @@ fn test_simple_library() {
|
|||||||
short_name: "mp3".to_string(),
|
short_name: "mp3".to_string(),
|
||||||
long_name: "MP3 (MPEG audio layer 3)".to_string(),
|
long_name: "MP3 (MPEG audio layer 3)".to_string(),
|
||||||
channels: 2,
|
channels: 2,
|
||||||
channel_layout: "stereo".to_string(),
|
channel_layout: Some("stereo".to_string()),
|
||||||
title: None,
|
title: None,
|
||||||
language: None,
|
language: None,
|
||||||
}],
|
}],
|
||||||
@ -116,6 +116,16 @@ fn build_complex_metadata() -> HashMap<String, CompactMetadata> {
|
|||||||
(1920, 1080),
|
(1920, 1080),
|
||||||
5000,
|
5000,
|
||||||
),
|
),
|
||||||
|
build_tuple(
|
||||||
|
"two movies different caps (2019)/abcdef123456789.mkv",
|
||||||
|
(1920, 1080),
|
||||||
|
100,
|
||||||
|
),
|
||||||
|
build_tuple(
|
||||||
|
"Two Movies Different Caps (2019)/abcdef123456789.mkv",
|
||||||
|
(640, 480),
|
||||||
|
1,
|
||||||
|
),
|
||||||
]
|
]
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.collect()
|
.collect()
|
||||||
@ -158,6 +168,16 @@ fn build_complex_movies() -> Movies {
|
|||||||
(1920, 1080),
|
(1920, 1080),
|
||||||
5000,
|
5000,
|
||||||
)]),
|
)]),
|
||||||
|
build_movie(vec![(
|
||||||
|
"two movies different caps (2019)/abcdef123456789.mkv",
|
||||||
|
(1920, 1080),
|
||||||
|
100,
|
||||||
|
)]),
|
||||||
|
build_movie(vec![(
|
||||||
|
"Two Movies Different Caps (2019)/abcdef123456789.mkv",
|
||||||
|
(640, 480),
|
||||||
|
1,
|
||||||
|
)]),
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
m.movies.sort_by(|a, b| {
|
m.movies.sort_by(|a, b| {
|
||||||
@ -200,25 +220,39 @@ fn validate_duplicates(got: Vec<(&Movie, Vec<&Movie>)>, want: Vec<(Movie, Vec<Mo
|
|||||||
fn test_duplicate_candidates() -> Result<(), Box<dyn Error>> {
|
fn test_duplicate_candidates() -> Result<(), Box<dyn Error>> {
|
||||||
let movies = build_complex_movies();
|
let movies = build_complex_movies();
|
||||||
let got = movies.duplicate_candidates();
|
let got = movies.duplicate_candidates();
|
||||||
let want = vec![(
|
let want = vec![
|
||||||
build_movie(vec![(
|
(
|
||||||
"Two Movies With Multi Parts (2019)/somethingelse.mkv",
|
build_movie(vec![(
|
||||||
(1920, 1080),
|
"Two Movies With Multi Parts (2019)/somethingelse.mkv",
|
||||||
5000,
|
(1920, 1080),
|
||||||
)]),
|
5000,
|
||||||
vec![build_movie(vec![
|
)]),
|
||||||
(
|
vec![build_movie(vec![
|
||||||
"Two Movies With Multi Parts (2019)/abcdef123456789 part 1.mkv",
|
(
|
||||||
(1280, 720),
|
"Two Movies With Multi Parts (2019)/abcdef123456789 part 1.mkv",
|
||||||
1000,
|
(1280, 720),
|
||||||
),
|
1000,
|
||||||
(
|
),
|
||||||
"Two Movies With Multi Parts (2019)/abcdef123456789 part 2.mkv",
|
(
|
||||||
(1280, 720),
|
"Two Movies With Multi Parts (2019)/abcdef123456789 part 2.mkv",
|
||||||
1000,
|
(1280, 720),
|
||||||
),
|
1000,
|
||||||
])],
|
),
|
||||||
)];
|
])],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
build_movie(vec![(
|
||||||
|
"two movies different caps (2019)/abcdef123456789.mkv",
|
||||||
|
(1920, 1080),
|
||||||
|
100,
|
||||||
|
)]),
|
||||||
|
vec![build_movie(vec![(
|
||||||
|
"Two Movies Different Caps (2019)/abcdef123456789.mkv",
|
||||||
|
(640, 480),
|
||||||
|
1,
|
||||||
|
)])],
|
||||||
|
),
|
||||||
|
];
|
||||||
validate_duplicates(got, want);
|
validate_duplicates(got, want);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user