def handler()

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'            
        }
    }