diff --git a/src/app/formats.rs b/src/app/formats.rs
index ab6b77f..2a877c4 100644
--- a/src/app/formats.rs
+++ b/src/app/formats.rs
@@ -111,12 +111,11 @@ fn read_id3<P: AsRef<Path>>(path: P) -> Result<SongMetadata, Error> {
 
 fn read_mp3<P: AsRef<Path>>(path: P) -> Result<SongMetadata, Error> {
 	let mut metadata = read_id3(&path)?;
-	let duration = {
+	metadata.duration = metadata.duration.or_else(|| {
 		mp3_duration::from_path(path)
 			.map(|d| d.as_secs() as u32)
 			.ok()
-	};
-	metadata.duration = duration;
+	});
 	Ok(metadata)
 }