refactor(memobird): improve portability with dependency checks and error handling

This commit is contained in:
Moritz Graf 2026-05-19 20:19:42 +02:00
parent 9af18e5879
commit 64137350b4
3 changed files with 36 additions and 2 deletions

View File

@ -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`.

View File

@ -0,0 +1,2 @@
requests
Pillow

View File

@ -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)