in source/consumer/lambda_handler.py [0:0]
def process_face_detection(asset, workflow, results):
metadata = json.loads(results)
es = connect_es(es_endpoint)
extracted_items = []
if isinstance(metadata, list):
for page in metadata:
# Parse schema for video:
if "Faces" in page:
for item in page["Faces"]:
try:
item["Operator"] = "face_detection"
item["Workflow"] = workflow
if "Face" in item:
# flatten the inner Face array
item["BoundingBox"] = item["Face"]["BoundingBox"]
item["AgeRange"] = item["Face"]["AgeRange"]
item["Smile"] = item["Face"]["Smile"]
item["Eyeglasses"] = item["Face"]["Eyeglasses"]
item["Sunglasses"] = item["Face"]["Sunglasses"]
item["Gender"] = item["Face"]["Gender"]
item["Beard"] = item["Face"]["Beard"]
item["Mustache"] = item["Face"]["Mustache"]
item["EyesOpen"] = item["Face"]["EyesOpen"]
item["MouthOpen"] = item["Face"]["MouthOpen"]
item["Emotions"] = item["Face"]["Emotions"]
item["Confidence"] = item["Face"]["Confidence"]
# Delete the flattened array
del item["Face"]
extracted_items.append(item)
except KeyError as e:
print("KeyError: " + str(e))
print("Item: " + json.dumps(item))
# Parse schema for images:
if "FaceDetails" in page:
for item in page["FaceDetails"]:
item["Operator"] = "face_detection"
item["Workflow"] = workflow
extracted_items.append(item)
else:
# Parse schema for videos:
if "Faces" in metadata:
for item in metadata["Faces"]:
try:
item["Operator"] = "face_detection"
item["Workflow"] = workflow
if "Face" in item:
# flatten the inner Face array
item["BoundingBox"] = item["Face"]["BoundingBox"]
item["AgeRange"] = item["Face"]["AgeRange"]
item["Smile"] = item["Face"]["Smile"]
item["Eyeglasses"] = item["Face"]["Eyeglasses"]
item["Sunglasses"] = item["Face"]["Sunglasses"]
item["Gender"] = item["Face"]["Gender"]
item["Beard"] = item["Face"]["Beard"]
item["Mustache"] = item["Face"]["Mustache"]
item["EyesOpen"] = item["Face"]["EyesOpen"]
item["MouthOpen"] = item["Face"]["MouthOpen"]
item["Emotions"] = item["Face"]["Emotions"]
item["Confidence"] = item["Face"]["Confidence"]
# Delete the flattened array
del item["Face"]
extracted_items.append(item)
except KeyError as e:
print("KeyError: " + str(e))
print("Item: " + json.dumps(item))
# Parse schema for images:
if "FaceDetails" in metadata:
for item in metadata["FaceDetails"]:
item["Operator"] = "face_detection"
item["Workflow"] = workflow
extracted_items.append(item)
bulk_index(es, asset, "face_detection", extracted_items)