From a96b989a29af6fc3c09f4837f49cfcde69c51714 Mon Sep 17 00:00:00 2001 From: kramo <93832451+kra-mo@users.noreply.github.com> Date: Mon, 19 Jun 2023 12:58:52 +0200 Subject: [PATCH] Error handling --- src/details_window.py | 8 +++---- src/utils/save_cover.py | 51 ++++++++++++++++++++++------------------- 2 files changed, 31 insertions(+), 28 deletions(-) diff --git a/src/details_window.py b/src/details_window.py index e6d6f1d..b91534a 100644 --- a/src/details_window.py +++ b/src/details_window.py @@ -251,11 +251,11 @@ class DetailsWindow(Adw.Window): except GLib.GError: return - self.cover_button_delete_revealer.set_reveal_child(True) - self.cover_changed = True - def resize(): - self.game_cover.new_cover(resize_cover(path)) + if cover := resize_cover(path): + self.game_cover.new_cover(cover) + self.cover_button_delete_revealer.set_reveal_child(True) + self.cover_changed = True self.toggle_loading() self.toggle_loading() diff --git a/src/utils/save_cover.py b/src/utils/save_cover.py index a3e6c67..f405977 100644 --- a/src/utils/save_cover.py +++ b/src/utils/save_cover.py @@ -22,7 +22,7 @@ from pathlib import Path from shutil import copyfile from gi.repository import Gio -from PIL import Image, ImageSequence +from PIL import Image, ImageSequence, UnidentifiedImageError from src import shared @@ -35,32 +35,35 @@ def resize_cover(cover_path=None, pixbuf=None): cover_path = Path(Gio.File.new_tmp("XXXXXX.tiff")[0].get_path()) pixbuf.savev(str(cover_path), "tiff", ["compression"], ["1"]) - with Image.open(cover_path) as image: - if getattr(image, "is_animated", False): - frames = tuple( - frame.resize((200, 300)) for frame in ImageSequence.Iterator(image) - ) + try: + with Image.open(cover_path) as image: + if getattr(image, "is_animated", False): + frames = tuple( + frame.resize((200, 300)) for frame in ImageSequence.Iterator(image) + ) - tmp_path = Path(Gio.File.new_tmp("XXXXXX.gif")[0].get_path()) - frames[0].save( - tmp_path, - save_all=True, - append_images=frames[1:], - ) + tmp_path = Path(Gio.File.new_tmp("XXXXXX.gif")[0].get_path()) + frames[0].save( + tmp_path, + save_all=True, + append_images=frames[1:], + ) - else: - # This might not be necessary in the future - # https://github.com/python-pillow/Pillow/issues/2663 - if image.mode not in ("RGB", "RGBA"): - image = image.convert("RGBA") + else: + # This might not be necessary in the future + # https://github.com/python-pillow/Pillow/issues/2663 + if image.mode not in ("RGB", "RGBA"): + image = image.convert("RGBA") - tmp_path = Path(Gio.File.new_tmp("XXXXXX.tiff")[0].get_path()) - image.resize(shared.image_size).save( - tmp_path, - compression="tiff_adobe_deflate" - if shared.schema.get_boolean("high-quality-images") - else "webp", - ) + tmp_path = Path(Gio.File.new_tmp("XXXXXX.tiff")[0].get_path()) + image.resize(shared.image_size).save( + tmp_path, + compression="tiff_adobe_deflate" + if shared.schema.get_boolean("high-quality-images") + else "webp", + ) + except UnidentifiedImageError: + return None return tmp_path