#!/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()