diff --git a/szuru-eink.py b/szuru-eink.py index 3e73f86..59922fc 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 @@ -29,7 +27,7 @@ highest_post = next(booru.search_post("sort:id type:image", page_size=1)) post = None while post is None: - random_id = random.randint(0, highest_post.id_) + random_id = 10455 # For testing, always use ID=10455 which is a gif temp_post = booru.getPost(random_id) if temp_post and temp_post.mime.startswith("image/") and temp_post.content: post = temp_post @@ -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..." ) @@ -67,7 +65,7 @@ while not image_downloaded: # Find a new post post = None while post is None: - random_id = random.randint(0, highest_post.id_) + random_id = 10455 # For testing, always use ID=10455 which is a gif temp_post = booru.getPost(random_id) if temp_post and temp_post.mime.startswith("image/") and temp_post.content: post = temp_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: