import io import time import requests from escpos.printer import Usb from PIL import Image, ImageEnhance VENDOR_ID = 0x0416 PRODUCT_ID = 0x5011 IMAGE_URL = "https://static.spaceport.dns.t0.vc/drawing.png" PRINTER_WIDTH = 384 # Set to your printer's pixel width (common: 384 or 576) def main(): # Initialize printer p = Usb(VENDOR_ID, PRODUCT_ID, interface=0, in_ep=0x81, out_ep=0x03) last_image_content = None while True: try: response = requests.get(IMAGE_URL, timeout=5) response.raise_for_status() if response.content != last_image_content: print("New image detected, printing...") last_image_content = response.content img = Image.open(io.BytesIO(response.content)) # Resize first wpercent = (PRINTER_WIDTH / float(img.size[0])) hsize = int((float(img.size[1]) * float(wpercent))) img = img.resize((PRINTER_WIDTH, hsize), Image.LANCZOS) # Convert with dithering img = img.convert('1', dither=Image.FLOYDSTEINBERG) # Print image p.image(img) p.cut() except requests.exceptions.RequestException as e: print(f"Error downloading image: {e}") time.sleep(5) if __name__ == "__main__": main()