import os

CIVITAI_API_KEY = os.environ.get("CIVITAI_API_KEY")
HF_TOKEN = os.environ.get("HF_TOKEN")
HF_READ_TOKEN = os.environ.get('HF_READ_TOKEN') # only use for private repo

# - **List Models**
LOAD_DIFFUSERS_FORMAT_MODEL = [
    'votepurchase/animagine-xl-3.1',
    'votepurchase/NSFW-GEN-ANIME-v2',
    'votepurchase/kivotos-xl-2.0',
    'votepurchase/holodayo-xl-2.1',
    'votepurchase/ponyDiffusionV6XL',
    'votepurchase/AnythingXL_xl',
    'votepurchase/7thAnimeXLPonyA_v10',
    'votepurchase/ChilloutMix',
    'votepurchase/NovelAIRemix',
    'votepurchase/NSFW-gen-v2',
    'votepurchase/PerfectDeliberate-Anime_v2',
    'votepurchase/realpony-xl',
    'votepurchase/artiwaifu-diffusion-1.0',
    'votepurchase/Starry-XL-v5.2',
    'votepurchase/Yaki-Dofu-Mix',
    'votepurchase/ebara-pony-v1-sdxl',
    'votepurchase/waiANIMIXPONYXL_v10',
    'votepurchase/counterfeitV30_v30',
    'votepurchase/ebara-pony',
    'votepurchase/Realistic_Vision_V1.4',
    'votepurchase/pony',
    'votepurchase/ponymatureSDXL_ponyeclipse10',
    'votepurchase/waiREALMIX_v70',
    'votepurchase/waiREALCN_v10',
    'votepurchase/PVCStyleModelMovable_pony151',
    'votepurchase/PVCStyleModelMovable_beta27Realistic',
    'votepurchase/PVCStyleModelFantasy_beta12',
    'votepurchase/pvcxl-v1-lora',
    'votepurchase/Realistic_Vision_V2.0',
    'votepurchase/RealVisXL_V4.0',
    'votepurchase/juggernautXL_hyper_8step_sfw',
    'votepurchase/ponyRealism_v21MainVAE',
    'stabilityai/stable-diffusion-xl-base-1.0',
    'black-forest-labs/FLUX.1-dev',
    'John6666/blue-pencil-flux1-v021-fp8-flux',
    'John6666/wai-ani-flux-v10forfp8-fp8-flux',
    'John6666/xe-anime-flux-v04-fp8-flux',
    'John6666/lyh-anime-flux-v2a1-fp8-flux',
    'John6666/carnival-unchained-v10-fp8-flux',
    'Freepik/flux.1-lite-8B-alpha',
    'ostris/OpenFLUX.1',
    'John6666/noobai-xl-nai-xl-epsilonpred10version-sdxl',
    'John6666/noobai-xl-nai-xl-epsilonpred075version-sdxl',
    'John6666/noobai-xl-nai-xl-epsilonpred05version-sdxl',
    'John6666/noobai-cyberfix-v10-sdxl',
    'John6666/noobaiiter-xl-vpred-v075-sdxl',
    'John6666/complicated-noobai-merge-vprediction-sdxl',
    'John6666/noobai-fusion2-vpred-itercomp-v1-sdxl',
    'John6666/noobai-xl-nai-xl-vpredtestversion-sdxl',
    'John6666/chadmix-noobai075-illustrious01-v10-sdxl',
    'OnomaAIResearch/Illustrious-xl-early-release-v0',
    'John6666/obsession-illustriousxl-v21-sdxl',
    'eienmojiki/Anything-XL',
    'eienmojiki/Starry-XL-v5.2',
    'John6666/meinaxl-v2-sdxl',
    'John6666/epicrealism-xl-v10kiss2-sdxl',
    'John6666/epicrealism-xl-v8kiss-sdxl',
    'misri/zavychromaxl_v80',
    'SG161222/RealVisXL_V4.0',
    'SG161222/RealVisXL_V5.0',
    'misri/newrealityxlAllInOne_Newreality40',
    'gsdf/CounterfeitXL',
    'John6666/silvermoon-mix-01xl-v11-sdxl',
    'WhiteAiZ/autismmixSDXL_autismmixConfetti_diffusers',
    'kitty7779/ponyDiffusionV6XL',
    'GraydientPlatformAPI/aniverse-pony',
    'John6666/ras-real-anime-screencap-v1-sdxl',
    'John6666/duchaiten-pony-xl-no-score-v60-sdxl',
    'John6666/mistoon-anime-ponyalpha-sdxl',
    'John6666/3x3x3mixxl-v2-sdxl',
    'John6666/3x3x3mixxl-3dv01-sdxl',
    'John6666/ebara-mfcg-pony-mix-v12-sdxl',
    'John6666/t-ponynai3-v51-sdxl',
    'John6666/t-ponynai3-v65-sdxl',
    'John6666/prefect-pony-xl-v3-sdxl',
    'John6666/mala-anime-mix-nsfw-pony-xl-v5-sdxl',
    'John6666/wai-real-mix-v11-sdxl',
    'John6666/wai-c-v6-sdxl',
    'John6666/iniverse-mix-xl-sfwnsfw-pony-guofeng-v43-sdxl',
    'John6666/sifw-annihilation-xl-v2-sdxl',
    'John6666/photo-realistic-pony-v5-sdxl',
    'John6666/pony-realism-v21main-sdxl',
    'John6666/pony-realism-v22main-sdxl',
    'John6666/cyberrealistic-pony-v63-sdxl',
    'John6666/cyberrealistic-pony-v64-sdxl',
    'John6666/cyberrealistic-pony-v65-sdxl',
    'GraydientPlatformAPI/realcartoon-pony-diffusion',
    'John6666/nova-anime-xl-pony-v5-sdxl',
    'John6666/autismmix-sdxl-autismmix-pony-sdxl',
    'John6666/aimz-dream-real-pony-mix-v3-sdxl',
    'John6666/duchaiten-pony-real-v11fix-sdxl',
    'John6666/duchaiten-pony-real-v20-sdxl',
    'John6666/duchaiten-pony-xl-no-score-v70-sdxl',
    'Eugeoter/artiwaifu-diffusion-2.0',
    'comin/IterComp',
    'KBlueLeaf/Kohaku-XL-Zeta',
    'cagliostrolab/animagine-xl-3.1',
    'yodayo-ai/kivotos-xl-2.0',
    'yodayo-ai/holodayo-xl-2.1',
    'yodayo-ai/clandestine-xl-1.0',
    'digiplay/majicMIX_sombre_v2',
    'digiplay/majicMIX_realistic_v6',
    'digiplay/majicMIX_realistic_v7',
    'digiplay/DreamShaper_8',
    'digiplay/BeautifulArt_v1',
    'digiplay/DarkSushi2.5D_v1',
    'digiplay/darkphoenix3D_v1.1',
    'digiplay/BeenYouLiteL11_diffusers',
    'Yntec/RevAnimatedV2Rebirth',
    'youknownothing/cyberrealistic_v50',
    'youknownothing/deliberate-v6',
    'GraydientPlatformAPI/deliberate-cyber3',
    'GraydientPlatformAPI/picx-real',
    'GraydientPlatformAPI/perfectworld6',
    'emilianJR/epiCRealism',
    'votepurchase/counterfeitV30_v30',
    'votepurchase/ChilloutMix',
    'Meina/MeinaMix_V11',
    'Meina/MeinaUnreal_V5',
    'Meina/MeinaPastel_V7',
    'GraydientPlatformAPI/realcartoon3d-17',
    'GraydientPlatformAPI/realcartoon-pixar11',
    'GraydientPlatformAPI/realcartoon-real17',
    'nitrosocke/Ghibli-Diffusion',
    'KBlueLeaf/Kohaku-XL-Epsilon-rev2',
    'KBlueLeaf/Kohaku-XL-Epsilon-rev3',
    'KBlueLeaf/Kohaku-XL-Zeta',
    'kayfahaarukku/UrangDiffusion-2.0',
    'kayfahaarukku/irAsu-1.0',
    'Eugeoter/artiwaifu-diffusion-2.0',
    'comin/IterComp',
    'OnomaAIResearch/Illustrious-xl-early-release-v0',
    'Raelina/Rae-Diffusion-XL-V2',
    'Raelina/Raemu-XL-V4',
    'Raelina/Raehoshi-illust-XL',
    'Raelina/Raehoshi-illust-xl-2',
    'Raelina/Raehoshi-Illust-XL-2.1',
    "camenduru/FLUX.1-dev-diffusers",
    "black-forest-labs/FLUX.1-schnell",
    "sayakpaul/FLUX.1-merged",
    "ostris/OpenFLUX.1",
    "multimodalart/FLUX.1-dev2pro-full",
    "Raelina/Raemu-Flux",
]

