Restructure the code and implement a printing queue #29
@@ -344,94 +344,3 @@ def _process_image(self, path):
|
|||||||
self.app.logger.debug("Processed and saved image.")
|
self.app.logger.debug("Processed and saved image.")
|
||||||
|
|
||||||
return jpeg_path
|
return jpeg_path
|
||||||
|
|
||||||
|
|
||||||
def discover_printers():
|
|
||||||
"""
|
|
||||||
We try to find all the connected printers ( 0 or n ) to this system.
|
|
||||||
|
|
||||||
For every type of supported printer, we try to autodiscover them.
|
|
||||||
|
|
||||||
http://www.linux-usb.org/usb.ids A list of USB vendor IDs
|
|
||||||
|
|
||||||
04b8 Seiko Epson Corp.
|
|
||||||
04f9 Brother Industries, Ltd
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
def find_and_parse_borther_ql_printer():
|
|
||||||
|
|
||||||
## We might be able to no use this because there is a `discover` command in https://github.com/pklaus/brother_ql#usage
|
|
||||||
|
|
||||||
## Code stolen from https://framagit.org/stickoeur/diagnostickoeur/-/blob/no-masters/printit.py?ref_type=heads
|
|
||||||
|
|
||||||
"""Find and parse Brother QL printer information."""
|
|
||||||
|
|
||||||
model_manager = ModelsManager()
|
|
||||||
|
|
||||||
# Debug print to show we're searching
|
|
||||||
# print("Searching for Brother QL printer...")
|
|
||||||
|
|
||||||
for backend_name in ["pyusb", "linux_kernel"]:
|
|
||||||
try:
|
|
||||||
# print(f"Trying backend: {backend_name}")
|
|
||||||
backend = backend_factory(backend_name)
|
|
||||||
available_devices = backend["list_available_devices"]()
|
|
||||||
# print(f"Found {len(available_devices)} devices with {backend_name} backend")
|
|
||||||
|
|
||||||
for printer in available_devices:
|
|
||||||
# print(f"Found device: {printer}")
|
|
||||||
identifier = printer["identifier"]
|
|
||||||
parts = identifier.split("/")
|
|
||||||
|
|
||||||
if len(parts) < 4:
|
|
||||||
# print(f"Skipping device with invalid identifier format: {identifier}")
|
|
||||||
continue
|
|
||||||
|
|
||||||
protocol = parts[0]
|
|
||||||
device_info = parts[2]
|
|
||||||
serial_number = parts[3]
|
|
||||||
|
|
||||||
try:
|
|
||||||
vendor_id, product_id = device_info.split(":")
|
|
||||||
except ValueError:
|
|
||||||
# print(f"Invalid device info format: {device_info}")
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Default model
|
|
||||||
model = "QL-570"
|
|
||||||
|
|
||||||
# Try to match product ID to determine actual model
|
|
||||||
try:
|
|
||||||
product_id_int = int(product_id, 16)
|
|
||||||
for m in model_manager.iter_elements():
|
|
||||||
if m.product_id == product_id_int:
|
|
||||||
model = m.identifier
|
|
||||||
break
|
|
||||||
# print(f"Matched printer model: {model}")
|
|
||||||
except ValueError:
|
|
||||||
# print(f"Invalid product ID format: {product_id}")
|
|
||||||
continue
|
|
||||||
|
|
||||||
printer_info = {
|
|
||||||
"identifier": identifier,
|
|
||||||
"backend": backend_name,
|
|
||||||
"model": model,
|
|
||||||
"protocol": protocol,
|
|
||||||
"vendor_id": vendor_id,
|
|
||||||
"product_id": product_id,
|
|
||||||
"serial_number": serial_number,
|
|
||||||
}
|
|
||||||
# print(f"Found printer: {printer_info}")
|
|
||||||
return printer_info
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
# print(f"Error with backend {backend_name}: {str(e)}")
|
|
||||||
continue
|
|
||||||
|
|
||||||
print("No Brother QL printer found")
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def fint_and_parse_epson_printer():
|
|
||||||
pass
|
|
||||||
|
|||||||
Reference in New Issue
Block a user