From 64137350b46f2cc060b0321db8f296e0a0f0f0f5 Mon Sep 17 00:00:00 2001 From: Moritz Graf Date: Tue, 19 May 2026 20:19:42 +0200 Subject: [PATCH] refactor(memobird): improve portability with dependency checks and error handling --- skills/memobird/SKILL.md | 10 +++++++++ skills/memobird/requirements.txt | 2 ++ skills/memobird/scripts/memobird_print.py | 26 +++++++++++++++++++++-- 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 skills/memobird/requirements.txt diff --git a/skills/memobird/SKILL.md b/skills/memobird/SKILL.md index 1b1dfa8..bb54b61 100644 --- a/skills/memobird/SKILL.md +++ b/skills/memobird/SKILL.md @@ -7,6 +7,16 @@ description: Print text, images, and notes directly to the Memobird thermal prin Direct printing to the Memobird thermal printer on the local network. +## 📦 Installation + +This skill requires Python 3 and several libraries. Install them using: + +```bash +pip install -r requirements.txt +``` + +*Note: Depends on `requests` and `Pillow`.* + ## 🚀 Usage Use the `scripts/memobird_print.py` tool. By default, it targets the static IP `192.168.10.165`. diff --git a/skills/memobird/requirements.txt b/skills/memobird/requirements.txt new file mode 100644 index 0000000..c0db057 --- /dev/null +++ b/skills/memobird/requirements.txt @@ -0,0 +1,2 @@ +requests +Pillow diff --git a/skills/memobird/scripts/memobird_print.py b/skills/memobird/scripts/memobird_print.py index b9360df..6f8fffc 100755 --- a/skills/memobird/scripts/memobird_print.py +++ b/skills/memobird/scripts/memobird_print.py @@ -1,14 +1,28 @@ #!/usr/bin/env python3 import sys import os -import requests import json import base64 from io import BytesIO from random import randint -from PIL import Image as PILImg, ImageOps import argparse +# Dependency Check +MISSING_DEPS = [] +try: + import requests +except ImportError: + MISSING_DEPS.append("requests") +try: + from PIL import Image as PILImg, ImageOps +except ImportError: + MISSING_DEPS.append("Pillow (PIL)") + +if MISSING_DEPS: + print(f"Error: Missing dependencies: {', '.join(MISSING_DEPS)}") + print("Please install them using: pip install " + " ".join(["requests", "Pillow"])) + sys.exit(1) + # Default IP for Moritz's Memobird DEFAULT_HOST = "192.168.10.165" @@ -48,6 +62,14 @@ class MemobirdSender: resp = requests.post(self.uri, json=payload, timeout=10) resp.raise_for_status() return resp.status_code + except requests.exceptions.ConnectTimeout: + print(f"Error: Connection to Memobird at {self.host} timed out.") + print("Check if the printer is powered on and on the same network.") + sys.exit(1) + except requests.exceptions.ConnectionError: + print(f"Error: Could not connect to Memobird at {self.host}.") + print("Verify the IP address and network connectivity.") + sys.exit(1) except Exception as e: print(f"Error sending to Memobird: {e}") sys.exit(1)