DIFFUSERS_FORMAT_LORAS = [
    "nerijs/animation2k-flux",
    "XLabs-AI/flux-RealismLora",
]

# List all Models for specified user
HF_MODEL_USER_LIKES = ["votepurchase"] # sorted by number of likes
HF_MODEL_USER_EX = ["John6666"] # sorted by a special rule


# - **Download Models**
DOWNLOAD_MODEL_LIST = [
]

# - **Download VAEs**
DOWNLOAD_VAE_LIST = [
    'https://huggingface.co/madebyollin/sdxl-vae-fp16-fix/resolve/main/sdxl.vae.safetensors?download=true',
    'https://huggingface.co/nubby/blessed-sdxl-vae-fp16-fix/resolve/main/sdxl_vae-fp16fix-c-1.1-b-0.5.safetensors?download=true',
    "https://huggingface.co/nubby/blessed-sdxl-vae-fp16-fix/blob/main/sdxl_vae-fp16fix-blessed.safetensors",
    "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.ckpt",
    "https://huggingface.co/stabilityai/sd-vae-ft-ema-original/resolve/main/vae-ft-ema-560000-ema-pruned.ckpt",
]

# - **Download LoRAs**
DOWNLOAD_LORA_LIST = [
]

# Download Embeddings
DOWNLOAD_EMBEDS = [
    'https://huggingface.co/datasets/Nerfgun3/bad_prompt/blob/main/bad_prompt_version2.pt',
    'https://huggingface.co/embed/negative/resolve/main/EasyNegativeV2.safetensors',
    'https://huggingface.co/embed/negative/resolve/main/bad-hands-5.pt',
]

