110 lines
3.7 KiB
Python
Executable File
110 lines
3.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
|
|
|
|
from get_specs import get_multi
|
|
import sys
|
|
import uuid
|
|
import os
|
|
import signal
|
|
from PIL import Image
|
|
from label_image import generate_code
|
|
from label_document import generate_pdf
|
|
|
|
|
|
def input_cable():
|
|
print("")
|
|
print("Use the full part number. Spaces, special characters are allowed. Do not specify the brand.")
|
|
print("")
|
|
print("Please enter a part number and press enter:")
|
|
inputnum = input("").strip()
|
|
if len(inputnum) < 2:
|
|
killall_signal(0, 0)
|
|
print("Input part number:", inputnum)
|
|
print("Searching databases for cables...")
|
|
# Search both AW and BL sites
|
|
status, output = get_multi(["BL"+inputnum, "AW"+inputnum], delay=0.1, dir="temp/" + str(uuid.uuid4()) + "/", webport=":9000", cache=False)
|
|
print("")
|
|
if len(output) > 1:
|
|
for i in output:
|
|
print(i[1], i[0])
|
|
print("Multiple brands with the same part number! Please type \"b\" for the Belden part number or \"a\" for the Alphawire cable")
|
|
inputbrand = input()
|
|
if inputbrand == "b":
|
|
output = [output[0]]
|
|
elif inputbrand == "a":
|
|
output = [output[1]]
|
|
elif len(output) == 0:
|
|
print("No results found for part number", inputnum + ". Please try again with a different part number.")
|
|
return
|
|
|
|
output = output[0]
|
|
print("")
|
|
if output[2] and output[3]:
|
|
print("Cable result found -",output[1], output[0], "with high-quality image and full specs")
|
|
elif output[2]:
|
|
print("Cable result found -",output[1], output[0], "with high-quality image and no specs")
|
|
elif output[3]:
|
|
print("Cable result found -",output[1], output[0], "with no/low quality image and full specs")
|
|
else:
|
|
print("Cable result found -",output[1], output[0], "with no/low quality image and no specs")
|
|
print("")
|
|
if not output[3]:
|
|
print("Unable to decode cable specs. Please try again with a different part number.")
|
|
return False
|
|
else:
|
|
print("")
|
|
print("*** Cable details confirmed. Creating label...")
|
|
print("")
|
|
img = None
|
|
imgstr = ""
|
|
if output[1] == "Belden":
|
|
imgstr = "BL"
|
|
elif output[1] == "Alphawire":
|
|
imgstr = "AW"
|
|
gen_label(imgstr + output[0])
|
|
#img = generate_code(imgstr + output[0])
|
|
#os.makedirs("labels", exist_ok=True)
|
|
#img.save("labels/" + imgstr + output[0] + ".png")
|
|
|
|
def gen_label(partnum, path="labels"):
|
|
img = generate_code(partnum)
|
|
os.makedirs(path, exist_ok=True)
|
|
img.save(path + "/" + partnum + ".png")
|
|
generate_pdf(path)
|
|
|
|
|
|
def delete_folder(path):
|
|
# Check if the path is a directory
|
|
if not os.path.isdir(path):
|
|
return
|
|
|
|
# List all files and directories in the path
|
|
for filename in os.listdir(path):
|
|
file_path = os.path.join(path, filename)
|
|
# If it's a directory, recursively call this function
|
|
if os.path.isdir(file_path):
|
|
delete_folder(file_path)
|
|
else:
|
|
# If it's a file, remove it
|
|
os.remove(file_path)
|
|
|
|
# After removing all contents, remove the directory itself
|
|
os.rmdir(path)
|
|
|
|
def killall_signal(a,b):
|
|
delete_folder("temp")
|
|
os.kill(os.getpid(), 9) # dirty kill of self
|
|
|
|
if __name__ == "__main__":
|
|
|
|
signal.signal(signal.SIGINT, killall_signal)
|
|
signal.signal(signal.SIGTERM, killall_signal)
|
|
print("Welcome to the Jukebox cable utility. This tool will allow you to verify Belden & Alphawire cable part numbers and create labels for samples in the Jukebox.")
|
|
print("This tool requires internet access to download cable specifications and verify part numbers.")
|
|
#print("Use Ctrl+C to exit.")
|
|
while True:
|
|
delete_folder("temp")
|
|
input_cable()
|
|
|