mirror of
https://github.com/skogaby/KFChickenShim.git
synced 2026-09-08 18:45:18 -05:00
105 lines
3.2 KiB
Python
105 lines
3.2 KiB
Python
import os
|
|
from lxml import etree
|
|
from lxml import objectify
|
|
import sys
|
|
|
|
MAX_EAGLE_PARTS = 1000
|
|
|
|
print"" # print a new line
|
|
|
|
numArgs = len(sys.argv)
|
|
if numArgs < 2:
|
|
#Print help
|
|
print "Not enough arguments"
|
|
print "Example: Python file.py C:\github\SparkFun-Eagle-Libraries\SparkFun-IC-Conversion.lbr"
|
|
exit()
|
|
|
|
myFileName = sys.argv[1]
|
|
|
|
if os.path.isfile(myFileName) == True:
|
|
statinfo = os.stat(myFileName)
|
|
myFile = open(myFileName, "r")
|
|
else:
|
|
print "Invalid file name"
|
|
exit()
|
|
|
|
#print myFile.read(statinfo.st_size)
|
|
|
|
#root = objectify.parse(myFileName)
|
|
root = objectify.fromstring(myFile.read(statinfo.st_size))
|
|
#print(etree.tostring(root, pretty_print=True))
|
|
|
|
#print root.drawing.library.devicesets.deviceset[0].description.text
|
|
|
|
#print root.drawing.library.devicesets.deviceset[0].devices.device.technologies.technology.attribute.values()
|
|
#print root.drawing.library.devicesets.deviceset[0].devices.device.technologies.technology.attrib[1]
|
|
#print root.drawing.library.devicesets.deviceset[0].devices.device.technologies.technology.attrib[2]
|
|
|
|
print ""
|
|
|
|
listTemp = []
|
|
|
|
# make list of "name" and "Prod ID" and full descriptions
|
|
listNames = []
|
|
for i in range(0, MAX_EAGLE_PARTS):
|
|
try:
|
|
root.drawing.library.devicesets.deviceset[i]
|
|
except:
|
|
break
|
|
else:
|
|
#print root.drawing.library.devicesets.deviceset[i].attrib
|
|
del listTemp[:]
|
|
listTemp.extend(root.drawing.library.devicesets.deviceset[i].values())
|
|
if len(listTemp) > 0:
|
|
listNames.extend(" ")
|
|
listNames[len(listNames) - 1] = listTemp[0]
|
|
##print root.drawing.library.devicesets.deviceset[i].devices.device.technologies.technology.attribute.attrib
|
|
|
|
|
|
listProdIDs = []
|
|
for i in range(0, MAX_EAGLE_PARTS):
|
|
try:
|
|
root.drawing.library.devicesets.deviceset[i]
|
|
except:
|
|
break
|
|
else:
|
|
#print root.drawing.library.devicesets.deviceset[i].devices.device.technologies.technology.attribute.values()
|
|
del listTemp[:]
|
|
listTemp.extend(root.drawing.library.devicesets.deviceset[i].devices.device.technologies.technology.attribute.values())
|
|
if len(listTemp) > 0:
|
|
listProdIDs.extend(" ")
|
|
listProdIDs[len(listProdIDs) - 1] = listTemp[1]
|
|
#print root.drawing.library.devicesets.deviceset[i].devices.device.technologies.technology.attribute.attrib
|
|
|
|
listDescriptions = []
|
|
for i in range(0, MAX_EAGLE_PARTS):
|
|
try:
|
|
root.drawing.library.devicesets.deviceset[i]
|
|
except:
|
|
break
|
|
else:
|
|
#print root.drawing.library.devicesets.deviceset[i].devices.device.technologies.technology.attribute.values()
|
|
del listTemp[:]
|
|
listTemp.extend(root.drawing.library.devicesets.deviceset[i].description.text)
|
|
if len(listTemp) > 0:
|
|
listDescriptions.extend(" ")
|
|
listDescriptions[len(listDescriptions) - 1] = ''.join(listTemp[:])
|
|
#print root.drawing.library.devicesets.deviceset[i].devices.device.technologies.technology.attribute.attrib
|
|
# Report list lengths
|
|
print "Part names found: ", len(listNames)
|
|
print "Part IDs found: ", len(listProdIDs)
|
|
print "Descriptions found: ", len(listDescriptions)
|
|
print ""
|
|
|
|
for i in range(0, MAX_EAGLE_PARTS):
|
|
if i < len(listNames) and i < len(listProdIDs) and i < len(listDescriptions):
|
|
print listNames[i], "\n", listProdIDs[i], "\n", listDescriptions[i], "\n\n"
|
|
|
|
# print the lists
|
|
##print listNames
|
|
#print root.drawing.library.devicesets.deviceset[3].description.text
|
|
|
|
myFile.close()
|
|
print "File IO complete"
|
|
|