diff --git a/szuru-eink.py b/szuru-eink.py index 3e73f86..a2d6cf8 100644 --- a/szuru-eink.py +++ b/szuru-eink.py @@ -6,9 +6,7 @@ import random import requests import os import pyszuru - -from PIL import Image - +from PIL import Image, ImageSequence, UnidentifiedImageError from epd.epd_config import palArr, epdArr, EPD_TYPES @@ -57,7 +55,7 @@ while not image_downloaded: img.close() image_downloaded = True print("[DEBUG] Image successfully verified.") - except (PIL.UnidentifiedImageError, requests.exceptions.RequestException) as e: + except (UnidentifiedImageError, requests.exceptions.RequestException) as e: print( f"[ERROR] Failed to process downloaded file (Error: {e}). Retrying with a new post..." ) @@ -81,6 +79,13 @@ while not image_downloaded: # Process and upload img = Image.open("image.jpg") + if post.mime == "image/gif": + # Seek to a random frame + random_frame_index = random.randint(0, img.n_frames - 1) + print(f"[DEBUG] Detected GIF, selecting frame: {random_frame_index}") + img.seek(random_frame_index) + # Convert the frame to an RGB image to discard GIF palette and alpha for processing + img = img.convert("RGB") # Get configuration from environment variables try: