{ "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 json\n", "import time\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", " free_plan = (os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES') / (1024. ** 3) <= 20)\n", " environments = {\n", " 'COLAB_GPU': ('Google Colab', \"/root\" if free_plan else \"/content\"),\n", " 'KAGGLE_URL_BASE': ('Kaggle', \"/kaggle/working/content\")\n", " }\n", "\n", " for env_var, (environment, path) in environments.items():\n", " if env_var in os.environ:\n", " return environment, path, free_plan\n", "\n", "env, root_path, free_plan = detect_environment()\n", "webui_path = f\"{root_path}/sdw\"\n", "\n", "!mkdir -p {root_path}\n", "# ----------------------------------------------\n", "\n", "\n", "# ==================== CSS JS ====================\n", "# custom background images V1.5\n", "import argparse\n", "parser = argparse.ArgumentParser(description='This script processes an background image.')\n", "parser.add_argument('-i', '--image', type=str, help='URL of the image to process', metavar='')\n", "parser.add_argument('-o', '--opacity', type=float, help='Opacity level for the image, between 0 and 1', metavar='', default=0.3)\n", "parser.add_argument('-b', '--blur', type=str, help='Blur level for the image', metavar='', default=0)\n", "parser.add_argument('-y', type=int, help='Y coordinate for the image in px', metavar='', default=0)\n", "parser.add_argument('-x', type=int, help='X coordinate for the image in px', metavar='', default=0)\n", "parser.add_argument('-s', '--scale', type=int, help='Scale image in %%', metavar='', default=100)\n", "parser.add_argument('-m', '--mode', action='store_true', help='Removes repetitive image tiles')\n", "parser.add_argument('-t', '--transparent', action='store_true', help='Makes input/selection fields 35%% more transparent')\n", "parser.add_argument('-bf', '--blur-fields', type=str, help='Background blur level for input/selection fields', metavar='', default=2)\n", "args = parser.parse_args()\n", "\"\"\"---\"\"\"\n", "url_img = args.image\n", "opacity_img = args.opacity\n", "blur_img = args.blur\n", "y_img = args.y\n", "x_img = args.x\n", "scale_img = args.scale\n", "blur_fields = args.blur_fields\n", "\n", "## ---\n", "\"\"\" WTF KAGGLE - WHAT THE FUCK IS THE DIFFERENCE OF 35 PIXELS!?!?!? \"\"\"\n", "fix_heigh_img = \"-810px\" if env == \"Kaggle\" else \"-775px\"\n", "\n", "\"\"\" transperent fields \"\"\"\n", "t_bg_alpha = \"1\" if not args.transparent else \"0.65\"\n", "\n", "\"\"\" mode img - repeats \"\"\"\n", "mode_img = \"repeat\" if not args.mode else \"no-repeat\"\n", "## ---\n", "\n", "container_background = f'''\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.BluMix [Anime] [V7] + INP',\n", " '3.Cetus-Mix [Anime] [V4] + INP',\n", " '4.Counterfeit [Anime] [V3] + INP',\n", " '5.CuteColor [Anime] [V3]',\n", " '6.Dark-Sushi-Mix [Anime]',\n", " '7.Deliberate [Realism] [V6] + INP',\n", " '8.Meina-Mix [Anime] [V11] + INP',\n", " '9.Mix-Pro [Anime] [V4] + INP']\n", "# ---\n", "Model_widget = widgets.Dropdown(options=model_options, value='4.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 Model'''\n", "all_model_box = widgets.VBox([model_header, Model_widget, Model_Num_widget, Inpainting_Model_widget]).add_class(\"container\").add_class(\"image_1\")\n", "display(all_model_box)\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 Vae'''\n", "all_vae_box= widgets.VBox([vae_header, Vae_widget, Vae_Num_widget]).add_class(\"container\").add_class(\"image_2\")\n", "display(all_vae_box)\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", "zrok_token_widget = widgets.Text(description='Zrok Token:', style=style, layout=widgets.Layout(width='1047px'))\n", "zrok_button = widgets.HTML('Reg Zrok Token').add_class(\"button_ngrok\")\n", "zrok_widget = widgets.HBox([zrok_token_widget, zrok_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 Additional'''\n", "additional_widget_list = [additional_header, latest_changes_widget, HR, controlnet_widget, controlnet_Num_widget, commit_hash_widget, optional_huggingface_token_widget, ngrok_widget, zrok_widget, HR, commandline_arguments_widget]\n", "if free_plan and env == \"Google Colab\": # remove ngrok from colab\n", " additional_widget_list.remove(ngrok_widget)\n", "# ```\n", "all_additional_box = widgets.VBox(additional_widget_list).add_class(\"container\").add_class(\"image_3\")\n", "display(all_additional_box)\n", "\n", "# --- CUSTOM DOWNLOAD ---\n", "custom_download_header_popup = widgets.HTML('''\n", "\n", "\n", "
Custom Download
\n", "\n", "
INFO
\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 CustomDl'''\n", "all_custom_box = 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(\"image_4\").add_class(\"container_custom_downlad\")\n", "display(all_custom_box)\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', 'zrok_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, indent=2)\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", "\n", " # --- uhh - hide... ---\n", " widgets_list = [all_model_box, all_vae_box, all_additional_box, all_custom_box, save_button]\n", " for widget in widgets_list:\n", " widget.add_class(\"hide\")\n", " time.sleep(0.5)\n", "\n", " widgets.Widget.close_all()\n", "\n", "settings = load_settings()\n", "save_button.on_click(save_data)" ], "metadata": { "id": "2lJmbqrs3Mu8" }, "execution_count": null, "outputs": [] } ] }