import os
import json
import torch
import torchaudio

if __name__ == "__main__":
    for mode in ["worst", "best"]:
        if not os.path.isdir(mode):
            os.makedirs(mode)

        with open(f"{mode}_quality.json", "r") as fp:
            results = json.load(fp)

        for idx, (filepath, result) in enumerate(results.items()):
            filename = os.path.basename(filepath).replace(".wav", "")
            x, sr = torchaudio.load(filepath)
            x /= x.abs().max()
            start_frame = x.shape[-1] // 2
            end_frame = start_frame + 262144
            x_crop = x[:, start_frame:end_frame]

            score = result["score"]

            filepath = os.path.join(
                f"{mode}", f"{idx:02d}-{normalized_score:02.2f}-{filename}.wav"
            )
            torchaudio.save(filepath, x_crop, sr)

            if idx > 25:
                break
