feat: Add Web iface with QR codes

This commit is contained in:
Piotr Gaczkowski 2026-03-24 14:27:32 +01:00
parent eccb167461
commit 6fdb8433ce
10 changed files with 1293 additions and 739 deletions

75
labeler/adapter/cli.py Normal file
View file

@ -0,0 +1,75 @@
import os
from labeler.app.labeler import Application
from labeler.infra.e550w_printer.printer import E550W
from labeler.infra.renderer import PILRenderer
class LabelingBot:
def __init__(self, app: Application):
self.app = app
def media_info(self):
media = self.app.get_installed_media()
print(f"Installed medium: {media}")
def simple_label(self, label_text, label_length=0):
try:
label = self.app.print_label(text=label_text, length=label_length)
except Exception as e:
print(f"There was an exception: {e}")
def get_qrcode(self, label_text, label_length=0):
label = self.app.render_qrcode_preview(text=label_text, length=label_length)
return label
def print_qrcode(self, label_text, label_length=0):
try:
label = self.app.print_qrcode(text=label_text, length=label_length)
except Exception as e:
print(f"There was an exception: {e}")
# async def label_length(self):
# await update.message.reply_text(
# "Hello! Please tell me the length of the label, enter 0 for auto:"
# )
# return LABEL_LENGTH
#
# async def label_text(self, update: Update, context: CallbackContext) -> int:
# user_input = update.message.text
# context.user_data["length"] = int(user_input)
# await update.message.reply_text("Now, please tell me the text of the label:")
# return LABEL_TEXT
#
# async def simple_label(self, update: Update, context: CallbackContext) -> int:
# user_input = update.message.text
# context.user_data["label"] = user_input
# try:
# label = self.app.print_label(
# text=context.user_data["label"], length=context.user_data["length"]
# )
# except Exception as e:
# await update.message.reply_text(f"There was an exception: {e}")
# return ConversationHandler.END
#
# await update.message.reply_photo(
# label.bytes, f'Your label is: {context.user_data["label"]}'
# )
# return ConversationHandler.END
#
# async def cancel(self, update: Update, context: CallbackContext) -> int:
# await update.message.reply_text("Cancelled.")
# return ConversationHandler.END
if __name__ == "__main__":
application = Application(PILRenderer(), E550W(os.environ.get("PRINTER_IP")))
bot = LabelingBot(application)
LABEL_LENGTH, LABEL_TEXT = range(2)
bot.media_info()
label = bot.get_qrcode("512", 25)
with open("label.png", "wb") as preview:
preview.write(label.bytes)
label = bot.print_qrcode("512", 25)