diff --git a/main.py b/main.py index 53c5fc3..d83fea5 100644 --- a/main.py +++ b/main.py @@ -1,34 +1,49 @@ +import io +import time +import requests from escpos.printer import Usb from PIL import Image, ImageEnhance VENDOR_ID = 0x0416 PRODUCT_ID = 0x5011 - -# Initialize printer -p = Usb(VENDOR_ID, PRODUCT_ID, interface=0, in_ep=0x81, out_ep=0x03) - -# Load and convert image +IMAGE_URL = "https://static.spaceport.dns.t0.vc/drawing.png" PRINTER_WIDTH = 384 # Set to your printer's pixel width (common: 384 or 576) -PRINTER_WIDTH = 384 # Adjust to your printer -img = Image.open('robbie.jpg') +def main(): + # Initialize printer + p = Usb(VENDOR_ID, PRODUCT_ID, interface=0, in_ep=0x81, out_ep=0x03) + last_image_content = None -# 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) + while True: + try: + response = requests.get(IMAGE_URL, timeout=5) + response.raise_for_status() -# Optional: Enhance contrast -img = ImageEnhance.Contrast(img).enhance(2.0) + if response.content != last_image_content: + print("New image detected, printing...") + last_image_content = response.content -# Optional: Sharpen -# img = ImageEnhance.Sharpness(img).enhance(2.0) + img = Image.open(io.BytesIO(response.content)) -# Convert with dithering -img = img.convert('1', dither=Image.FLOYDSTEINBERG) + # 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) -# Print image -p.image(img) -p.cut() + # 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()