From e6e9b63f9cb7576c74680b919dff7e83dfde5852 Mon Sep 17 00:00:00 2001 From: salmonik Date: Wed, 27 May 2026 20:52:27 +0200 Subject: fix no metadata songs handling format string is no longer used to represent songs that have insufficient metadata to fullfill the format string --- src/queue.rs | 11 +++++++++++ tests/queue.rs | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/queue.rs b/src/queue.rs index 1742a00..3c1c6fa 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -155,6 +155,17 @@ impl Track { } pub fn format(&self, format_str: &str) -> String { + let has_metadata = self.artist.as_ref().is_some_and(|a| !a.is_empty()) + || self.album.as_ref().is_some_and(|a| !a.is_empty()); + if !has_metadata { + return self.title.clone().unwrap_or_else(|| { + self.path + .file_name() + .and_then(|n| n.to_str()) + .unwrap_or("Unknown") + .to_string() + }); + } let artist = self.artist.clone().unwrap_or_default(); let album = self.album.clone().unwrap_or_default(); let title = self.title.clone().unwrap_or_else(|| { diff --git a/tests/queue.rs b/tests/queue.rs index 5f4d853..59311d2 100644 --- a/tests/queue.rs +++ b/tests/queue.rs @@ -275,7 +275,7 @@ fn test_track_format_variables() { #[test] fn test_track_format_empty_variables() { let t = track_no_meta("/music/test.mp3"); - assert_eq!(t.format("$ARTIST - $TRACK"), " - test.mp3"); + assert_eq!(t.format("$ARTIST - $TRACK"), "test.mp3"); } #[test] -- cgit v1.2.3