import os
import csv
import glob
from typing import List


def find_all_audio_files(audio_dir: str, exts: List[str] = ["wav"]):
    # find all audio files
    filepaths = []
    for ext in exts:
        filepaths += glob.glob(
            os.path.join(audio_dir, "**", f"*.{ext}"), recursive=True
        )
    return filepaths


if __name__ == "__main__":

    for subset in ["val", "train"]:
        print(subset)
        if subset == "train":
            top_dir = "/app/suno/data/audio_2ch_12khz_lg/train"
        else:
            top_dir = "/app/suno/data/audio_2ch_12khz_lg/val"
        # find all directories in subset
        datasets = glob.glob(os.path.join(top_dir, "*"))
        all_filepaths = []
        for dataset in datasets:
            print(dataset)
            dataset_dir = os.path.join(top_dir, dataset)
            filepaths = glob.glob(os.path.join(dataset_dir, "*.wav"))
            all_filepaths.extend(filepaths)

        manifest_path = os.path.join(os.path.dirname(top_dir), f"{subset}_manifest.csv")
        with open(manifest_path, "w") as fp:
            fp.write(f"path\n")
            for filepath in all_filepaths:
                fp.write(f"{filepath}\n")
