import os
import glob
import tqdm
import argparse
from suno_utils.audio import Audio


# get file list
filelist = glob.glob("/app/suno/minz/datasets/fma/fma_large/*/*.mp3")
print("%d files exsist" % len(filelist))

# parse
parser = argparse.ArgumentParser()
parser.add_argument("--index", required=True, help="partial index")
parser.add_argument("--num_partial", required=True, help="number of partial data")
args = parser.parse_args()
index = int(args.index)
num_partial = int(args.num_partial)

# split data
hop = len(filelist) // num_partial
if index == num_partial:
    filelist = filelist[hop * index - 1:]
else:
    filelist = filelist[hop * index : (index + 1) * hop]

# resample audio
save_path = "/app/suno/data/audio_mono_24khz/fma/audio"

for fn in tqdm.tqdm(filelist):
    save_fn = os.path.join(save_path, fn.split("/")[-1][:-3] + "wav")
    if not os.path.exists(save_fn):
        try:
            audio = Audio.from_file(fn, sample_rate=24000)
            audio.write_wav(save_fn)
        except:
            continue
