| from IPython.display import display, HTML, clear_output, Image | |
| from ipywidgets import widgets, Layout | |
| from IPython import get_ipython | |
| from pathlib import Path | |
| import subprocess, time, os, shlex | |
| from nenen88 import pull, say, download, clone, tempe | |
| version = "v1.9.4" | |
| repo = f"git clone -q -b {version} https://github.com/gutris1/asd" | |
| home = Path.home() | |
| webui = home / "asd" | |
| img = home / ".conda/loading.png" | |
| os.chdir(home) | |
| if webui.exists(): | |
| git_dir = webui / '.git' | |
| if git_dir.exists(): | |
| os.chdir(webui) | |
| commit_hash = os.popen('git rev-parse HEAD').read().strip() | |
| if commit_hash != version: | |
| get_ipython().system(f"git pull origin {version}") | |
| get_ipython().system("git fetch --tags") | |
| else: | |
| css = home / ".conda/setup.css" | |
| devnull = {"stdout": subprocess.DEVNULL, "stderr": subprocess.DEVNULL} | |
| get_ipython().system(f"curl -sLo {css} https://github.com/gutris1/segsmaker/raw/main/ui/sd/asd/setup.css") | |
| loading = widgets.Output() | |
| button1 = widgets.Button(description='SD 1.5') | |
| install_button = widgets.Button(description='Install') | |
| button_button = widgets.HBox([button1], layout=Layout(justify_content='space-between')) | |
| sd_setup = widgets.Output() | |
| panel = widgets.VBox([button_button, install_button], | |
| layout=Layout( | |
| width='400px', | |
| height='150px', | |
| display='flex', | |
| flex_flow='column', | |
| align_items='center', | |
| justify_content='space-between', | |
| padding='20px')) | |
| button1.add_class("b1") | |
| install_button.add_class("out") | |
| panel.add_class("boxxx") | |
| selected = [None] | |
| def load_css(css): | |
| with css.open("r") as file: | |
| ccs = file.read() | |
| display(HTML(f"<style>{ccs}</style>")) | |
| def req_list(home, webui): | |
| return [ | |
| f"rm -rf {home}/tmp/* {home}/tmp {webui}/models/Stable-diffusion/tmp_ckpt {webui}/models/Lora/tmp_lora {webui}/models/ControlNet", | |
| f"mkdir -p {webui}/models/Lora", | |
| f"mkdir -p {webui}/models/ESRGAN", | |
| f"ln -vs /tmp {home}/tmp", | |
| f"ln -vs /tmp/ckpt {webui}/models/Stable-diffusion/tmp_ckpt", | |
| f"ln -vs /tmp/lora {webui}/models/Lora/tmp_lora", | |
| f"ln -vs /tmp/controlnet {webui}/models/ControlNet"] | |
| def sd_clone(home, webui, devnull): | |
| time.sleep(1) | |
| pull(f"https://github.com/gutris1/segsmaker sd {webui}") | |
| os.chdir(webui) | |
| req = req_list(home, webui) | |
| for lines in req: | |
| subprocess.run(shlex.split(lines), **devnull) | |
| scripts = [ | |
| f"https://github.com/gutris1/segsmaker/raw/main/script/zrok_reg.py {webui}/asd", | |
| f"https://github.com/gutris1/segsmaker/raw/main/script/zrok.py {webui}", | |
| f"https://github.com/gutris1/segsmaker/raw/main/script/pinggy.py {webui}", | |
| f"https://github.com/gutris1/segsmaker/raw/main/script/ngrok.py {webui}", | |
| f"https://github.com/gutris1/segsmaker/raw/main/script/venv.py {webui}"] | |
| upscalers = [ | |
| f"https://huggingface.co/pantat88/ui/resolve/main/4x-UltraSharp.pth {webui}/models/ESRGAN", | |
| f"https://huggingface.co/pantat88/ui/resolve/main/4x-AnimeSharp.pth {webui}/models/ESRGAN", | |
| f"https://huggingface.co/pantat88/ui/resolve/main/4x_NMKD-Superscale-SP_178000_G.pth {webui}/models/ESRGAN", | |
| f"https://huggingface.co/pantat88/ui/resolve/main/4x_RealisticRescaler_100000_G.pth {webui}/models/ESRGAN", | |
| f"https://huggingface.co/pantat88/ui/resolve/main/8x_RealESRGAN.pth {webui}/models/ESRGAN", | |
| f"https://huggingface.co/pantat88/ui/resolve/main/4x_foolhardy_Remacri.pth {webui}/models/ESRGAN"] | |
| line = scripts + upscalers | |
| for item in line: | |
| download(item) | |
| def sd_1_5(home, webui, devnull): | |
| sd_clone(home, webui, devnull) | |
| extras = [ | |
| f"https://github.com/gutris1/segsmaker/raw/main/script/controlnet/cn-1_5.css {webui}/asd", | |
| f"https://github.com/gutris1/segsmaker/raw/main/script/controlnet/cn-1_5.py {webui}/asd", | |
| f"https://huggingface.co/Carlos2312/asd/resolve/main/modelos.py {webui}/asd", | |
| f"https://huggingface.co/Carlos2312/asd/resolve/main/ext-1_5.txt {webui}/asd", | |
| f"https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors {webui}/models/VAE"] | |
| for items in extras: | |
| download(items) | |
| say("<br><b>γ{red} Installing Extensions{d} γ{red}</b>") | |
| os.chdir(webui / "extensions") | |
| clone(str(webui / "asd/ext-1_5.txt")) | |
| os.rename(str(webui / "asd/cn-1_5.py"), str(webui / "asd/controlnet.py")) | |
| get_ipython().system(f"rm -rf {webui}/embeddings") | |
| get_ipython().system(f"git clone https://huggingface.co/Carlos2312/emb {webui}/embeddings") | |
| get_ipython().system(f"rm -rf {webui}/models/Lora") | |
| get_ipython().system(f"git clone https://huggingface.co/Carlos2312/lrs {webui}/models/Lora") | |
| get_ipython().system(f"rm -rf {webui}/models/adetailer") | |
| get_ipython().system(f"git clone https://huggingface.co/Carlos2312/md {webui}/models/adetailer") | |
| get_ipython().system(f"rm -rf {webui}/extensions/sd-dynamic-prompts/wildcards") | |
| get_ipython().system(f"git clone https://huggingface.co/Carlos2312/Wilcards {webui}/extensions/sd-dynamic-prompts/wildcards") | |
| def sd_install(selection): | |
| with loading: | |
| clear_output() | |
| display(Image(filename=str(img))) | |
| with sd_setup: | |
| sd_setup.clear_output() | |
| say("<b>γ{red} Installing Stable Diffusion{d} γ{red}</b>") | |
| get_ipython().system(f"{repo}") | |
| if selection == 'SD 1.5': | |
| sd_1_5(home, webui, devnull) | |
| with loading: | |
| loading.clear_output() | |
| say("<br><b>γ{red} Done{d} γ{red}</b>") | |
| def button_panel(button): | |
| selected[0] = button.description | |
| def installing(button): | |
| selection = selected[0] | |
| if selection: | |
| widgets.Widget.close(panel) | |
| sd_setup.clear_output() | |
| sd_install(selection) | |
| else: | |
| with sd_setup: | |
| print("at least make a choice") | |
| print("ε°γͺγγ¨γιΈζγγ¦γγ") | |
| return | |
| button1.on_click(button_panel) | |
| install_button.on_click(installing) | |
| load_css(css) | |
| display(panel, sd_setup, loading) | |
| tempe() | |