diff options
| author | salmonik <raisersoft@proton.me> | 2026-05-27 20:52:27 +0200 |
|---|---|---|
| committer | salmonik <raisersoft@proton.me> | 2026-05-27 20:52:27 +0200 |
| commit | e6e9b63f9cb7576c74680b919dff7e83dfde5852 (patch) | |
| tree | 300c533e7bcee80de07f1fd7b2bd059ea093003e | |
| parent | Add internet streams support (diff) | |
| download | rsplayer-e6e9b63f9cb7576c74680b919dff7e83dfde5852.tar.gz rsplayer-e6e9b63f9cb7576c74680b919dff7e83dfde5852.zip | |
fix no metadata songs handling
format string is no longer used to represent songs that have insufficient metadata to fullfill the format string
| -rw-r--r-- | src/queue.rs | 11 | ||||
| -rw-r--r-- | tests/queue.rs | 2 |
2 files changed, 12 insertions, 1 deletions
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 { | |||
| 155 | } | 155 | } |
| 156 | 156 | ||
| 157 | pub fn format(&self, format_str: &str) -> String { | 157 | pub fn format(&self, format_str: &str) -> String { |
| 158 | let has_metadata = self.artist.as_ref().is_some_and(|a| !a.is_empty()) | ||
| 159 | || self.album.as_ref().is_some_and(|a| !a.is_empty()); | ||
| 160 | if !has_metadata { | ||
| 161 | return self.title.clone().unwrap_or_else(|| { | ||
| 162 | self.path | ||
| 163 | .file_name() | ||
| 164 | .and_then(|n| n.to_str()) | ||
| 165 | .unwrap_or("Unknown") | ||
| 166 | .to_string() | ||
| 167 | }); | ||
| 168 | } | ||
| 158 | let artist = self.artist.clone().unwrap_or_default(); | 169 | let artist = self.artist.clone().unwrap_or_default(); |
| 159 | let album = self.album.clone().unwrap_or_default(); | 170 | let album = self.album.clone().unwrap_or_default(); |
| 160 | let title = self.title.clone().unwrap_or_else(|| { | 171 | 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() { | |||
| 275 | #[test] | 275 | #[test] |
| 276 | fn test_track_format_empty_variables() { | 276 | fn test_track_format_empty_variables() { |
| 277 | let t = track_no_meta("/music/test.mp3"); | 277 | let t = track_no_meta("/music/test.mp3"); |
| 278 | assert_eq!(t.format("$ARTIST - $TRACK"), " - test.mp3"); | 278 | assert_eq!(t.format("$ARTIST - $TRACK"), "test.mp3"); |
| 279 | } | 279 | } |
| 280 | 280 | ||
| 281 | #[test] | 281 | #[test] |
