{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "code", "source": [ "##~ WIDGET CODE | BY: ANXETY ~##\n", "\n", "import os\n", "import sys\n", "import json\n", "import ipywidgets as widgets\n", "from ipywidgets import widgets, Layout, Label, Button, VBox, HBox\n", "from IPython.display import display, HTML, Javascript, clear_output\n", "\n", "\n", "# ================= DETECT ENV =================\n", "def detect_environment():\n", " environments = {\n", " 'COLAB_GPU': ('Google Colab', \"/content\"),\n", " 'KAGGLE_URL_BASE': ('Kaggle', \"/kaggle/working/content\"),\n", " 'SAGEMAKER_INTERNAL_IMAGE_URI': ('SageMaker Studio Lab', \"/home/studio-lab-user/content\")\n", " }\n", "\n", " for env_var, (environment, path) in environments.items():\n", " if env_var in os.environ:\n", " return environment, path\n", "\n", " sys.exit(\"\\033[31mError: an unsupported runtime environment was detected.\\n\\033[34mSupported environments:\\033[0m Google Colab, Kaggle, Sagemaker Studio Lab\")\n", "\n", "env, root_path = detect_environment()\n", "webui_path = f\"{root_path}/sdw\"\n", "\n", "!mkdir -p {root_path}\n", "# ----------------------------------------------\n", "\n", "\n", "# ==================== CSS JS ====================\n", "# --- CSS ---\n", "CSS = '''\n", "\n", "\n", "\n", "\n", "'''\n", "\n", "display(HTML(CSS))\n", "# ==================== CSS JS ====================\n", "\n", "\n", "# ==================== WIDGETS ====================\n", "# --- global widgets ---\n", "style = {'description_width': 'initial'}\n", "layout = widgets.Layout(min_width='1047px')\n", "\n", "HR = widgets.HTML('
')\n", "\n", "# --- MODEL ---\n", "model_header = widgets.HTML('
Model Selection
')\n", "model_options = ['none',\n", " '1.Anime (by Xpuct) + INP',\n", " '2.Cetus-Mix [Anime] [V4] + INP',\n", " '3.Counterfeit [Anime] [V3] + INP',\n", " '4.CuteColor [Anime] [V3]',\n", " '5.Dark-Sushi-Mix [Anime]',\n", " '6.Meina-Mix [Anime] [V11] + INP',\n", " '7.Mix-Pro [Anime] [V4] + INP',\n", " '8.Vela-Mix [Anime] [V2] [6GB]']\n", "# ---\n", "Model_widget = widgets.Dropdown(options=model_options, value='3.Counterfeit [Anime] [V3] + INP', description='Model:', style=style, layout=layout)\n", "Model_Num_widget = widgets.Text(description='Model Number:', placeholder='Enter the model numbers to be downloaded using comma/space.', style=style, layout=layout)\n", "Inpainting_Model_widget = widgets.Checkbox(value=False, description='Inpainting Models', style=style)\n", "\n", "display(widgets.VBox([model_header, Model_widget, Model_Num_widget, Inpainting_Model_widget]).add_class(\"container\"))\n", "\n", "# --- VAE ---\n", "vae_header = widgets.HTML('
VAE Selection
')\n", "vae_options = ['none',\n", " '1.Anime.vae',\n", " '2.Anything.vae',\n", " '3.Blessed2.vae',\n", " '4.ClearVae.vae',\n", " '5.WD.vae']\n", "Vae_widget = widgets.Dropdown(options=vae_options, value='3.Blessed2.vae', description='Vae:', style=style, layout=layout)\n", "Vae_Num_widget = widgets.Text(description='Vae number:', placeholder='Enter the vae numbers to be downloaded using comma/space.', style=style, layout=layout)\n", "\n", "display(widgets.VBox([vae_header, Vae_widget, Vae_Num_widget]).add_class(\"container\"))\n", "\n", "# --- ADDITIONAL ---\n", "additional_header = widgets.HTML('
Additional
')\n", "latest_webui_widget = widgets.Checkbox(value=True, description='Update WebUI', style=style)\n", "latest_exstensions_widget = widgets.Checkbox(value=True, description='Update Extensions', style=style)\n", "detailed_download_widget = widgets.Dropdown(options=['off', 'on'], value='off', description='Detailed Download:', style=style)\n", "latest_changes_widget = HBox([latest_webui_widget, latest_exstensions_widget, detailed_download_widget], layout=widgets.Layout(justify_content='space-between'))\n", "controlnet_options = ['none', 'ALL', '1.canny',\n", " '2.openpose', '3.depth',\n", " '4.normal_map', '5.mlsd',\n", " '6.lineart', '7.soft_edge',\n", " '8.scribble', '9.segmentation',\n", " '10.shuffle', '11.tile',\n", " '12.inpaint', '13.instruct_p2p']\n", "# ---\n", "controlnet_widget = widgets.Dropdown(options=controlnet_options, value='none', description='ControlNet:', style=style, layout=layout)\n", "controlnet_Num_widget = widgets.Text(description='ControlNet Number:', placeholder='Enter the ControlNet model numbers to be downloaded using comma/space.', style=style, layout=layout)\n", "commit_hash_widget = widgets.Text(description='Commit Hash:', style=style, layout=layout)\n", "optional_huggingface_token_widget = widgets.Text(description='Huggingface token:', style=style, layout=layout)\n", "ngrok_token_widget = widgets.Text(description='Ngrok token:', style=style, layout=widgets.Layout(width='1047px'))\n", "ngrock_button = widgets.HTML('Get Ngrok Token').add_class(\"button_ngrok\")\n", "ngrok_widget = widgets.HBox([ngrok_token_widget, ngrock_button], style=style, layout=layout)\n", "# ---\n", "commandline_arguments_options = \"--listen --enable-insecure-extension-access --theme dark --no-half-vae --disable-console-progressbars --xformers\"\n", "commandline_arguments_widget = widgets.Text(description='Arguments:', value=commandline_arguments_options, style=style, layout=layout)\n", "\n", "display(widgets.VBox([\n", " additional_header, latest_changes_widget, HR, controlnet_widget, controlnet_Num_widget, commit_hash_widget, optional_huggingface_token_widget, ngrok_widget, HR, commandline_arguments_widget\n", " ]).add_class(\"container\"))\n", "\n", "# --- CUSTOM DOWNLOAD ---\n", "custom_download_header_popup = widgets.HTML('''\n", "\n", "\n", "
Custom Download
\n", "\n", "
FAQ?
\n", "
\n", " Separate multiple URLs with a comma/space. For a custom name file/extension, specify it with []\n", " after the URL without spaces.\n", " For files, be sure to specify - Filename Extension.\n", "
\n", " Example for File:\n", " https://civitai.com/api/download/models/229782[Detailer.safetensors]\n", "
\n", " Example for Extension:\n", " https://github.com/hako-mikan/sd-webui-regional-prompter[Regional-Prompter]\n", "
\n", "
\n", "''')\n", "# ---\n", "Model_url_widget = widgets.Text(description='Model:', style=style, layout=layout)\n", "Vae_url_widget = widgets.Text(description='Vae:', style=style, layout=layout)\n", "LoRA_url_widget = widgets.Text(description='LoRa:', style=style, layout=layout)\n", "Embedding_url_widget = widgets.Text(description='Embedding:', style=style, layout=layout)\n", "Extensions_url_widget = widgets.Text(description='Extensions:', style=style, layout=layout)\n", "custom_file_urls_widget = widgets.Text(description='File (txt):', style=style, layout=layout)\n", "\n", "display(widgets.VBox([\n", " custom_download_header_popup, Model_url_widget, Vae_url_widget, LoRA_url_widget, Embedding_url_widget, Extensions_url_widget, custom_file_urls_widget\n", " ]).add_class(\"container\").add_class(\"container_custom_downlad\"))\n", "\n", "# --- Save Button ---\n", "save_button = widgets.Button(description='Save').add_class(\"button_save\")\n", "display(save_button)\n", "\n", "\n", "# ============ Load / Save - Settings V2 ============\n", "SETTINGS_FILE = f'{root_path}/settings.json'\n", "\n", "settings_keys = [\n", " 'Model', 'Model_Num', 'Inpainting_Model',\n", " 'Vae', 'Vae_Num',\n", " 'latest_webui', 'latest_exstensions', 'detailed_download',\n", " 'controlnet', 'controlnet_Num', 'commit_hash', 'optional_huggingface_token',\n", " 'ngrok_token', 'commandline_arguments',\n", " 'Model_url', 'Vae_url', 'LoRA_url', 'Embedding_url', 'Extensions_url', 'custom_file_urls'\n", "]\n", "\n", "def save_settings():\n", " settings = {key: globals()[f\"{key}_widget\"].value for key in settings_keys}\n", " with open(SETTINGS_FILE, 'w') as f:\n", " json.dump(settings, f)\n", "\n", "def load_settings():\n", " if os.path.exists(SETTINGS_FILE):\n", " with open(SETTINGS_FILE, 'r') as f:\n", " settings = json.load(f)\n", " for key in settings_keys:\n", " globals()[f\"{key}_widget\"].value = settings.get(key)\n", "\n", "def save_data(button):\n", " save_settings()\n", " widgets.Widget.close_all()\n", "\n", "settings = load_settings()\n", "save_button.on_click(save_data)" ], "metadata": { "id": "2lJmbqrs3Mu8" }, "execution_count": null, "outputs": [] } ] }