Update parsing and stuff
This commit is contained in:
parent
fe5de4e54c
commit
50bf835d13
@ -32,13 +32,13 @@ led:
|
|||||||
ledstart: 288
|
ledstart: 288
|
||||||
ledend: 431
|
ledend: 431
|
||||||
mode: rgb
|
mode: rgb
|
||||||
- universe: 1
|
- universe: 4
|
||||||
ip: 192.168.68.130
|
ip: 192.168.5.40
|
||||||
ledstart: 432
|
ledstart: 432
|
||||||
ledend: 575
|
ledend: 575
|
||||||
mode: rgb
|
mode: rgb
|
||||||
- universe: 4
|
- universe: 1
|
||||||
ip: 192.168.68.131
|
ip: 192.168.5.4
|
||||||
ledstart: 576
|
ledstart: 576
|
||||||
ledend: 719
|
ledend: 719
|
||||||
mode: rgb
|
mode: rgb
|
||||||
|
112
get_specs.py
112
get_specs.py
@ -26,7 +26,7 @@ def check_internet(url='https://belden.com', timeout=5):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
def query_search(partnum):
|
def query_search(partnum, source):
|
||||||
"""token_url = "https://www.belden.com/coveo/rest/token?t=" + str(int(time.time()))
|
"""token_url = "https://www.belden.com/coveo/rest/token?t=" + str(int(time.time()))
|
||||||
with requests.get(token_url) as r:
|
with requests.get(token_url) as r:
|
||||||
out = json.loads(r.content)
|
out = json.loads(r.content)
|
||||||
@ -49,15 +49,50 @@ def query_search(partnum):
|
|||||||
# Bash script uses some crazy json formatting that I could not figure out
|
# Bash script uses some crazy json formatting that I could not figure out
|
||||||
# Despite the fact that I wrote it
|
# Despite the fact that I wrote it
|
||||||
# So I'll just leave it, becuase it works.
|
# So I'll just leave it, becuase it works.
|
||||||
|
if source == "Belden":
|
||||||
|
command = ["./query-search.sh", partnum]
|
||||||
|
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
|
||||||
|
if result.returncode != 0: # error
|
||||||
|
fprint("No results found in search database for " + partnum + ". No hi-res part image available.", result.stderr)
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
data_out = json.loads(result.stdout)
|
||||||
|
return data_out
|
||||||
|
elif source == "Alphawire":
|
||||||
|
alphaurl = "https://www.alphawire.com//sxa/search/results/?l=en&s={4A774076-6068-460C-9CC6-A2D8E85E407F}&itemid={BF82F58C-EFD9-4D8B-AE3E-097DD12CF7DA}&sig=&autoFireSearch=true&productpartnumber=*" + partnum + "*&v={B22CD56D-AB95-4048-8AA1-5BBDF2F2D17F}&p=10&e=0&o=ProductPartNumber%2CAscending"
|
||||||
|
r = requests.get(url=alphaurl)
|
||||||
|
data = r.json()
|
||||||
|
output = dict()
|
||||||
|
#print(data)
|
||||||
|
try:
|
||||||
|
if data["Count"] > 0:
|
||||||
|
print(data["Results"][0]["Url"])
|
||||||
|
result = data["Results"][0]
|
||||||
|
if result["Url"].split("/")[-1] == partnum:
|
||||||
|
#print(partnum)
|
||||||
|
print(result["Html"])
|
||||||
|
try:
|
||||||
|
imgidx = result["Html"].index("<img src=") + 10
|
||||||
|
imgidx2 = result["Html"].index("?", imgidx)
|
||||||
|
output["image"] = result["Html"][imgidx:imgidx2]
|
||||||
|
if output["image"].index("http") != 0:
|
||||||
|
output["image"] = ""
|
||||||
|
print("No cable image found.")
|
||||||
|
except:
|
||||||
|
print("No cable image found.")
|
||||||
|
|
||||||
command = ["./query-search.sh", partnum]
|
dsidx = result["Html"].index("<a href=\"/disteAPI/") + 9
|
||||||
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
|
dsidx2 = result["Html"].index(partnum, dsidx) + len(partnum)
|
||||||
if result.returncode != 0: # error
|
output["datasheet"] = "https://www.alphawire.com" + result["Html"][dsidx:dsidx2]
|
||||||
fprint("No results found in search database for " + partnum + ". No hi-res part image available.", result.stderr)
|
#"test".index()
|
||||||
|
print(output)
|
||||||
|
return output
|
||||||
|
|
||||||
|
|
||||||
|
except:
|
||||||
|
return False
|
||||||
return False
|
return False
|
||||||
else:
|
|
||||||
data_out = json.loads(result.stdout)
|
|
||||||
return data_out
|
|
||||||
|
|
||||||
def touch(path):
|
def touch(path):
|
||||||
with open(path, 'a'):
|
with open(path, 'a'):
|
||||||
@ -126,7 +161,7 @@ def get_multi(partnums):
|
|||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
|
|
||||||
def _download_image(url, output_dir): # Download datasheet with known URL
|
def _download_image(url, output_dir): # Download image with known URL
|
||||||
global bartext
|
global bartext
|
||||||
|
|
||||||
#fprint(url)
|
#fprint(url)
|
||||||
@ -151,25 +186,31 @@ def get_multi(partnums):
|
|||||||
os.remove(partnum + "/datasheet.pdf")
|
os.remove(partnum + "/datasheet.pdf")
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
def __use_cached_datasheet(partnum, path, output_dir):
|
def __use_cached_datasheet(partnum, path, output_dir, dstype):
|
||||||
fprint("Using cached datasheet for " + partnum)
|
fprint("Using cached datasheet for " + partnum)
|
||||||
bar.text = "Using cached datasheet for " + partnum
|
bar.text = "Using cached datasheet for " + partnum
|
||||||
bar(skipped=True)
|
bar(skipped=True)
|
||||||
fprint("Parsing Datasheet contents of " + partnum)
|
fprint("Parsing Datasheet contents of " + partnum)
|
||||||
bar.text = "Parsing Datasheet contents of " + partnum + ".pdf..."
|
bar.text = "Parsing Datasheet contents of " + partnum + ".pdf..."
|
||||||
read_datasheet.parse(path, output_dir, partnum)
|
read_datasheet.parse(path, output_dir, partnum, dstype)
|
||||||
bar(skipped=False)
|
bar(skipped=False)
|
||||||
|
|
||||||
def __downloaded_datasheet(partnum, path, output_dir):
|
def __downloaded_datasheet(partnum, path, output_dir, dstype):
|
||||||
fprint("Downloaded " + path)
|
fprint("Downloaded " + path)
|
||||||
bar.text = "Downloaded " + path
|
bar.text = "Downloaded " + path
|
||||||
bar(skipped=False)
|
bar(skipped=False)
|
||||||
fprint("Parsing Datasheet contents of " + partnum)
|
fprint("Parsing Datasheet contents of " + partnum)
|
||||||
bar.text = "Parsing Datasheet contents of " + partnum + ".pdf..."
|
bar.text = "Parsing Datasheet contents of " + partnum + ".pdf..."
|
||||||
read_datasheet.parse(path, output_dir, partnum)
|
read_datasheet.parse(path, output_dir, partnum, dstype)
|
||||||
bar(skipped=False)
|
bar(skipped=False)
|
||||||
|
|
||||||
for partnum in partnums:
|
for fullpartnum in partnums:
|
||||||
|
if fullpartnum[0:2] == "BL": # catalog.belden.com entry\
|
||||||
|
partnum = fullpartnum[2:]
|
||||||
|
dstype = "Belden"
|
||||||
|
elif fullpartnum[0:2] == "AW":
|
||||||
|
partnum = fullpartnum[2:]
|
||||||
|
dstype = "Alphawire"
|
||||||
output_dir = "cables/" + partnum
|
output_dir = "cables/" + partnum
|
||||||
path = output_dir + "/datasheet.pdf"
|
path = output_dir + "/datasheet.pdf"
|
||||||
bartext = "Downloading files for part " + partnum
|
bartext = "Downloading files for part " + partnum
|
||||||
@ -177,7 +218,7 @@ def get_multi(partnums):
|
|||||||
#
|
#
|
||||||
if (not os.path.exists(output_dir + "/found_part_hires")) or not (os.path.exists(path) and os.path.getsize(path) > 1):
|
if (not os.path.exists(output_dir + "/found_part_hires")) or not (os.path.exists(path) and os.path.getsize(path) > 1):
|
||||||
# Use query
|
# Use query
|
||||||
search_result = query_search(partnum.replace(" ", ""))
|
search_result = query_search(partnum.replace(" ", ""), dstype)
|
||||||
# Try to use belden.com search
|
# Try to use belden.com search
|
||||||
if search_result is not False:
|
if search_result is not False:
|
||||||
# Download high resolution part image if available and needed
|
# Download high resolution part image if available and needed
|
||||||
@ -190,17 +231,17 @@ def get_multi(partnums):
|
|||||||
|
|
||||||
# Download datasheet from provided URL if needed
|
# Download datasheet from provided URL if needed
|
||||||
if os.path.exists(path) and os.path.getsize(path) > 1:
|
if os.path.exists(path) and os.path.getsize(path) > 1:
|
||||||
__use_cached_datasheet(partnum, path, output_dir)
|
__use_cached_datasheet(partnum, path, output_dir, dstype)
|
||||||
|
|
||||||
elif _download_datasheet(search_result["datasheet"], output_dir) is not False:
|
elif _download_datasheet(search_result["datasheet"], output_dir) is not False:
|
||||||
__downloaded_datasheet(partnum, path, output_dir)
|
__downloaded_datasheet(partnum, path, output_dir, dstype)
|
||||||
|
|
||||||
elif os.path.exists(path) and os.path.getsize(path) > 1:
|
elif os.path.exists(path) and os.path.getsize(path) > 1:
|
||||||
__use_cached_datasheet(partnum, path, output_dir)
|
__use_cached_datasheet(partnum, path, output_dir, dstype)
|
||||||
|
|
||||||
# If search fails, and we don't already have the datasheet, guess datasheet URL and skip the hires image download
|
# If search fails, and we don't already have the datasheet, guess datasheet URL and skip the hires image download
|
||||||
elif _try_download_datasheet(partnum, output_dir) is not False:
|
elif _try_download_datasheet(partnum, output_dir) is not False:
|
||||||
__downloaded_datasheet(partnum, path, output_dir)
|
__downloaded_datasheet(partnum, path, output_dir, dstype)
|
||||||
|
|
||||||
# Failed to download with search or guess :(
|
# Failed to download with search or guess :(
|
||||||
else:
|
else:
|
||||||
@ -213,7 +254,7 @@ def get_multi(partnums):
|
|||||||
# We already have a hi-res image and the datasheet - perfect!
|
# We already have a hi-res image and the datasheet - perfect!
|
||||||
else:
|
else:
|
||||||
fprint("Using cached hi-res part image for " + partnum)
|
fprint("Using cached hi-res part image for " + partnum)
|
||||||
__use_cached_datasheet(partnum, path, output_dir)
|
__use_cached_datasheet(partnum, path, output_dir, dstype)
|
||||||
|
|
||||||
if len(failed) > 0:
|
if len(failed) > 0:
|
||||||
fprint("Failed to download:")
|
fprint("Failed to download:")
|
||||||
@ -227,21 +268,22 @@ def get_multi(partnums):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
partnums = ["7958A", "10GXS12", "RST 5L-RKT 5L-949",
|
partnums = ["AW3248", "BL7958A", "BL10GXS12", "BLRST 5L-RKT 5L-949",
|
||||||
"10GXS13",
|
"BL10GXS13",
|
||||||
"10GXW12",
|
"BL10GXW12",
|
||||||
"10GXW13",
|
"BL10GXW13",
|
||||||
"2412",
|
"BL2412",
|
||||||
"2413",
|
"BL2413",
|
||||||
"OSP6AU",
|
"BLOSP6AU",
|
||||||
"FI4D024P9",
|
"BLFI4D024P9",
|
||||||
"FISD012R9",
|
"BLFISD012R9",
|
||||||
"FDSD012A9",
|
"BLFDSD012A9",
|
||||||
"FSSL024NG",
|
"BLFSSL024NG",
|
||||||
"FISX006W0",
|
"BLFISX006W0",
|
||||||
"FISX00103",
|
"BLFISX00103",
|
||||||
"C6D1100007"
|
"BLC6D1100007"
|
||||||
]
|
]
|
||||||
get_multi(partnums)
|
#get_multi(partnums)
|
||||||
|
query_search("3248", "Alphawire")
|
||||||
|
|
||||||
|
|
||||||
|
@ -178,9 +178,9 @@ def init():
|
|||||||
sendall(data)
|
sendall(data)
|
||||||
#time.sleep(50000)
|
#time.sleep(50000)
|
||||||
fprint("Running start-up test sequence...")
|
fprint("Running start-up test sequence...")
|
||||||
for y in range(1):
|
for y in range(100):
|
||||||
for x in range(len(leds)):
|
for x in range(len(leds)):
|
||||||
setpixel(5,5,5,x)
|
setpixel(0,0,150,x)
|
||||||
sendall(data)
|
sendall(data)
|
||||||
#time.sleep(2)
|
#time.sleep(2)
|
||||||
#alloffsmooth()
|
#alloffsmooth()
|
||||||
@ -290,7 +290,7 @@ def close():
|
|||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
sender.stop()
|
sender.stop()
|
||||||
|
|
||||||
def mapimage(image, fps=60):
|
def mapimage(image, fps=90):
|
||||||
global start
|
global start
|
||||||
while uptime() - start < 1/fps:
|
while uptime() - start < 1/fps:
|
||||||
time.sleep(0.00001)
|
time.sleep(0.00001)
|
||||||
|
BIN
map.png
BIN
map.png
Binary file not shown.
Before Width: | Height: | Size: 381 KiB After Width: | Height: | Size: 381 KiB |
@ -12,7 +12,7 @@ from util import fprint
|
|||||||
import uuid
|
import uuid
|
||||||
from util import run_cmd
|
from util import run_cmd
|
||||||
|
|
||||||
def parse(filename, output_dir, partnum):
|
def parse(filename, output_dir, partnum, dstype):
|
||||||
|
|
||||||
# Extract table data
|
# Extract table data
|
||||||
|
|
||||||
@ -24,6 +24,7 @@ def parse(filename, output_dir, partnum):
|
|||||||
page = reader.pages[0]
|
page = reader.pages[0]
|
||||||
table_list = {}
|
table_list = {}
|
||||||
for table in tables:
|
for table in tables:
|
||||||
|
table.df.infer_objects(copy=False)
|
||||||
table.df.replace('', np.nan, inplace=True)
|
table.df.replace('', np.nan, inplace=True)
|
||||||
table.df.dropna(inplace=True, how="all")
|
table.df.dropna(inplace=True, how="all")
|
||||||
table.df.dropna(inplace=True, axis="columns", how="all")
|
table.df.dropna(inplace=True, axis="columns", how="all")
|
||||||
@ -139,29 +140,30 @@ def parse(filename, output_dir, partnum):
|
|||||||
|
|
||||||
|
|
||||||
# multi-page table check
|
# multi-page table check
|
||||||
if table_name.isdigit() and len(tables) > 1:
|
if dstype == "Belden":
|
||||||
fprint(table_name)
|
if table_name.isdigit() and len(tables) > 1:
|
||||||
fprint(previous_table)
|
fprint(table_name)
|
||||||
|
fprint(previous_table)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
main_key = previous_table
|
|
||||||
cont_key = table_name
|
main_key = previous_table
|
||||||
fprint(tables)
|
cont_key = table_name
|
||||||
if vertical == False:
|
fprint(tables)
|
||||||
main_keys = list(tables[main_key].keys())
|
if vertical == False:
|
||||||
for i, (cont_key, cont_values) in enumerate(tables[cont_key].items()):
|
main_keys = list(tables[main_key].keys())
|
||||||
if i < len(main_keys):
|
for i, (cont_key, cont_values) in enumerate(tables[cont_key].items()):
|
||||||
fprint(tables[main_key][main_keys[i]])
|
if i < len(main_keys):
|
||||||
tables[main_key][main_keys[i]] = (tables[main_key][main_keys[i]] + (cont_key,) + cont_values)
|
fprint(tables[main_key][main_keys[i]])
|
||||||
|
tables[main_key][main_keys[i]] = (tables[main_key][main_keys[i]] + (cont_key,) + cont_values)
|
||||||
del tables[table_name]
|
|
||||||
|
del tables[table_name]
|
||||||
else:
|
|
||||||
for key in tables[cont_key].keys():
|
else:
|
||||||
tables[main_key][key] = tables[cont_key][key]
|
for key in tables[cont_key].keys():
|
||||||
del tables[table_name]
|
tables[main_key][key] = tables[cont_key][key]
|
||||||
|
del tables[table_name]
|
||||||
|
|
||||||
previous_table = table_name
|
previous_table = table_name
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user