DIRECTORY_MODELS = 'models'
DIRECTORY_LORAS = 'loras'
DIRECTORY_VAES = 'vaes'
DIRECTORY_EMBEDS = 'embedings'
DIRECTORY_EMBEDS_SDXL = 'embedings_xl'
DIRECTORY_EMBEDS_POSITIVE_SDXL = 'embedings_xl/positive'

directories = [DIRECTORY_MODELS, DIRECTORY_LORAS, DIRECTORY_VAES, DIRECTORY_EMBEDS, DIRECTORY_EMBEDS_SDXL, DIRECTORY_EMBEDS_POSITIVE_SDXL]
for directory in directories:
    os.makedirs(directory, exist_ok=True)

HF_LORA_PRIVATE_REPOS1 = ['John6666/loratest1', 'John6666/loratest3', 'John6666/loratest4', 'John6666/loratest6']
HF_LORA_PRIVATE_REPOS2 = ['John6666/loratest10', 'John6666/loratest11','John6666/loratest'] # to be sorted as 1 repo
HF_LORA_PRIVATE_REPOS = HF_LORA_PRIVATE_REPOS1 + HF_LORA_PRIVATE_REPOS2
HF_LORA_ESSENTIAL_PRIVATE_REPO = 'John6666/loratest1' # to be downloaded on run app
HF_VAE_PRIVATE_REPO = 'John6666/vaetest'
HF_SDXL_EMBEDS_NEGATIVE_PRIVATE_REPO = 'John6666/embeddingstest'
HF_SDXL_EMBEDS_POSITIVE_PRIVATE_REPO = 'John6666/embeddingspositivetest'