def lambda_handler()

in broadcast-monitoring/src/team_detection/app/text_in_image.py [0:0]


def lambda_handler(event, context):
    """

    :param event: e.g.
    {
      "parsed": {...
      },
      "config": {
        "audio_check_enabled": true,
        "station_logo_check_enabled": true,
        "language_detect_check_enabled": false,
        "team_detect_check_enabled": true
      },
      "frame": {
        ...
        "S3_Bucket": "aws-rnd-broadcast-maas-video-processing-dev",
        "S3_Key": "frames/test_video_single_pipeline/test_1/original/2020/02/10/23/42:43:646000.jpg",
        "Resized_S3_Key": "frames/test_video_single_pipeline/test_1/resized/2020/02/10/23/42:43:646000.jpg"
      }
    }
    :param context:
    :return:
    """
    frame_info = event['frame']
    s3_bucket = frame_info['S3_Bucket']
    s3_key = frame_info['S3_Key']
    detected_text_response = detect_text_from_image(s3_bucket, s3_key)
    logger.debug(f'detect text response: {detected_text_response}')

    detected_lines = [entry['DetectedText'] for entry in detected_text_response if entry['Type'] == 'LINE']
    detected_words = [entry['DetectedText'] for entry in detected_text_response if entry['Type'] == 'WORD']

    check = TeamCheck()
    result = check.execute(event['parsed']['expectedProgram'], detected_text_response)

    with DDBUpdateBuilder(key={'Stream_ID': frame_info['Stream_ID'], 'DateTime': frame_info['DateTime']},
                          table_name=DDB_FRAME_TABLE) as ddb_update_builder:
        ddb_update_builder.update_attr('Detected_Lines', detected_lines)
        ddb_update_builder.update_attr('Detected_Words', detected_words)

        if result:
            for name, value in result.items():
                ddb_update_builder.update_attr(name, value)