#!/usr/bin/python
# -*- coding: utf-8 -*-
import shutil
from pathlib import Path

import requests

ANIME4K_COMMIT = "master"
GITHUB_GLSL_ROOT = (
    f"https://raw.githubusercontent.com/bloc97/Anime4K/{ANIME4K_COMMIT}/glsl"
)
SHADERS_DIR = Path(__file__).parent.parent / "data"


def download_and_combine_files():

    modes = {
        "ModeA": [
            f"{GITHUB_GLSL_ROOT}/Restore/Anime4K_Clamp_Highlights.glsl",
            f"{GITHUB_GLSL_ROOT}/Restore/Anime4K_Restore_CNN_VL.glsl",
            f"{GITHUB_GLSL_ROOT}/Upscale/Anime4K_Upscale_CNN_x2_VL.glsl",
            f"{GITHUB_GLSL_ROOT}/Upscale/Anime4K_AutoDownscalePre_x2.glsl",
            f"{GITHUB_GLSL_ROOT}/Upscale/Anime4K_AutoDownscalePre_x4.glsl",
            f"{GITHUB_GLSL_ROOT}/Upscale/Anime4K_Upscale_CNN_x2_M.glsl",
        ]
    }

    for mode in modes:
        file_contents = ""
        for file in modes[mode]:
            response = requests.get(file, timeout=5)
            response.raise_for_status()
            file_contents += response.text + "\n"

        with (SHADERS_DIR / Path(f"Anime4K_{mode}.glsl")).open("w") as output_file:
            output_file.write(file_contents)


if __name__ == "__main__":
    # clear shaders directory
    if SHADERS_DIR.exists():
        shutil.rmtree(SHADERS_DIR)
    SHADERS_DIR.mkdir(exist_ok=True)

    # download and combine shaders
    download_and_combine_files()