]> git.seodisparate.com - mpd_info_screen/commitdiff
Fix edge-case where MPD omits album art format
authorStephen Seo <seo.disparate@gmail.com>
Sun, 30 Oct 2022 04:42:51 +0000 (13:42 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Sun, 30 Oct 2022 04:42:51 +0000 (13:42 +0900)
.gitignore
Cargo.lock
Cargo.toml
src/display.rs

index ea8c4bf7f35f6f77f75d92ad8ce8349f6e81ddba..d81f12ed1b1cf9affa3ca75d42332368150a2ec5 100644 (file)
@@ -1 +1,2 @@
 /target
+/.idea
index ee5a855f340a747f1b61dbb319230a54512882a5..5021ff38993927a72de3bdcac9f50296c7dfa848 100644 (file)
@@ -1668,7 +1668,7 @@ dependencies = [
 
 [[package]]
 name = "mpd_info_screen"
-version = "0.3.6"
+version = "0.3.7"
 dependencies = [
  "bindgen",
  "freetype",
index 55a1e4fe21c0ac13c66bc36c83d44b150625abee..5d40a63171ec951bbdeb93d2b5822a46ee84ba05 100644 (file)
@@ -1,6 +1,6 @@
 [package]
 name = "mpd_info_screen"
-version = "0.3.6"
+version = "0.3.7"
 edition = "2018"
 description = "Displays info on currently playing music from an MPD daemon"
 license = "MIT"
index b15193691832ad221b8aa197be7351b244219e21..040c20650724ac504612e98443bf43cb5af9039b 100644 (file)
@@ -397,9 +397,22 @@ impl MPDDisplay {
             );
         }
 
-        let img_result = ImageReader::with_format(Cursor::new(&image_ref), image_format)
-            .decode()
-            .map_err(|e| format!("Error: Failed to decode album art image: {}", e));
+        let img_result = if is_unknown_format {
+            let mut reader = ImageReader::new(Cursor::new(&image_ref));
+            reader = reader
+                .with_guessed_format()
+                .map_err(|e| format!("Error: Failed to guess format of album art image: {}", e))?;
+            reader.decode().map_err(|e| {
+                format!(
+                    "Error: Failed to decode album art image (guessed format): {}",
+                    e
+                )
+            })
+        } else {
+            ImageReader::with_format(Cursor::new(&image_ref), image_format)
+                .decode()
+                .map_err(|e| format!("Error: Failed to decode album art image: {}", e))
+        };
         if img_result.is_err() && !self.tried_album_art_in_dir {
             return try_second_art_fetch_method(
                 &mut self.tried_album_art_in_dir,