| from IPython.display import display, HTML, clear_output, Image | |
| from IPython import get_ipython | |
| from ipywidgets import widgets | |
| from pathlib import Path | |
| import subprocess | |
| import shlex | |
| import json | |
| home = Path.home() | |
| src = home / '.gutris1' | |
| css = src / 'segsmaker.css' | |
| startup = home / '.ipython/profile_default/startup' | |
| nenen = startup / 'nenen88.py' | |
| key_file = src / 'api-key.json' | |
| img = src / 'loading.png' | |
| R = '\033[0m' | |
| T = f'▶{R}' | |
| BLUE = f'\033[38;5;33m{T}' | |
| CYAN = f'\033[36m{T}' | |
| PURPLE = f'\033[38;5;135m{T}' | |
| PINK = f'\033[38;5;201m{T}' | |
| RED = f'\033[31m{T}' | |
| GREEN = f'\033[38;5;35m{T}' | |
| Path(src).mkdir(parents=True, exist_ok=True) | |
| SyS = get_ipython().system | |
| main_output = widgets.Output() | |
| save_button = widgets.Button(description='Save') | |
| civitai_key_box = widgets.Text(placeholder='Enter Your Civitai API Key Here', layout=widgets.Layout(width='350px')) | |
| hf_token_box = widgets.Text(placeholder='Huggingface READ Token (optional)', layout=widgets.Layout(width='350px')) | |
| input_widget = widgets.Box( | |
| [civitai_key_box, hf_token_box, save_button], | |
| layout=widgets.Layout( | |
| width='500px', | |
| height='200px', | |
| display='flex', | |
| flex_flow='column', | |
| align_items='center', | |
| justify_content='space-around', | |
| padding='10px' | |
| ) | |
| ) | |
| save_button.add_class('save-button') | |
| civitai_key_box.add_class('api-input') | |
| hf_token_box.add_class('api-input') | |
| input_widget.add_class('boxs') | |
| def CondaInstall(): | |
| try: | |
| display(Image(filename=str(img))) | |
| cmd_list = [ | |
| (f'rm -rf {home}/.condarc', None), | |
| ('conda config --add channels conda-forge', None), | |
| ('conda install -qy mamba', f'{BLUE} Installing Anaconda'), | |
| ('mamba install -y conda', None), | |
| ('mamba install -y python=3.10.13', f'{CYAN} Installing Python 3.10'), | |
| ('mamba install -y glib gperftools openssh pv gputil curl', f'{PURPLE} Installing Conda Packages'), | |
| ('pip install psutil aria2 gdown', f'{PINK} Installing Python Packages'), | |
| ('conda clean -qy --all', None) | |
| ] | |
| for cmd, msg in cmd_list: | |
| if msg is not None: print(msg) | |
| subprocess.run(shlex.split(cmd), stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) | |
| SyS(f'rm -rf {home}/.cache/* {home}/.condarc') | |
| clear_output() | |
| print(f'{GREEN} Done') | |
| get_ipython().kernel.do_shutdown(True) | |
| except KeyboardInterrupt: | |
| clear_output() | |
| print('^ Canceled') | |
| def LoadCSS(): | |
| display(HTML(f'<style>{open(css).read()}</style>')) | |
| def KeyInject(civitai_key, hf_token): | |
| SyS(f'curl -sLo {nenen} https://github.com/gutris1/segsmaker/raw/main/script/nenen88.py') | |
| p = Path(nenen) | |
| v = p.read_text() | |
| v = v.replace("TOKET = ''", f"TOKET = '{civitai_key}'") | |
| v = v.replace("TOBRUT = ''", f"TOBRUT = '{hf_token}'") | |
| p.write_text(v) | |
| def KeyWidget(civitai_key='', hf_token=''): | |
| civitai_key_box.value = civitai_key | |
| hf_token_box.value = hf_token | |
| def KeyInputs(b): | |
| civitai_key = civitai_key_box.value.strip() | |
| hf_token = hf_token_box.value.strip() | |
| with main_output: | |
| if not civitai_key: | |
| print('Please enter your Civitai API Key') | |
| return | |
| if len(civitai_key) < 32: | |
| print('API key must be at least 32 characters long') | |
| return | |
| civitai_key_value = {'civitai-api-key': civitai_key} | |
| hf_token_value = {'huggingface-read-token': hf_token} | |
| secrets = {**civitai_key_value, **hf_token_value} | |
| key_file.write_text(json.dumps(secrets, indent=4)) | |
| KeyInject(civitai_key, hf_token) | |
| input_widget.close() | |
| main_output.clear_output() | |
| p = subprocess.run(['conda', '--version'], capture_output=True, text=True, check=True) | |
| cv = p.stdout.strip().split()[1] | |
| mv = int(cv.split('.')[0]) | |
| with main_output: | |
| CondaInstall() | |
| save_button.on_click(KeyInputs) | |
| def KeyCheck(): | |
| if key_file.exists(): | |
| v = json.loads(key_file.read_text()) | |
| civitai_key = v.get('civitai-api-key', '') | |
| hf_token = v.get('huggingface-read-token', '') | |
| if not civitai_key or not hf_token: | |
| display(input_widget, main_output) | |
| KeyWidget(civitai_key, hf_token) | |
| else: | |
| KeyInject(civitai_key, hf_token) | |
| display(main_output) | |
| CondaInstall() | |
| else: | |
| display(input_widget, main_output) | |
| KeyWidget() | |
| def CondaMisc(): | |
| for scr in [ | |
| f'curl -sLo {css} https://github.com/gutris1/segsmaker/raw/main/script/SM/segsmaker.css', | |
| f'curl -sLo {startup}/00-startup.py https://github.com/gutris1/segsmaker/raw/main/script/SM/00-startup.py', | |
| f'curl -sLo {startup}/util.py https://github.com/gutris1/segsmaker/raw/main/script/SM/util.py', | |
| f'curl -sLo {img} https://github.com/gutris1/segsmaker/raw/main/script/loading.png', | |
| f'curl -sLo {startup}/cupang.py https://github.com/gutris1/segsmaker/raw/main/script/cupang.py' | |
| ]: SyS(scr) | |
| CondaMisc() | |
| LoadCSS() | |
| KeyCheck() |