LicensePlate.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. from xml.dom.minidom import parse
  2. from Error import Error
  3. from Point import Point
  4. from Character import Character
  5. class LicensePlate:
  6. def __init__(self, file_path):
  7. try:
  8. self.dom = parse(file_path)
  9. except IOError:
  10. Error("Incorrect file name given.")
  11. return None
  12. else:
  13. properties = self.get_properties()
  14. self.image = str(properties['uii']) + '.' + str(properties['type'])
  15. self.width = properties['width']
  16. self.height = properties['height']
  17. info = self.set_plate()
  18. def get_properties(self):
  19. children = self.get_children("properties")
  20. properties = {}
  21. for child in children:
  22. if child.nodeType == child.TEXT_NODE:
  23. properties[child.nodeName] = child.data
  24. elif child.nodeType == child.ELEMENT_NODE:
  25. properties[child.nodeName] = child.firstChild.data
  26. return properties
  27. # TODO : create function for location / characters as they do the same
  28. def set_plate(self):
  29. children = self.get_children("plate") # most recent version
  30. for child in children:
  31. if child.nodeName == "regnum":
  32. self.license_full = child.firstChild.data
  33. elif child.nodeName == "identification-letters":
  34. self.country = child.firstChild.data
  35. elif child.nodeName == "location":
  36. corners = self.get_children("quadrangle", child)
  37. self.corners = []
  38. for corner in corners:
  39. if corner.nodeName == "point":
  40. self.corners.append(Point(corner))
  41. elif child.nodeName == "characters":
  42. characters = child.childNodes
  43. self.license_characters = []
  44. for character in characters:
  45. if character.nodeName == "character":
  46. self.license_characters.append(Character(character))
  47. else:
  48. pass
  49. #print child.nodeName
  50. def get_node(self, node, dom=None):
  51. if not dom:
  52. dom = self.dom
  53. return dom.getElementsByTagName(node)[0]
  54. def get_children(self, node, dom=None):
  55. return self.get_node(node, dom).childNodes