feat: Add Web iface with QR codes
This commit is contained in:
parent
eccb167461
commit
6fdb8433ce
10 changed files with 1293 additions and 739 deletions
75
labeler/adapter/cli.py
Normal file
75
labeler/adapter/cli.py
Normal 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)
|
||||
80
labeler/adapter/fastapi_srv.py
Normal file
80
labeler/adapter/fastapi_srv.py
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
import os
|
||||
|
||||
from labeler.app.labeler import Application
|
||||
from labeler.infra.e550w_printer.printer import E550W
|
||||
from labeler.infra.renderer import PILRenderer
|
||||
|
||||
from fastapi import FastAPI
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
@app.get("/print/{item_id}")
|
||||
def print_item(item_id: int, q: str | None = None):
|
||||
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(item_id, 25)
|
||||
with open("label.png", "wb") as preview:
|
||||
preview.write(label.bytes)
|
||||
bot.print_qrcode(item_id, 25)
|
||||
Loading…
Add table
Add a link
Reference in a new issue