in src/processLambda/app/app.py [0:0]
def handler(event, context):
#This demo is limited in scope to give a starting point for how to process
#produced audio files and should include error checking and more robust logic
#for production use. Large meetings and/or long duration may lead to incomplete
#recordings in this demo.
print(event)
MEETING_ID = event.get('detail').get('meetingId')
print(MEETING_ID)
audioPrefix = SOURCE_PREFIX + '/' + MEETING_ID + '/audio'
videoPrefix = SOURCE_PREFIX + '/' + MEETING_ID + '/video'
audioList = s3.list_objects_v2(
Bucket=SOURCE_BUCKET,
Delimiter='string',
MaxKeys=1000,
Prefix=audioPrefix
)
audioObjects = audioList.get('Contents', [])
print(audioObjects)
videoList = s3.list_objects_v2(
Bucket=SOURCE_BUCKET,
Delimiter='string',
MaxKeys=1000,
Prefix=videoPrefix
)
videoObjects = videoList.get('Contents', [])
print(videoObjects)
if videoObjects:
file_list=[]
file_type = 'video'
for object in videoObjects:
path, filename = os.path.split(object['Key'])
s3.download_file(SOURCE_BUCKET, object['Key'], '/tmp/' + filename)
file_list.append(filename)
objs_keys = list(filter(lambda x : 'mp4' in x, file_list))
print(objs_keys)
attendees = get_attendees(MEETING_ID)
for attendee in attendees:
print("Concatenating " + file_type + " files for " + attendee + "...")
attendeeKeys = list(filter(lambda x: attendee in x, objs_keys))
print(attendeeKeys)
process_files(attendeeKeys, MEETING_ID, file_type, attendee)
else:
print("No videos")
file_list=[]
file_type = 'audio'
for object in audioObjects:
path, filename = os.path.split(object['Key'])
s3.download_file(SOURCE_BUCKET, object['Key'], '/tmp/' + filename)
file_list.append(filename)
objs_keys = filter(lambda x : 'mp4' in x, file_list)
process_files(objs_keys, MEETING_ID, file_type)
return {
"statusCode": 200,
"headers": {
"Content-Type": "application/json",
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'OPTIONS,POST'
}
}