diff --git a/apps/news/management/commands/news_optimize_images.py b/apps/news/management/commands/news_optimize_images.py index 7e1de7e1..48553d5e 100644 --- a/apps/news/management/commands/news_optimize_images.py +++ b/apps/news/management/commands/news_optimize_images.py @@ -29,9 +29,14 @@ class Command(BaseCommand): def optimize(self, text, max_size, max_quality): """optimize news images""" for image in get_url_images_in_text(text): - size, width, height = get_image_meta_by_url(image) + try: + size, width, height = get_image_meta_by_url(image) + except IOError as ie: + self.stdout.write(self.style.NOTICE(f'{ie}\n')) + continue if size < max_size: + self.stdout.write(self.style.SUCCESS(f'No need to compress images size is {size / 1024}Mb\n')) continue percents = round(max_size / (size * 0.01)) diff --git a/apps/utils/methods.py b/apps/utils/methods.py index 45f15c58..18575c07 100644 --- a/apps/utils/methods.py +++ b/apps/utils/methods.py @@ -121,6 +121,7 @@ def absolute_url_decorator(func): return f'{settings.MEDIA_URL}{url_path}/' else: return url_path + return get_absolute_image_url @@ -177,7 +178,8 @@ def get_url_images_in_text(text): """Find images urls in text""" return re.findall(r'(?:http:|https:)?//.*\.(?:png|jpg|svg)', text) -def get_image_meta_by_url(url) -> (int, int, int, str): + +def get_image_meta_by_url(url) -> (int, int, int): """Returns image size (bytes, width, height)""" image_raw = requests.get(url) image = Image.open(BytesIO(image_raw.content))