in source/mediainfo/lambda_function.py [0:0]
def lambda_handler(event, context):
print(f'REQUEST:: {json.dumps(event)}')
try:
metadata = {}
metadata['filename'] = event['srcVideo']
dir_path = os.path.dirname(os.path.realpath(__file__))
executable_path = os.path.join(dir_path, 'bin', 'mediainfo')
signed_url = get_signed_url(event['srcBucket'], event['srcVideo'])
json_content = json.loads(subprocess.check_output([executable_path, '--Output=JSON', signed_url]))
print(f'MEDIAINFO OUTPUT:: {json.dumps(json_content)}')
tracks = json_content['media']['track']
for track in tracks:
track_type = track['@type']
if (track_type == 'General'):
metadata['container'] = parse_general_attributes(track)
elif (track_type == 'Video'):
metadata.setdefault('video', []).append(parse_video_attributes(track))
elif (track_type == 'Audio'):
metadata.setdefault('audio', []).append(parse_audio_attributes(track))
elif (track_type == 'Text'):
metadata.setdefault('text', []).append(parse_text_attributes(track))
else:
print(f'Unsupported: {track_type}')
event['srcMediainfo'] = json.dumps(metadata, indent=2)
print(f'RESPONSE:: {json.dumps(metadata)}')
return event
except Exception as err:
payload = {
'guid': event['guid'],
'event': event,
'function': os.environ.get('AWS_LAMBDA_FUNCTION_NAME'),
'error': str(err)
}
lambda_cli = boto3.client('lambda')
lambda_cli.invoke(
FunctionName=os.environ.get('ErrorHandler'),
InvocationType='RequestResponse',
Payload=json.dumps(payload)
)
raise err