from preliminary_experiment import *
from torchaudio.utils import download_asset


if __name__ == '__main__':
    #path = "../../7guys1pack/28 Grams/28 Grams.ogg"
    #path_ex = "../../7guys1pack/Pretty Please/Pretty Please.ogg"
    #read_file_meta_data(path="../../7guys1pack/Banger Machine/Banger Machine.sm")
    #path_pack = "../../7guys1pack/"
    #path_pack = "../../DDR/"
    path_pack = "../../FF-DD/"
    songs = []
    filtered_songs = []
    distances = []
    #print(os.listdir(path_pack))

    iter = 0
    # make a list of songs of file type sm
    for folder in os.listdir(path_pack):
        if iter <= 80:
            path_folder = os.path.join(path_pack, folder)
            if os.path.isdir(path_folder):
                for file in os.listdir(path_folder):
                    if file.endswith(".sm"):
                        songs.append(os.path.join(path_folder, file))
        else:
            break
        iter += 1
    print(songs)

    # filter for songs with only one bpm:
    for song in songs:
        opened_file = simfile.open(song)
        with open(song, 'r', encoding="utf8") as infile:
            print(song)
            loaded_file = simfile.load(infile)

        timing_data = TimingData(opened_file)

        chart = get_middle_chart(loaded_file.charts)
        split_timing = TimingData(opened_file, chart)
        print(f"BPMs splitted: {split_timing.bpms}")

        print(split_timing.bpms.data.__len__())
        #print(len(str(split_timing.bpms.split(", "))))
        if len(str(split_timing.bpms.data.__len__())) == 1:
            filtered_songs.append(song)

    print(filtered_songs)

    # calculate info for each song
    for song in filtered_songs:
        distances.append(read_file_meta_data(path=song))
    # 107 bpm, meter 5
    #distances.append(read_file_meta_data(path="../../7guys1pack/Pretty Please/Pretty Please.sm"))
    # 112 bpm, meter 5
    #distances.append(read_file_meta_data(path="../../7guys1pack/bad boy/bad boy.sm"))
    # 124 bpm,
    #distances.append(read_file_meta_data(path="../../7guys1pack/Banger Machine/Banger Machine.sm"))
    # 150 bpm, meter 4
    #distances.append(read_file_meta_data(path="../../7guys1pack/ALONE [In The Dark]/ALONE [In The Dark].sm"))
    # 125 bpm, meter 4
    #distances.append(read_file_meta_data(path="../../7guys1pack/And Drugs/And Drugs.sm"))
    # 128bpm, meter 6
    #distances.append(read_file_meta_data(path="../../7guys1pack/And Laugh/And Laugh.sm"))
    #distances.append(read_file_meta_data(path="../../7guys1pack/Abberate/Abberate.sm"))
    # 120 bpm, meter 5
    #distances.append(read_file_meta_data(path="../../7guys1pack/Asymmetric Snowflakes/Asymmetric Snowflakes.sm"))
    #distances.append(read_file_meta_data(path="../../7guys1pack/BOY/BOY.sm"))
    # 128 bpm, meter 5
    #distances.append(read_file_meta_data(path="../../7guys1pack/Bring Em Back/Bring Em Back.sm"))
    # 122 bpm, meter 4
    #distances.append(read_file_meta_data(path="../../7guys1pack/Bug A Boo (Joe Stone Remix)/Bug A Boo (Joe Stone Remix).sm"))
    #distances.append(read_file_meta_data(path="../../7guys1pack/Carnival (TEEZ Remix)/Carnival (TEEZ Remix).sm"))
    # 175 bpm, meter 4
    #distances.append(read_file_meta_data(path="../../7guys1pack/Chase the Shadow (2021 Rework)/Chase the Shadow (2021 Rework).sm"))
    #distances.append(read_file_meta_data(path="../../7guys1pack/BOY/BOY.sm"))


    #SAMPLE_GSM = download_asset("tutorial-assets/steam-train-whistle-daniel_simon.gsm")
    #SAMPLE_WAV = download_asset("tutorial-assets/Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042.wav")
    #SAMPLE_WAV_8000 = download_asset("tutorial-assets/Lab41-SRI-VOiCES-src-sp0307-ch127535-sg0042-8000hz.wav")

    print(distances)
    plot_end_histogram(distances, "./outputs/distances.pdf")


    #read_audio(path_ex)
    #read_audio(SAMPLE_WAV)