Spaces:
Running
Running
""" | |
Stable Diffusion Webui Version 1.6.0 | |
https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.6.0 | |
""" | |
commit_id=r"4afaaf8a020c1df457bcf7250cb1c7f609699fa7" #Version 1.61 | |
import os | |
from sys import executable | |
import subprocess | |
import pathlib | |
import gc | |
def Gitclone(URI:str,ClonePath:pathlib.Path ) -> int : | |
if pathlib.Path.exists(ClonePath): | |
return 0 | |
for z in range(10): | |
i=subprocess.run([r"git",r"clone",str(URI),str(ClonePath)]) | |
if(i.returncode == 0 ): | |
del i | |
return 0 | |
else : | |
del i | |
raise Exception(str.format("clone \'{0}\' failed",URI)) | |
def DownLoad(URI:str,DownloadPath:pathlib.Path,DownLoadFileName:str ) -> int: | |
if (DownloadPath / DownLoadFileName).is_file(): return 0 | |
for z in range(10): | |
i=subprocess.run([r"aria2c",r"-c",r"-x" ,r"16", r"-s",r"16", r"-k" ,r"1M" ,r"-m",r"0",r"--enable-mmap=false",r"--console-log-level=error",r"-d",str(DownloadPath),r"-o",DownLoadFileName,URI]); | |
if(i.returncode == 0 ): | |
del i | |
gc.collect() | |
return 0 | |
else : | |
del i | |
raise Exception(str.format("download \'{0}\' failed",URI)) | |
user_home =pathlib.Path.home().resolve() | |
os.chdir(str(user_home)) | |
#clone stable-diffusion-webui repo | |
print("cloning stable-diffusion-webui repo") | |
Gitclone(r"https://github.com/AUTOMATIC1111/stable-diffusion-webui.git",user_home / r"stable-diffusion-webui") | |
os.chdir(str(user_home / r"stable-diffusion-webui")) | |
os.system("git reset --hard "+commit_id) | |
#install extensions | |
print("installing extensions") | |
Gitclone(r"https://huggingface.co/embed/negative",user_home / r"stable-diffusion-webui" / r"embeddings" / r"negative") | |
Gitclone(r"https://huggingface.co/embed/lora",user_home / r"stable-diffusion-webui" / r"models" / r"Lora" / r"positive") | |
DownLoad(r"https://huggingface.co/embed/upscale/resolve/main/4x-UltraSharp.pth",user_home / r"stable-diffusion-webui" / r"models" / r"ESRGAN" ,r"4x-UltraSharp.pth") | |
while (True): | |
i=subprocess.run([r"wget",r"https://raw.githubusercontent.com/camenduru/stable-diffusion-webui-scripts/main/run_n_times.py",r"-O",str(user_home / r"stable-diffusion-webui" / r"scripts" / r"run_n_times.py")]) | |
if(i.returncode == 0 ): | |
del i | |
gc.collect() | |
break | |
else : | |
del i | |
#Gitclone(r"https://github.com/deforum-art/deforum-for-automatic1111-webui",user_home / r"stable-diffusion-webui" / r"extensions" / r"deforum-for-automatic1111-webui" ) | |
Gitclone(r"https://github.com/wcde/custom-hires-fix-for-automatic1111",user_home / r"stable-diffusion-webui" / r"extensions" / r"custom-hires-fix-for-automatic1111" ) | |
Gitclone(r"https://github.com/Coyote-A/ultimate-upscale-for-automatic1111",user_home / r"stable-diffusion-webui" / r"extensions" / r"ultimate-upscale-for-automatic1111" ) | |
Gitclone(r"https://github.com/AlUlkesh/stable-diffusion-webui-images-browser",user_home / r"stable-diffusion-webui" / r"extensions"/ r"stable-diffusion-webui-images-browser") | |
Gitclone(r"https://github.com/camenduru/stable-diffusion-webui-huggingface",user_home / r"stable-diffusion-webui" / r"extensions" / r"stable-diffusion-webui-huggingface") | |
# keeping this in case if someone wants to revert to this extension, I guess? | |
#Gitclone(r"https://github.com/camenduru/sd-civitai-browser",user_home / r"stable-diffusion-webui" / r"extensions" / r"sd-civitai-browser") | |
Gitclone(r"https://github.com/BlafKing/sd-civitai-browser-plus",user_home / r"stable-diffusion-webui" / r"extensions" / r"sd-civitai-browser-plus") | |
# keeping this in case if someone wants to actually use this extension, I guess? | |
#Gitclone(r"https://github.com/kohya-ss/sd-webui-additional-networks",user_home / r"stable-diffusion-webui" / r"extensions" / r"sd-webui-additional-networks") | |
Gitclone(r"https://github.com/Mikubill/sd-webui-controlnet",user_home / r"stable-diffusion-webui" / r"extensions" / r"sd-webui-controlnet") | |
# the following four are disabled because of issues breaking the whole thing, and since | |
# these extensions are beyond my control anyway, these will be all disabled for the time being | |
# until their respective authors fixes these issues. deal with it, folks. | |
#Gitclone(r"https://github.com/fkunn1326/openpose-editor",user_home / r"stable-diffusion-webui" / r"extensions" / r"openpose-editor") | |
#Gitclone(r"https://github.com/wywywywy/sd-webui-depth-lib",user_home / r"stable-diffusion-webui" / r"extensions" / r"sd-webui-depth-lib") | |
#Gitclone(r"https://github.com/hnmr293/posex",user_home / r"stable-diffusion-webui" / r"extensions" / r"posex") | |
#Gitclone(r"https://github.com/nonnonstop/sd-webui-3d-open-pose-editor",user_home / r"stable-diffusion-webui" / r"extensions" / r"sd-webui-3d-open-pose-editor") | |
#中文本地化的请解除下一行的注释 | |
#Gitclone(r"https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN.git",user_home / r"stable-diffusion-webui" / r"extensions" / r"stable-diffusion-webui-localization-zh_CN") | |
Gitclone(r"https://github.com/DominikDoom/a1111-sd-webui-tagcomplete.git" , user_home / r"stable-diffusion-webui" / r"extensions" / r"a1111-sd-webui-tagcomplete") | |
Gitclone(r"https://github.com/camenduru/sd-webui-tunnels",user_home / r"stable-diffusion-webui" / r"extensions" / r"sd-webui-tunnels") | |
Gitclone(r"https://github.com/etherealxx/batchlinks-webui",user_home / r"stable-diffusion-webui" / r"extensions" / r"batchlinks-webui") | |
#Gitclone(r"https://github.com/catppuccin/stable-diffusion-webui",user_home / r"stable-diffusion-webui" / r"extensions" / r"stable-diffusion-webui-catppuccin") | |
Gitclone(r"https://github.com/AUTOMATIC1111/stable-diffusion-webui-rembg",user_home / r"stable-diffusion-webui" / r"extensions" / r"stable-diffusion-webui-rembg") | |
Gitclone(r"https://github.com/ashen-sensored/stable-diffusion-webui-two-shot",user_home / r"stable-diffusion-webui" / r"extensions" / r"stable-diffusion-webui-two-shot") | |
#Gitclone(r"https://github.com/camenduru/sd_webui_stealth_pnginfo",user_home / r"stable-diffusion-webui" / r"extensions" / r"sd_webui_stealth_pnginfo") | |
os.chdir(user_home / r"stable-diffusion-webui") | |
#download ControlNet models | |
print("extensions dolwnload done .\ndownloading ControlNet models") | |
dList =[r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11e_sd15_ip2p_fp16.safetensors", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11e_sd15_shuffle_fp16.safetensors", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_canny_fp16.safetensors", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11f1p_sd15_depth_fp16.safetensors", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_inpaint_fp16.safetensors", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_lineart_fp16.safetensors", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_mlsd_fp16.safetensors", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_normalbae_fp16.safetensors", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_openpose_fp16.safetensors", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_scribble_fp16.safetensors", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_seg_fp16.safetensors", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15_softedge_fp16.safetensors", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11p_sd15s2_lineart_anime_fp16.safetensors", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/control_v11f1e_sd15_tile_fp16.safetensors", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/raw/main/control_v11e_sd15_ip2p_fp16.yaml", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/raw/main/control_v11e_sd15_shuffle_fp16.yaml", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/raw/main/control_v11p_sd15_canny_fp16.yaml", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/raw/main/control_v11f1p_sd15_depth_fp16.yaml", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/raw/main/control_v11p_sd15_inpaint_fp16.yaml", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/raw/main/control_v11p_sd15_lineart_fp16.yaml", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/raw/main/control_v11p_sd15_mlsd_fp16.yaml", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/raw/main/control_v11p_sd15_normalbae_fp16.yaml", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/raw/main/control_v11p_sd15_openpose_fp16.yaml", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/raw/main/control_v11p_sd15_scribble_fp16.yaml", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/raw/main/control_v11p_sd15_seg_fp16.yaml", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/raw/main/control_v11p_sd15_softedge_fp16.yaml", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/raw/main/control_v11p_sd15s2_lineart_anime_fp16.yaml", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/raw/main/control_v11f1e_sd15_tile_fp16.yaml", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/t2iadapter_style_sd14v1.pth", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/t2iadapter_sketch_sd14v1.pth", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/t2iadapter_seg_sd14v1.pth", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/t2iadapter_openpose_sd14v1.pth", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/t2iadapter_keypose_sd14v1.pth", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/t2iadapter_depth_sd14v1.pth", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/t2iadapter_canny_sd14v1.pth", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/t2iadapter_canny_sd15v2.pth", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/t2iadapter_depth_sd15v2.pth", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/t2iadapter_sketch_sd15v2.pth", | |
r"https://huggingface.co/ckpt/ControlNet-v1-1/resolve/main/t2iadapter_zoedepth_sd15v1.pth"] | |
for i in range(0,len(dList)): DownLoad(dList[i],user_home / r"stable-diffusion-webui" / r"extensions" / "sd-webui-controlnet" / r"models",pathlib.Path(dList[i]).name) | |
del dList | |
#download model | |
#you can change model download address here | |
print("ControlNet models download done.\ndownloading model") | |
#Stable Diffusion Checkpoint Model | |
#anything version4.5 | |
DownLoad(r"https://huggingface.co/ckpt/anything-v4.0/resolve/main/anything-v4.5-pruned.ckpt",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"anything-v4.5-pruned.ckpt") | |
DownLoad(r"https://huggingface.co/ckpt/anything-v4.0/resolve/main/anything-v4.0.vae.pt",user_home / r"stable-diffusion-webui" / r"models" / r"VAE",r"anything-v4.0.vae.pt") | |
#anythingV5-Ink | |
DownLoad(r"https://civitai.com/api/download/models/90854",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"AnythingV5Ink_ink.safetensors") | |
#MeinaMixV11 | |
DownLoad(r"https://civitai.com/api/download/models/119057",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"meinamix_meinaV11.safetensors") | |
# ==optional checkpoint models (and misc stuff)== | |
# by default, none of them are installed (mainly because of storage space reasons), | |
# unless you uncomment one of them just to actually use them. | |
# some of them generate 3d-like images, and may or may not actually generate | |
# 2d images than the least you'd most expect. | |
#CounterfeitV3 | |
#DownLoad(r"https://huggingface.co/gsdf/Counterfeit-V3.0/resolve/main/Counterfeit-V3.0_fp16.safetensors",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"Counterfeit-V3.0_fp16.safetensors") | |
#AbyssOrangeMix2 sfw | |
#DownLoad(r"https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix2/AbyssOrangeMix2_sfw.safetensors",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"AbyssOrangeMix2_sfw.safetensors") | |
#DownLoad(r"https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/VAEs/orangemix.vae.pt",user_home / r"stable-diffusion-webui" / r"models" / r"VAE",r"orangemix.vae.pt") | |
#DreamShaper version 8 | |
DownLoad(r"https://civitai.com/api/download/models/128713",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"dreamshaper_8.safetensors") | |
#XXMix_9realistic (v4.0) | |
#DownLoad(r"https://civitai.com/api/download/models/102222",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"xxmix9realistic_v40.safetensors") | |
#MeinaPastel versions 5 and 6 | |
#DownLoad(r"https://civitai.com/api/download/models/108289",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"meinapastel_v6Pastel.safetensors") | |
#DownLoad(r"https://huggingface.co/Meina/MeinaPastel/resolve/main/MeinaPastelV5%20-%20Baked%20VAE.safetensors",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"MeinaPastelV5_BakedVAE.safetensors") | |
#DownLoad(r"https://huggingface.co/Meina/MeinaPastel/resolve/main/MeinaPastelV5%20-%20Without%20VAE.safetensors",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"MeinaPastelV5_WithoutVAE.safetensors") | |
#tb_zANIME+mix | |
#DownLoad(r"https://civitai.com/api/download/models/197115",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"tbZanimeMix_v10.safetensors") | |
#MMT5 | |
#DownLoad(r"https://civitai.com/api/download/models/160277",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"mmt5_v3.safetensors") | |
#AingDiffusion | |
#DownLoad(r"https://civitai.com/api/download/models/249329",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"aingdiffusion_v13.safetensors") | |
#Sweet-mix version2.2(flat) (with blessed2 VAE included) | |
#DownLoad(r"https://civitai.com/api/download/models/158294",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"sweetMix_v22Flat.safetensors") | |
#DownLoad(r"https://civitai.com/api/download/models/121302",user_home / r"stable-diffusion-webui" / r"models" / r"VAE",r"blessed2_v1.pt") | |
#AnyLoRA | |
DownLoad(r"https://civitai.com/api/download/models/95489",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"anyloraCheckpoint_bakedvaeBlessedFp16.safetensors") | |
#Sevan Mix | |
#DownLoad(r"https://civitai.com/api/download/models/226816",user_home / r"stable-diffusion-webui" / r"models" / r"Stable-diffusion",r"sevanMix_v10.safetensors") | |
#MasterVae | |
#DownLoad(r"https://civitai.com/api/download/models/141727",user_home / r"stable-diffusion-webui" / r"models" / r"VAE",r"mastervae_v1Pt.pt") | |
#Lora Model | |
#Better Light | |
#DownLoad(r"https://civitai.com/api/download/models/39885",user_home / r"stable-diffusion-webui" / r"extensions" / r"sd-webui-additional-networks" / r"models"/ r"lora",r"Better_light.safetensors") | |
DownLoad(r"https://civitai.com/api/download/models/39885",user_home / r"stable-diffusion-webui" / r"models" / r"Lora",r"Better_light.safetensors") | |
#Detail Tweaker LoRA | |
#DownLoad(r"https://civitai.com/api/download/models/62833",user_home / r"stable-diffusion-webui" / r"extensions" / r"sd-webui-additional-networks" / r"models"/ r"lora",r"add_detail.safetensors") | |
DownLoad(r"https://civitai.com/api/download/models/62833",user_home / r"stable-diffusion-webui" / r"models" / r"Lora",r"add_detail.safetensors") | |
#Add More Details - Detail Enhancer / Tweaker | |
#DownLoad(r"https://civitai.com/api/download/models/87153",user_home / r"stable-diffusion-webui" / r"extensions" / r"sd-webui-additional-networks" / r"models"/ r"lora",r"more_details.safetensors") | |
DownLoad(r"https://civitai.com/api/download/models/87153",user_home / r"stable-diffusion-webui" / r"models" / r"Lora",r"more_details.safetensors") | |
#Backlighting | |
#DownLoad(r"https://civitai.com/api/download/models/39164",user_home / r"stable-diffusion-webui" / r"extensions" / r"sd-webui-additional-networks" / r"models"/ r"lora",r"backlighting.safetensors") | |
DownLoad(r"https://civitai.com/api/download/models/39164",user_home / r"stable-diffusion-webui" / r"models" / r"Lora",r"backlighting.safetensors") | |
# ==optional lora models (and misc stuff)== | |
# by default, none of them are installed (mainly because of storage space reasons), | |
# unless you uncomment one of them just to actually use them. | |
# ==weird fact== | |
# Turns out that A1111 seem to be case sensitive about the first letter being an uppercase, | |
# which may explain the reason why it's not showing up in the Lora tab. | |
# I'm wondering why the additional networks extension had to be installed because of | |
# some issue the original author had to deal with, something they never bothered | |
# to fix, for whatever reason. | |
#LAS | |
#DownLoad(r"https://civitai.com/api/download/models/21065",user_home / r"stable-diffusion-webui" / r"extensions" / r"sd-webui-additional-networks" / r"models"/ r"lora",r"LAS.safetensors") | |
#DownLoad(r"https://civitai.com/api/download/models/21065",user_home / r"stable-diffusion-webui" / r"models" / r"Lora",r"LAS.safetensors") | |
#GFPGAN Model | |
#detection Resnet50 | |
DownLoad(r"https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth",user_home / r"stable-diffusion-webui"/r"models"/r"GFPGAN",r"detection_Resnet50_Final.pth") | |
#parsing_parsenet | |
DownLoad(r"https://github.com/xinntao/facexlib/releases/download/v0.2.2/parsing_parsenet.pth",user_home / r"stable-diffusion-webui"/r"models"/r"GFPGAN",r"parsing_parsenet.pth") | |
#GFPGANv1.4 | |
DownLoad(r"https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.4.pth",user_home / r"stable-diffusion-webui"/r"models"/r"GFPGAN",r"GFPGANv1.4.pth") | |
#strt Stable Diffusion Webui | |
print("Done\nStarting Webui...") | |
os.chdir(user_home / r"stable-diffusion-webui") | |
# ==CPU Option== | |
# this is the default startup setting if you're not planning to | |
# run your duplicated space on a GPU. | |
# if you are planning to run your duplicated space on | |
# CPU upgrade, this default startup setting is pretty much | |
# enough as it gets, since it's more or less the same as the | |
# the other option, albeit a faster processor and more system RAM... | |
# yeah, that's supported, so it's fine I guess. | |
while True: | |
ret=subprocess.run([executable ,user_home / r"stable-diffusion-webui" / r"launch.py",r"--precision",r"full",r"--no-half",r"--no-half-vae",r"--enable-insecure-extension-access",r"--medvram",r"--skip-torch-cuda-test",r"--enable-console-prompts",r"--ui-settings-file="+str(pathlib.Path(__file__).parent /r"config.json")]) | |
if(ret.returncode == 0 ): | |
del ret | |
gc.collect() | |
else : | |
del ret | |
del os ,user_home ,pyexecutable ,subprocess | |
# ==GPU Option (UNTESTED)== | |
# if you are planning to run your duplicated space on a GPU, you must | |
# first comment out the default startup setting above this message | |
# to do so, and then after that, uncomment this below that is commented | |
# out by default in order to make the most out of it, if this is | |
# going to run on a GPU. | |
# | |
# do not use this option if the space is running on | |
# CPU upgrade, instead, use the default option above if you are | |
# planning to run your duplicated space on CPU upgrade. | |
# | |
# do not leave the former uncommented if you are going to | |
# uncomment the other startup option in case if you're running | |
# it on a GPU. You must pick one option, but not both at the | |
# same time, because it might cause issues and/or runtime | |
# errors in that case. | |
# | |
# if there's any issues and/or errors for this option below, | |
# be sure to report any issues about this option or maybe | |
# at least give feedback on this anyway, because it's not | |
# really tested that much at the moment. | |
#while True: | |
# ret=subprocess.run([executable ,user_home / r"stable-diffusion-webui" / r"launch.py",r"--xformers",r"--no-half-vae",r"--enable-insecure-extension-access",r"--skip-torch-cuda-test",r"--enable-console-prompts",r"--ui-settings-file="+str(pathlib.Path(__file__).parent /r"config.json")]) | |
# if(ret.returncode == 0 ): | |
# del ret | |
# gc.collect() | |
# else : | |
# del ret | |
#del os ,user_home ,pyexecutable ,subprocess |