import evil
import boto3
from tempfile import TemporaryDirectory
from madmom.features import DBNDownBeatTrackingProcessor, RNNDownBeatProcessor

SAMPLES_BUCKET = 'samples-test-1'

s3 = boto3.client('s3')

def handler(event, context):
    s3_key = event['s3Key']
    with TemporaryDirectory(ignore_cleanup_errors=True, delete=True) as tempdir:
        in_path = f'{tempdir}/input'
        s3.download_file(SAMPLES_BUCKET, s3_key, in_path)
        beat_processor = RNNDownBeatProcessor(fps=100, num_threads=6)
        down_beat_processor = DBNDownBeatTrackingProcessor(
            beats_per_bar=[3, 4], fps=100, num_threads=6
        )
        dist = beat_processor.process(in_path)
        return { 'result': down_beat_processor.process(dist).tolist() }
