import re, requests

UCAR_URL = "https://www2.mmm.ucar.edu/rt/amps/YOPP-SH-WINTER/txtfiles/"

def download_ucar_files():
    filenames = []

    with open("ucar_source.txt") as file:
        source = file.read()
        source = source.split("\n")

    ## Loop through the HTML source
    for line in source:
        ## Find lines with '.txt' -- these are the links
        if ".txt" in line:
            ## Use regular expressions to extract filename
            filename = re.search('href=".*txt', line).group()
            filename = filename.replace('href="', '')
            filename, _ = filename.split(" ")
            filenames.append(filename)

    ## Loop through files
    for ind, filename in enumerate(filenames):
        try:
            ## Assemble file URL + download
            url = UCAR_URL + filename
            response = requests.get(url)
            ## Write file to current working directory
            with open(filename, mode="wb") as file:
                file.write(response.content)
                print(f"{filename} saved\n{ind}/{len(filenames)} files downloaded")
        except Exception as e:
            print(f"Could not download {filename}:\n{e}")
            continue

if __name__ == "__main__":
    download_ucar_files()