From bc364bc7d42edccc4bd3628e0d1d266c1513eecb Mon Sep 17 00:00:00 2001 From: wisp3rwind <17089248+wisp3rwind@users.noreply.github.com> Date: Sat, 12 Mar 2022 20:51:06 +0100 Subject: [PATCH] artresizer: merge _check_method into ArtResizer.__init__ more concise since _check_method became much shorter due to introduction of backend classes --- beets/util/artresizer.py | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/beets/util/artresizer.py b/beets/util/artresizer.py index 5dad38dfc..77226612e 100644 --- a/beets/util/artresizer.py +++ b/beets/util/artresizer.py @@ -456,6 +456,11 @@ class Shareable(type): return cls._instance +BACKEND_CLASSES = [ + IMBackend, + PILBackend, +] + class ArtResizer(metaclass=Shareable): """A singleton class that performs image resizes. """ @@ -463,11 +468,18 @@ class ArtResizer(metaclass=Shareable): def __init__(self): """Create a resizer object with an inferred method. """ - self.local_method = self._check_method() - if self.local_method is None: - log.debug(f"artresizer: method is WEBPROXY") + # Check if a local backend is availabe, and store an instance of the + # backend class. Otherwise, fallback to the web proxy. + for backend_cls in BACKEND_CLASSES: + try: + self.local_method = backend_cls() + log.debug(f"artresizer: method is {self.local_method.NAME}") + break + except LocalBackendNotAvailableError: + continue else: - log.debug(f"artresizer: method is {self.local_method.NAME}") + log.debug("artresizer: method is WEBPROXY") + self.local_method = None def resize( self, maxwidth, path_in, path_out=None, quality=0, max_filesize=0 @@ -587,17 +599,3 @@ class ArtResizer(metaclass=Shareable): # FIXME: Should probably issue a warning? return None - @staticmethod - def _check_method(): - """Search availabe methods. - - If a local backend is availabe, return an instance of the backend - class. Otherwise, when fallback to the web proxy is requird, return - None. - """ - try: - return IMBackend() - return PILBackend() - except LocalBackendNotAvailableError: - return None -