add hide main widgets animation
Browse files- files_cells/notebooks/en/downloading_en.ipynb +28 -30
- files_cells/notebooks/en/widgets_en.ipynb +116 -42
- files_cells/notebooks/ru/downloading_ru.ipynb +28 -30
- files_cells/notebooks/ru/widgets_ru.ipynb +114 -40
- files_cells/python/en/downloading_en.py +28 -30
- files_cells/python/en/widgets_en.py +116 -42
- files_cells/python/ru/downloading_ru.py +28 -30
- files_cells/python/ru/widgets_ru.py +56 -17
files_cells/notebooks/en/downloading_en.ipynb
CHANGED
|
@@ -68,7 +68,7 @@
|
|
| 68 |
" xformers = \"xformers==0.0.23.post1 triton==2.1.0\"\n",
|
| 69 |
" torch = \"torch==2.1.2+cu121 torchvision==0.16.2+cu121 torchaudio==2.1.2 --extra-index-url https://download.pytorch.org/whl/cu121\"\n",
|
| 70 |
"\n",
|
| 71 |
-
" print(\"Installing the libraries, it's going to take a while
|
| 72 |
" with capture.capture_output() as cap:\n",
|
| 73 |
" !pip install -U gdown\n",
|
| 74 |
" !apt-get update && apt -y install aria2\n",
|
|
@@ -87,7 +87,7 @@
|
|
| 87 |
" !wget -P /home/studio-lab-user https://huggingface.co/NagisaNao/fast_repo/resolve/main/sagemaker/FULL_DELETED_NOTEBOOK.ipynb\n",
|
| 88 |
"\n",
|
| 89 |
" if env == \"Google Colab\":\n",
|
| 90 |
-
" !pip install -q pip install xformers==0.0.26.
|
| 91 |
" else:\n",
|
| 92 |
" !pip install -q {torch} -U\n",
|
| 93 |
" !pip install -q {xformers} -U\n",
|
|
@@ -95,25 +95,19 @@
|
|
| 95 |
" with open(flag_file, \"w\") as f:\n",
|
| 96 |
" f.write(\"hey ;3\")\n",
|
| 97 |
" del cap\n",
|
| 98 |
-
" print(\"\\
|
| 99 |
" time.sleep(2)\n",
|
| 100 |
" clear_output()\n",
|
| 101 |
"\n",
|
| 102 |
"\n",
|
| 103 |
-
"# ================= loading settings
|
| 104 |
-
"import toml\n",
|
| 105 |
-
"\n",
|
| 106 |
"def load_settings(path):\n",
|
| 107 |
" if os.path.exists(path):\n",
|
| 108 |
" with open(path, 'r') as file:\n",
|
| 109 |
-
"
|
| 110 |
-
" flat_settings = {}\n",
|
| 111 |
-
" for section, keys in settings.items():\n",
|
| 112 |
-
" flat_settings.update(keys)\n",
|
| 113 |
-
" return flat_settings\n",
|
| 114 |
" return {}\n",
|
| 115 |
"\n",
|
| 116 |
-
"settings = load_settings(f'{root_path}/settings.
|
| 117 |
"\n",
|
| 118 |
"variables = [\n",
|
| 119 |
" 'Model', 'Model_Num', 'Inpainting_Model',\n",
|
|
@@ -167,7 +161,8 @@
|
|
| 167 |
" install_time = timedelta(seconds=time.time()-start_install)\n",
|
| 168 |
" print(\"\\r🚀 Unpacking is complete! For\",\"%02d:%02d:%02d ⚡\\n\" % (install_time.seconds / 3600, (install_time.seconds / 60) % 60, install_time.seconds % 60), end='', flush=True)\n",
|
| 169 |
"else:\n",
|
| 170 |
-
"
|
|
|
|
| 171 |
" print(\"🚀 All unpacked... Skip. ⚡\")\n",
|
| 172 |
" start_colab = float(open(f'{webui_path}/static/colabTimer.txt', 'r').read())\n",
|
| 173 |
" time_since_start = str(timedelta(seconds=time.time()-start_colab)).split('.')[0]\n",
|
|
@@ -234,35 +229,39 @@
|
|
| 234 |
"## Downloading model and stuff | oh yeah~ I'm starting to misunderstand my own code ( almost my own ;3 )\n",
|
| 235 |
"print(\"📦 Downloading models and stuff...\", end='')\n",
|
| 236 |
"model_list = {\n",
|
| 237 |
-
" \"1.Anime (by
|
| 238 |
" {\"url\": \"https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2.safetensors\", \"name\": \"Anime_v2.safetensors\"},\n",
|
| 239 |
" {\"url\": \"https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2-inpainting.safetensors\", \"name\": \"Anime_v2-inpainting.safetensors\"}\n",
|
| 240 |
" ],\n",
|
| 241 |
-
" \"2.
|
|
|
|
|
|
|
|
|
|
| 242 |
" {\"url\": \"https://civitai.com/api/download/models/130298\", \"name\": \"CetusMix_V4.safetensors\"},\n",
|
| 243 |
" {\"url\": \"https://civitai.com/api/download/models/139882\", \"name\": \"CetusMix_V4-inpainting.safetensors\"}\n",
|
| 244 |
" ],\n",
|
| 245 |
-
" \"
|
| 246 |
" {\"url\": \"https://civitai.com/api/download/models/125050\", \"name\": \"Counterfeit_V3.safetensors\"},\n",
|
| 247 |
" {\"url\": \"https://civitai.com/api/download/models/137911\", \"name\": \"Counterfeit_V3-inpainting.safetensors\"}\n",
|
| 248 |
" ],\n",
|
| 249 |
-
" \"
|
| 250 |
" {\"url\": \"https://civitai.com/api/download/models/138754\", \"name\": \"CuteColor_V3.safetensors\"}\n",
|
| 251 |
" ],\n",
|
| 252 |
-
" \"
|
| 253 |
" {\"url\": \"https://civitai.com/api/download/models/101640\", \"name\": \"DarkSushiMix_2_5D.safetensors\"},\n",
|
| 254 |
" {\"url\": \"https://civitai.com/api/download/models/56071\", \"name\": \"DarkSushiMix_colorful.safetensors\"}\n",
|
| 255 |
" ],\n",
|
| 256 |
-
" \"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 257 |
" {\"url\": \"https://civitai.com/api/download/models/119057\", \"name\": \"MeinaMix_V11.safetensors\"},\n",
|
| 258 |
" {\"url\": \"https://civitai.com/api/download/models/120702\", \"name\": \"MeinaMix_V11-inpainting.safetensors\"}\n",
|
| 259 |
" ],\n",
|
| 260 |
-
" \"
|
| 261 |
" {\"url\": \"https://civitai.com/api/download/models/125668\", \"name\": \"MixPro_V4.safetensors\"},\n",
|
| 262 |
" {\"url\": \"https://civitai.com/api/download/models/139878\", \"name\": \"MixPro_V4-inpainting.safetensors\"}\n",
|
| 263 |
-
" ],\n",
|
| 264 |
-
" \"8.BluMix [Anime] [V7]\": [\n",
|
| 265 |
-
" {\"url\": \"https://civitai.com/api/download/models/361779\", \"name\": \"BluMix_v7.safetensors\"}\n",
|
| 266 |
" ]\n",
|
| 267 |
"}\n",
|
| 268 |
"\n",
|
|
@@ -342,8 +341,8 @@
|
|
| 342 |
" \"model\": [models_dir, \"Model_url\"],\n",
|
| 343 |
" \"vae\": [vaes_dir, \"Vae_url\"],\n",
|
| 344 |
" \"lora\": [loras_dir, \"LoRA_url\"],\n",
|
| 345 |
-
" \"
|
| 346 |
-
" \"
|
| 347 |
" \"control\": [control_dir, \"ControlNet_url\"]\n",
|
| 348 |
"}\n",
|
| 349 |
"\n",
|
|
@@ -353,7 +352,6 @@
|
|
| 353 |
"ControlNet_url = \"\"\n",
|
| 354 |
"hf_token = optional_huggingface_token if optional_huggingface_token else \"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\"\n",
|
| 355 |
"user_header = f\"\\\"Authorization: Bearer {hf_token}\\\"\"\n",
|
| 356 |
-
"# user_header = f\"\\\"Authorization: Bearer {optional_huggingface_token}\\\"\"\n",
|
| 357 |
"\n",
|
| 358 |
"def handle_manual(url):\n",
|
| 359 |
" original_url = url\n",
|
|
@@ -365,22 +363,22 @@
|
|
| 365 |
"\n",
|
| 366 |
" for prefix, (dir, _) in prefixes.items():\n",
|
| 367 |
" if original_url.startswith(f\"{prefix}:\"):\n",
|
| 368 |
-
" if prefix != \"
|
| 369 |
" manual_download(url, dir, file_name=file_name)\n",
|
| 370 |
" else:\n",
|
| 371 |
" extension_repo.append((url, file_name))\n",
|
| 372 |
"\n",
|
| 373 |
"def manual_download(url, dst_dir, file_name):\n",
|
| 374 |
" basename = url.split(\"/\")[-1] if file_name is None else file_name\n",
|
| 375 |
-
" header_option = f\"--header={user_header}\"
|
|
|
|
|
|
|
| 376 |
"\n",
|
| 377 |
" # I do it at my own risk..... Fucking CivitAi >:(\n",
|
| 378 |
" civitai_token = \"62c0c5956b2f9defbd844d754000180b\"\n",
|
| 379 |
" if 'civitai' in url and civitai_token:\n",
|
| 380 |
" url = f\"{url}?token={civitai_token}\"\n",
|
| 381 |
"\n",
|
| 382 |
-
" print(\"\\033[32m---\"*45 + f\"\\n\\033[33mURL: \\033[34m{url}\\n\\033[33mSAVE DIR: \\033[34m{dst_dir}\\n\\033[33mFILE NAME: \\033[34m{file_name}\\033[32m\\n~~~\\033[0m\")\n",
|
| 383 |
-
"\n",
|
| 384 |
" # -- GDrive --\n",
|
| 385 |
" if 'drive.google' in url:\n",
|
| 386 |
" if 'folders' in url:\n",
|
|
|
|
| 68 |
" xformers = \"xformers==0.0.23.post1 triton==2.1.0\"\n",
|
| 69 |
" torch = \"torch==2.1.2+cu121 torchvision==0.16.2+cu121 torchaudio==2.1.2 --extra-index-url https://download.pytorch.org/whl/cu121\"\n",
|
| 70 |
"\n",
|
| 71 |
+
" print(\"💿 Installing the libraries, it's going to take a while...\", end='')\n",
|
| 72 |
" with capture.capture_output() as cap:\n",
|
| 73 |
" !pip install -U gdown\n",
|
| 74 |
" !apt-get update && apt -y install aria2\n",
|
|
|
|
| 87 |
" !wget -P /home/studio-lab-user https://huggingface.co/NagisaNao/fast_repo/resolve/main/sagemaker/FULL_DELETED_NOTEBOOK.ipynb\n",
|
| 88 |
"\n",
|
| 89 |
" if env == \"Google Colab\":\n",
|
| 90 |
+
" !pip install -q pip install xformers==0.0.26.dev778 -U\n",
|
| 91 |
" else:\n",
|
| 92 |
" !pip install -q {torch} -U\n",
|
| 93 |
" !pip install -q {xformers} -U\n",
|
|
|
|
| 95 |
" with open(flag_file, \"w\") as f:\n",
|
| 96 |
" f.write(\"hey ;3\")\n",
|
| 97 |
" del cap\n",
|
| 98 |
+
" print(\"\\r🍪 Libraries are installed!\" + \" \"*35)\n",
|
| 99 |
" time.sleep(2)\n",
|
| 100 |
" clear_output()\n",
|
| 101 |
"\n",
|
| 102 |
"\n",
|
| 103 |
+
"# ================= loading settings V4 =================\n",
|
|
|
|
|
|
|
| 104 |
"def load_settings(path):\n",
|
| 105 |
" if os.path.exists(path):\n",
|
| 106 |
" with open(path, 'r') as file:\n",
|
| 107 |
+
" return json.load(file)\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
| 108 |
" return {}\n",
|
| 109 |
"\n",
|
| 110 |
+
"settings = load_settings(f'{root_path}/settings.json')\n",
|
| 111 |
"\n",
|
| 112 |
"variables = [\n",
|
| 113 |
" 'Model', 'Model_Num', 'Inpainting_Model',\n",
|
|
|
|
| 161 |
" install_time = timedelta(seconds=time.time()-start_install)\n",
|
| 162 |
" print(\"\\r🚀 Unpacking is complete! For\",\"%02d:%02d:%02d ⚡\\n\" % (install_time.seconds / 3600, (install_time.seconds / 60) % 60, install_time.seconds % 60), end='', flush=True)\n",
|
| 163 |
"else:\n",
|
| 164 |
+
" if env == \"SageMaker Studio Lab\":\n",
|
| 165 |
+
" !echo -n {start_colab} > {webui_path}/static/colabTimer.txt\n",
|
| 166 |
" print(\"🚀 All unpacked... Skip. ⚡\")\n",
|
| 167 |
" start_colab = float(open(f'{webui_path}/static/colabTimer.txt', 'r').read())\n",
|
| 168 |
" time_since_start = str(timedelta(seconds=time.time()-start_colab)).split('.')[0]\n",
|
|
|
|
| 229 |
"## Downloading model and stuff | oh yeah~ I'm starting to misunderstand my own code ( almost my own ;3 )\n",
|
| 230 |
"print(\"📦 Downloading models and stuff...\", end='')\n",
|
| 231 |
"model_list = {\n",
|
| 232 |
+
" \"1.Anime (by XpucT) + INP\": [\n",
|
| 233 |
" {\"url\": \"https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2.safetensors\", \"name\": \"Anime_v2.safetensors\"},\n",
|
| 234 |
" {\"url\": \"https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2-inpainting.safetensors\", \"name\": \"Anime_v2-inpainting.safetensors\"}\n",
|
| 235 |
" ],\n",
|
| 236 |
+
" \"2.BluMix [Anime] [V7]\": [\n",
|
| 237 |
+
" {\"url\": \"https://civitai.com/api/download/models/361779\", \"name\": \"BluMix_v7.safetensors\"}\n",
|
| 238 |
+
" ],\n",
|
| 239 |
+
" \"3.Cetus-Mix [Anime] [V4] + INP\": [\n",
|
| 240 |
" {\"url\": \"https://civitai.com/api/download/models/130298\", \"name\": \"CetusMix_V4.safetensors\"},\n",
|
| 241 |
" {\"url\": \"https://civitai.com/api/download/models/139882\", \"name\": \"CetusMix_V4-inpainting.safetensors\"}\n",
|
| 242 |
" ],\n",
|
| 243 |
+
" \"4.Counterfeit [Anime] [V3] + INP\": [\n",
|
| 244 |
" {\"url\": \"https://civitai.com/api/download/models/125050\", \"name\": \"Counterfeit_V3.safetensors\"},\n",
|
| 245 |
" {\"url\": \"https://civitai.com/api/download/models/137911\", \"name\": \"Counterfeit_V3-inpainting.safetensors\"}\n",
|
| 246 |
" ],\n",
|
| 247 |
+
" \"5.CuteColor [Anime] [V3]\": [\n",
|
| 248 |
" {\"url\": \"https://civitai.com/api/download/models/138754\", \"name\": \"CuteColor_V3.safetensors\"}\n",
|
| 249 |
" ],\n",
|
| 250 |
+
" \"6.Dark-Sushi-Mix [Anime]\": [\n",
|
| 251 |
" {\"url\": \"https://civitai.com/api/download/models/101640\", \"name\": \"DarkSushiMix_2_5D.safetensors\"},\n",
|
| 252 |
" {\"url\": \"https://civitai.com/api/download/models/56071\", \"name\": \"DarkSushiMix_colorful.safetensors\"}\n",
|
| 253 |
" ],\n",
|
| 254 |
+
" \"7.Deliberate [Realism] [V6] + INP\": [\n",
|
| 255 |
+
" {\"url\": \"https://huggingface.co/XpucT/Deliberate/resolve/main/Deliberate_v6.safetensors\", \"name\": \"Deliberate_v6.safetensors\"},\n",
|
| 256 |
+
" {\"url\": \"https://huggingface.co/XpucT/Deliberate/resolve/main/Deliberate_v6-inpainting.safetensors\", \"name\": \"Deliberate_v6-inpainting.safetensors\"}\n",
|
| 257 |
+
" ],\n",
|
| 258 |
+
" \"8.Meina-Mix [Anime] [V11] + INP\": [\n",
|
| 259 |
" {\"url\": \"https://civitai.com/api/download/models/119057\", \"name\": \"MeinaMix_V11.safetensors\"},\n",
|
| 260 |
" {\"url\": \"https://civitai.com/api/download/models/120702\", \"name\": \"MeinaMix_V11-inpainting.safetensors\"}\n",
|
| 261 |
" ],\n",
|
| 262 |
+
" \"9.Mix-Pro [Anime] [V4] + INP\": [\n",
|
| 263 |
" {\"url\": \"https://civitai.com/api/download/models/125668\", \"name\": \"MixPro_V4.safetensors\"},\n",
|
| 264 |
" {\"url\": \"https://civitai.com/api/download/models/139878\", \"name\": \"MixPro_V4-inpainting.safetensors\"}\n",
|
|
|
|
|
|
|
|
|
|
| 265 |
" ]\n",
|
| 266 |
"}\n",
|
| 267 |
"\n",
|
|
|
|
| 341 |
" \"model\": [models_dir, \"Model_url\"],\n",
|
| 342 |
" \"vae\": [vaes_dir, \"Vae_url\"],\n",
|
| 343 |
" \"lora\": [loras_dir, \"LoRA_url\"],\n",
|
| 344 |
+
" \"embed\": [embeddings_dir, \"Embedding_url\"],\n",
|
| 345 |
+
" \"extension\": [extensions_dir, \"Extensions_url\"],\n",
|
| 346 |
" \"control\": [control_dir, \"ControlNet_url\"]\n",
|
| 347 |
"}\n",
|
| 348 |
"\n",
|
|
|
|
| 352 |
"ControlNet_url = \"\"\n",
|
| 353 |
"hf_token = optional_huggingface_token if optional_huggingface_token else \"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\"\n",
|
| 354 |
"user_header = f\"\\\"Authorization: Bearer {hf_token}\\\"\"\n",
|
|
|
|
| 355 |
"\n",
|
| 356 |
"def handle_manual(url):\n",
|
| 357 |
" original_url = url\n",
|
|
|
|
| 363 |
"\n",
|
| 364 |
" for prefix, (dir, _) in prefixes.items():\n",
|
| 365 |
" if original_url.startswith(f\"{prefix}:\"):\n",
|
| 366 |
+
" if prefix != \"extension\":\n",
|
| 367 |
" manual_download(url, dir, file_name=file_name)\n",
|
| 368 |
" else:\n",
|
| 369 |
" extension_repo.append((url, file_name))\n",
|
| 370 |
"\n",
|
| 371 |
"def manual_download(url, dst_dir, file_name):\n",
|
| 372 |
" basename = url.split(\"/\")[-1] if file_name is None else file_name\n",
|
| 373 |
+
" header_option = f\"--header={user_header}\"\n",
|
| 374 |
+
"\n",
|
| 375 |
+
" print(\"\\033[32m---\"*45 + f\"\\n\\033[33mURL: \\033[34m{url}\\n\\033[33mSAVE DIR: \\033[34m{dst_dir}\\n\\033[33mFILE NAME: \\033[34m{file_name}\\033[32m\\n~~~\\033[0m\")\n",
|
| 376 |
"\n",
|
| 377 |
" # I do it at my own risk..... Fucking CivitAi >:(\n",
|
| 378 |
" civitai_token = \"62c0c5956b2f9defbd844d754000180b\"\n",
|
| 379 |
" if 'civitai' in url and civitai_token:\n",
|
| 380 |
" url = f\"{url}?token={civitai_token}\"\n",
|
| 381 |
"\n",
|
|
|
|
|
|
|
| 382 |
" # -- GDrive --\n",
|
| 383 |
" if 'drive.google' in url:\n",
|
| 384 |
" if 'folders' in url:\n",
|
files_cells/notebooks/en/widgets_en.ipynb
CHANGED
|
@@ -21,6 +21,7 @@
|
|
| 21 |
"\n",
|
| 22 |
"import os\n",
|
| 23 |
"import json\n",
|
|
|
|
| 24 |
"import ipywidgets as widgets\n",
|
| 25 |
"from ipywidgets import widgets, Layout, Label, Button, VBox, HBox\n",
|
| 26 |
"from IPython.display import display, HTML, Javascript, clear_output\n",
|
|
@@ -62,6 +63,11 @@
|
|
| 62 |
"# ---\n",
|
| 63 |
"url_img, opacity_img, blur_img, y_img, x_img, scale_img, mode_img = args.image, args.opacity, args.blur, args.y, args.x, args.scale, args.mode\n",
|
| 64 |
"\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
"container_background = f'''\n",
|
| 66 |
"<style>\n",
|
| 67 |
":root {{\n",
|
|
@@ -72,6 +78,7 @@
|
|
| 72 |
" --image_x: {x_img}px;\n",
|
| 73 |
" --img_scale: {scale_img}%;\n",
|
| 74 |
" --img_mode: {mode_img};\n",
|
|
|
|
| 75 |
"}}\n",
|
| 76 |
"\n",
|
| 77 |
".widget-dropdown select,\n",
|
|
@@ -131,7 +138,7 @@
|
|
| 131 |
" content: \"ANXETY\";\n",
|
| 132 |
" font-weight: bold;\n",
|
| 133 |
" font-size: 24px;\n",
|
| 134 |
-
" color: rgba(0, 0, 0, 0.
|
| 135 |
"}\n",
|
| 136 |
"\n",
|
| 137 |
"/* background img */\n",
|
|
@@ -161,7 +168,7 @@
|
|
| 161 |
" background-position: var(--image_x) calc(-430px - var(--image_y));\n",
|
| 162 |
"}\n",
|
| 163 |
".image_4::before {\n",
|
| 164 |
-
" background-position: var(--image_x) calc(
|
| 165 |
"}\n",
|
| 166 |
"\n",
|
| 167 |
".container_custom_downlad {\n",
|
|
@@ -220,6 +227,43 @@
|
|
| 220 |
"}\n",
|
| 221 |
"\n",
|
| 222 |
"\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 223 |
"/* Button styles */\n",
|
| 224 |
"\n",
|
| 225 |
".button_save {\n",
|
|
@@ -338,6 +382,14 @@
|
|
| 338 |
".button_save {\n",
|
| 339 |
" animation-name: showedWidgets;\n",
|
| 340 |
" animation-duration: 1s;\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 341 |
"}\n",
|
| 342 |
"\n",
|
| 343 |
"@keyframes showedWidgets {\n",
|
|
@@ -352,6 +404,19 @@
|
|
| 352 |
" opacity: 1;\n",
|
| 353 |
" }\n",
|
| 354 |
"}\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 355 |
"</style>\n",
|
| 356 |
"\n",
|
| 357 |
"<!-- TOGGLE 'CustomDL' SCRIPT -->\n",
|
|
@@ -380,20 +445,23 @@
|
|
| 380 |
"# --- MODEL ---\n",
|
| 381 |
"model_header = widgets.HTML('<div class=\"header\">Model Selection<div>')\n",
|
| 382 |
"model_options = ['none',\n",
|
| 383 |
-
" '1.Anime (by
|
| 384 |
-
" '2.
|
| 385 |
-
" '3.
|
| 386 |
-
" '4.
|
| 387 |
-
" '5.
|
| 388 |
-
" '6.
|
| 389 |
-
" '7.
|
| 390 |
-
" '8.
|
|
|
|
| 391 |
"# ---\n",
|
| 392 |
-
"Model_widget = widgets.Dropdown(options=model_options, value='
|
| 393 |
"Model_Num_widget = widgets.Text(description='Model Number:', placeholder='Enter the model numbers to be downloaded using comma/space.', style=style, layout=layout)\n",
|
| 394 |
"Inpainting_Model_widget = widgets.Checkbox(value=False, description='Inpainting Models', style=style)\n",
|
| 395 |
"\n",
|
| 396 |
-
"
|
|
|
|
|
|
|
| 397 |
"\n",
|
| 398 |
"# --- VAE ---\n",
|
| 399 |
"vae_header = widgets.HTML('<div class=\"header\" >VAE Selection</div>')\n",
|
|
@@ -404,9 +472,11 @@
|
|
| 404 |
" '4.ClearVae.vae',\n",
|
| 405 |
" '5.WD.vae']\n",
|
| 406 |
"Vae_widget = widgets.Dropdown(options=vae_options, value='3.Blessed2.vae', description='Vae:', style=style, layout=layout)\n",
|
| 407 |
-
"Vae_Num_widget = widgets.Text(description='Vae
|
| 408 |
"\n",
|
| 409 |
-
"
|
|
|
|
|
|
|
| 410 |
"\n",
|
| 411 |
"# --- ADDITIONAL ---\n",
|
| 412 |
"additional_header = widgets.HTML('<div class=\"header\">Additional</div>')\n",
|
|
@@ -425,18 +495,21 @@
|
|
| 425 |
"controlnet_widget = widgets.Dropdown(options=controlnet_options, value='none', description='ControlNet:', style=style, layout=layout)\n",
|
| 426 |
"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",
|
| 427 |
"commit_hash_widget = widgets.Text(description='Commit Hash:', style=style, layout=layout)\n",
|
| 428 |
-
"optional_huggingface_token_widget = widgets.Text(description='
|
| 429 |
-
"ngrok_token_widget = widgets.Text(description='Ngrok
|
| 430 |
"ngrock_button = widgets.HTML('<a href=\"https://dashboard.ngrok.com/get-started/your-authtoken\" target=\"_blank\">Get Ngrok Token</a>').add_class(\"button_ngrok\")\n",
|
| 431 |
"ngrok_widget = widgets.HBox([ngrok_token_widget, ngrock_button], style=style, layout=layout)\n",
|
| 432 |
"# ---\n",
|
| 433 |
"commandline_arguments_options = \"--listen --enable-insecure-extension-access --theme dark --no-half-vae --disable-console-progressbars --xformers\"\n",
|
| 434 |
"commandline_arguments_widget = widgets.Text(description='Arguments:', value=commandline_arguments_options, style=style, layout=layout)\n",
|
| 435 |
"\n",
|
|
|
|
| 436 |
"additional_widget_list = [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",
|
| 437 |
"if free_plan and env == \"Google Colab\":\n",
|
| 438 |
" additional_widget_list.remove(ngrok_widget)\n",
|
| 439 |
-
"
|
|
|
|
|
|
|
| 440 |
"\n",
|
| 441 |
"# --- CUSTOM DOWNLOAD ---\n",
|
| 442 |
"custom_download_header_popup = widgets.HTML('''\n",
|
|
@@ -450,7 +523,7 @@
|
|
| 450 |
"\n",
|
| 451 |
"<div class=\"header\" style=\"cursor: pointer;\" onclick=\"toggleContainer()\">Custom Download</div>\n",
|
| 452 |
"<!-- PopUp Window -->\n",
|
| 453 |
-
"<div class=\"info\">
|
| 454 |
"<div class=\"popup\">\n",
|
| 455 |
" Separate multiple URLs with a comma/space. For a <span class=\"file_name\">custom name</span> file/extension, specify it with <span class=\"braces\">[]</span>\n",
|
| 456 |
" after the URL without spaces.\n",
|
|
@@ -472,9 +545,11 @@
|
|
| 472 |
"Extensions_url_widget = widgets.Text(description='Extensions:', style=style, layout=layout)\n",
|
| 473 |
"custom_file_urls_widget = widgets.Text(description='File (txt):', style=style, layout=layout)\n",
|
| 474 |
"\n",
|
| 475 |
-
"
|
|
|
|
| 476 |
" custom_download_header_popup, Model_url_widget, Vae_url_widget, LoRA_url_widget, Embedding_url_widget, Extensions_url_widget, custom_file_urls_widget\n",
|
| 477 |
-
" ]).add_class(\"container\").add_class(\"image_4\").add_class(\"container_custom_downlad\")
|
|
|
|
| 478 |
"\n",
|
| 479 |
"# --- Save Button ---\n",
|
| 480 |
"save_button = widgets.Button(description='Save').add_class(\"button_save\")\n",
|
|
@@ -482,39 +557,38 @@
|
|
| 482 |
"\n",
|
| 483 |
"\n",
|
| 484 |
"# ============ Load / Save - Settings V2 ============\n",
|
| 485 |
-
"
|
| 486 |
-
" import toml\n",
|
| 487 |
-
"except ImportError: # SageMaker - only for you...\n",
|
| 488 |
-
" !pip install toml > /dev/null 2>&1\n",
|
| 489 |
-
" import toml\n",
|
| 490 |
"\n",
|
| 491 |
-
"
|
| 492 |
-
"
|
| 493 |
-
"
|
| 494 |
-
"
|
| 495 |
-
"
|
| 496 |
-
"
|
| 497 |
-
"
|
| 498 |
-
"
|
| 499 |
"\n",
|
| 500 |
"def save_settings():\n",
|
| 501 |
-
" settings = {}\n",
|
| 502 |
-
" for section, keys in settings_structure.items():\n",
|
| 503 |
-
" settings[section] = {key: globals()[f\"{key}_widget\"].value for key in keys}\n",
|
| 504 |
" with open(SETTINGS_FILE, 'w') as f:\n",
|
| 505 |
-
"
|
| 506 |
"\n",
|
| 507 |
"def load_settings():\n",
|
| 508 |
" if os.path.exists(SETTINGS_FILE):\n",
|
| 509 |
" with open(SETTINGS_FILE, 'r') as f:\n",
|
| 510 |
-
"
|
| 511 |
-
" for
|
| 512 |
-
"
|
| 513 |
-
" if key in loaded_settings[section]:\n",
|
| 514 |
-
" globals()[f\"{key}_widget\"].value = loaded_settings[section][key]\n",
|
| 515 |
"\n",
|
| 516 |
"def save_data(button):\n",
|
| 517 |
" save_settings()\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 518 |
" widgets.Widget.close_all()\n",
|
| 519 |
"\n",
|
| 520 |
"settings = load_settings()\n",
|
|
|
|
| 21 |
"\n",
|
| 22 |
"import os\n",
|
| 23 |
"import json\n",
|
| 24 |
+
"import time\n",
|
| 25 |
"import ipywidgets as widgets\n",
|
| 26 |
"from ipywidgets import widgets, Layout, Label, Button, VBox, HBox\n",
|
| 27 |
"from IPython.display import display, HTML, Javascript, clear_output\n",
|
|
|
|
| 63 |
"# ---\n",
|
| 64 |
"url_img, opacity_img, blur_img, y_img, x_img, scale_img, mode_img = args.image, args.opacity, args.blur, args.y, args.x, args.scale, args.mode\n",
|
| 65 |
"\n",
|
| 66 |
+
"# WTF COLAB - WHAT THE FUCK IS THE DIFFERENCE OF 40 PIXELS!?!?!?\n",
|
| 67 |
+
"fix_heigh_img = \"-780px\"\n",
|
| 68 |
+
"if env == \"Google Colab\": # betrayal..\n",
|
| 69 |
+
" fix_heigh_img = \"-740px\"\n",
|
| 70 |
+
"\n",
|
| 71 |
"container_background = f'''\n",
|
| 72 |
"<style>\n",
|
| 73 |
":root {{\n",
|
|
|
|
| 78 |
" --image_x: {x_img}px;\n",
|
| 79 |
" --img_scale: {scale_img}%;\n",
|
| 80 |
" --img_mode: {mode_img};\n",
|
| 81 |
+
" --img_height_dif: {fix_heigh_img}\n",
|
| 82 |
"}}\n",
|
| 83 |
"\n",
|
| 84 |
".widget-dropdown select,\n",
|
|
|
|
| 138 |
" content: \"ANXETY\";\n",
|
| 139 |
" font-weight: bold;\n",
|
| 140 |
" font-size: 24px;\n",
|
| 141 |
+
" color: rgba(0, 0, 0, 0.2);\n",
|
| 142 |
"}\n",
|
| 143 |
"\n",
|
| 144 |
"/* background img */\n",
|
|
|
|
| 168 |
" background-position: var(--image_x) calc(-430px - var(--image_y));\n",
|
| 169 |
"}\n",
|
| 170 |
".image_4::before {\n",
|
| 171 |
+
" background-position: var(--image_x) calc(var(--img_height_dif) - var(--image_y));\n",
|
| 172 |
"}\n",
|
| 173 |
"\n",
|
| 174 |
".container_custom_downlad {\n",
|
|
|
|
| 227 |
"}\n",
|
| 228 |
"\n",
|
| 229 |
"\n",
|
| 230 |
+
"/* Slider Checkbox style */\n",
|
| 231 |
+
"\n",
|
| 232 |
+
".widget-checkbox input[type=\"checkbox\"] {\n",
|
| 233 |
+
" appearance: none;\n",
|
| 234 |
+
" position: relative;\n",
|
| 235 |
+
" top: 4px; /* Why is he taller?! */\n",
|
| 236 |
+
" width: 40px;\n",
|
| 237 |
+
" height: 20px;\n",
|
| 238 |
+
" border: none;\n",
|
| 239 |
+
" border-radius: 10px;\n",
|
| 240 |
+
" background-color: #20b2aa;\n",
|
| 241 |
+
" cursor: pointer;\n",
|
| 242 |
+
" box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.3);\n",
|
| 243 |
+
" transition: background-color 0.3s ease;\n",
|
| 244 |
+
"}\n",
|
| 245 |
+
".widget-checkbox input[type=\"checkbox\"]:checked {\n",
|
| 246 |
+
" background-color: #2196F3;\n",
|
| 247 |
+
"}\n",
|
| 248 |
+
"\n",
|
| 249 |
+
".widget-checkbox input[type=\"checkbox\"]:before {\n",
|
| 250 |
+
" content: '';\n",
|
| 251 |
+
" position: absolute;\n",
|
| 252 |
+
" top: 50%;\n",
|
| 253 |
+
" left: 3px;\n",
|
| 254 |
+
" width: 16px;\n",
|
| 255 |
+
" height: 16px;\n",
|
| 256 |
+
" border-radius: inherit;\n",
|
| 257 |
+
" background-color: white;\n",
|
| 258 |
+
" box-shadow: 0 0 8px rgba(0, 0, 0, 0.3);\n",
|
| 259 |
+
" transform: translateY(-50%);\n",
|
| 260 |
+
" transition: left 0.3s ease;\n",
|
| 261 |
+
"}\n",
|
| 262 |
+
".widget-checkbox input[type=\"checkbox\"]:checked:before {\n",
|
| 263 |
+
" left: 21px;\n",
|
| 264 |
+
"}\n",
|
| 265 |
+
"\n",
|
| 266 |
+
"\n",
|
| 267 |
"/* Button styles */\n",
|
| 268 |
"\n",
|
| 269 |
".button_save {\n",
|
|
|
|
| 382 |
".button_save {\n",
|
| 383 |
" animation-name: showedWidgets;\n",
|
| 384 |
" animation-duration: 1s;\n",
|
| 385 |
+
" animation-fill-mode: forwards;\n",
|
| 386 |
+
"}\n",
|
| 387 |
+
"\n",
|
| 388 |
+
".container.hide,\n",
|
| 389 |
+
".button_save.hide {\n",
|
| 390 |
+
" animation-name: hideWidgets;\n",
|
| 391 |
+
" animation-duration: 0.5s;\n",
|
| 392 |
+
" animation-fill-mode: forwards;\n",
|
| 393 |
"}\n",
|
| 394 |
"\n",
|
| 395 |
"@keyframes showedWidgets {\n",
|
|
|
|
| 404 |
" opacity: 1;\n",
|
| 405 |
" }\n",
|
| 406 |
"}\n",
|
| 407 |
+
"\n",
|
| 408 |
+
"@keyframes hideWidgets {\n",
|
| 409 |
+
" 0% {\n",
|
| 410 |
+
" transform: translate3d(0, 0, 0) scale(1);\n",
|
| 411 |
+
" filter: blur(0) grayscale(0) brightness(1);\n",
|
| 412 |
+
" opacity: 1;\n",
|
| 413 |
+
" }\n",
|
| 414 |
+
" 100% {\n",
|
| 415 |
+
" transform: translate3d(0, 5%, 0) scale(0.9);\n",
|
| 416 |
+
" filter: blur(15px) grayscale(1) brightness(0.5);\n",
|
| 417 |
+
" opacity: 0;\n",
|
| 418 |
+
" }\n",
|
| 419 |
+
"}\n",
|
| 420 |
"</style>\n",
|
| 421 |
"\n",
|
| 422 |
"<!-- TOGGLE 'CustomDL' SCRIPT -->\n",
|
|
|
|
| 445 |
"# --- MODEL ---\n",
|
| 446 |
"model_header = widgets.HTML('<div class=\"header\">Model Selection<div>')\n",
|
| 447 |
"model_options = ['none',\n",
|
| 448 |
+
" '1.Anime (by XpucT) + INP',\n",
|
| 449 |
+
" '2.BluMix [Anime] [V7]',\n",
|
| 450 |
+
" '3.Cetus-Mix [Anime] [V4] + INP',\n",
|
| 451 |
+
" '4.Counterfeit [Anime] [V3] + INP',\n",
|
| 452 |
+
" '5.CuteColor [Anime] [V3]',\n",
|
| 453 |
+
" '6.Dark-Sushi-Mix [Anime]',\n",
|
| 454 |
+
" '7.Deliberate [Realism] [V6] + INP',\n",
|
| 455 |
+
" '8.Meina-Mix [Anime] [V11] + INP',\n",
|
| 456 |
+
" '9.Mix-Pro [Anime] [V4] + INP']\n",
|
| 457 |
"# ---\n",
|
| 458 |
+
"Model_widget = widgets.Dropdown(options=model_options, value='4.Counterfeit [Anime] [V3] + INP', description='Model:', style=style, layout=layout)\n",
|
| 459 |
"Model_Num_widget = widgets.Text(description='Model Number:', placeholder='Enter the model numbers to be downloaded using comma/space.', style=style, layout=layout)\n",
|
| 460 |
"Inpainting_Model_widget = widgets.Checkbox(value=False, description='Inpainting Models', style=style)\n",
|
| 461 |
"\n",
|
| 462 |
+
"''' Display Model'''\n",
|
| 463 |
+
"all_model_box = widgets.VBox([model_header, Model_widget, Model_Num_widget, Inpainting_Model_widget]).add_class(\"container\").add_class(\"image_1\")\n",
|
| 464 |
+
"display(all_model_box)\n",
|
| 465 |
"\n",
|
| 466 |
"# --- VAE ---\n",
|
| 467 |
"vae_header = widgets.HTML('<div class=\"header\" >VAE Selection</div>')\n",
|
|
|
|
| 472 |
" '4.ClearVae.vae',\n",
|
| 473 |
" '5.WD.vae']\n",
|
| 474 |
"Vae_widget = widgets.Dropdown(options=vae_options, value='3.Blessed2.vae', description='Vae:', style=style, layout=layout)\n",
|
| 475 |
+
"Vae_Num_widget = widgets.Text(description='Vae Number:', placeholder='Enter the vae numbers to be downloaded using comma/space.', style=style, layout=layout)\n",
|
| 476 |
"\n",
|
| 477 |
+
"''' Display Vae'''\n",
|
| 478 |
+
"all_vae_box= widgets.VBox([vae_header, Vae_widget, Vae_Num_widget]).add_class(\"container\").add_class(\"image_2\")\n",
|
| 479 |
+
"display(all_vae_box)\n",
|
| 480 |
"\n",
|
| 481 |
"# --- ADDITIONAL ---\n",
|
| 482 |
"additional_header = widgets.HTML('<div class=\"header\">Additional</div>')\n",
|
|
|
|
| 495 |
"controlnet_widget = widgets.Dropdown(options=controlnet_options, value='none', description='ControlNet:', style=style, layout=layout)\n",
|
| 496 |
"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",
|
| 497 |
"commit_hash_widget = widgets.Text(description='Commit Hash:', style=style, layout=layout)\n",
|
| 498 |
+
"optional_huggingface_token_widget = widgets.Text(description='HuggingFace Token:', style=style, layout=layout)\n",
|
| 499 |
+
"ngrok_token_widget = widgets.Text(description='Ngrok Token:', style=style, layout=widgets.Layout(width='1047px'))\n",
|
| 500 |
"ngrock_button = widgets.HTML('<a href=\"https://dashboard.ngrok.com/get-started/your-authtoken\" target=\"_blank\">Get Ngrok Token</a>').add_class(\"button_ngrok\")\n",
|
| 501 |
"ngrok_widget = widgets.HBox([ngrok_token_widget, ngrock_button], style=style, layout=layout)\n",
|
| 502 |
"# ---\n",
|
| 503 |
"commandline_arguments_options = \"--listen --enable-insecure-extension-access --theme dark --no-half-vae --disable-console-progressbars --xformers\"\n",
|
| 504 |
"commandline_arguments_widget = widgets.Text(description='Arguments:', value=commandline_arguments_options, style=style, layout=layout)\n",
|
| 505 |
"\n",
|
| 506 |
+
"''' Display Additional'''\n",
|
| 507 |
"additional_widget_list = [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",
|
| 508 |
"if free_plan and env == \"Google Colab\":\n",
|
| 509 |
" additional_widget_list.remove(ngrok_widget)\n",
|
| 510 |
+
"# ```\n",
|
| 511 |
+
"all_additional_box = widgets.VBox(additional_widget_list).add_class(\"container\").add_class(\"image_3\")\n",
|
| 512 |
+
"display(all_additional_box)\n",
|
| 513 |
"\n",
|
| 514 |
"# --- CUSTOM DOWNLOAD ---\n",
|
| 515 |
"custom_download_header_popup = widgets.HTML('''\n",
|
|
|
|
| 523 |
"\n",
|
| 524 |
"<div class=\"header\" style=\"cursor: pointer;\" onclick=\"toggleContainer()\">Custom Download</div>\n",
|
| 525 |
"<!-- PopUp Window -->\n",
|
| 526 |
+
"<div class=\"info\">INFO</div>\n",
|
| 527 |
"<div class=\"popup\">\n",
|
| 528 |
" Separate multiple URLs with a comma/space. For a <span class=\"file_name\">custom name</span> file/extension, specify it with <span class=\"braces\">[]</span>\n",
|
| 529 |
" after the URL without spaces.\n",
|
|
|
|
| 545 |
"Extensions_url_widget = widgets.Text(description='Extensions:', style=style, layout=layout)\n",
|
| 546 |
"custom_file_urls_widget = widgets.Text(description='File (txt):', style=style, layout=layout)\n",
|
| 547 |
"\n",
|
| 548 |
+
"''' Display CustomDl'''\n",
|
| 549 |
+
"all_custom_box = widgets.VBox([\n",
|
| 550 |
" custom_download_header_popup, Model_url_widget, Vae_url_widget, LoRA_url_widget, Embedding_url_widget, Extensions_url_widget, custom_file_urls_widget\n",
|
| 551 |
+
" ]).add_class(\"container\").add_class(\"image_4\").add_class(\"container_custom_downlad\")\n",
|
| 552 |
+
"display(all_custom_box)\n",
|
| 553 |
"\n",
|
| 554 |
"# --- Save Button ---\n",
|
| 555 |
"save_button = widgets.Button(description='Save').add_class(\"button_save\")\n",
|
|
|
|
| 557 |
"\n",
|
| 558 |
"\n",
|
| 559 |
"# ============ Load / Save - Settings V2 ============\n",
|
| 560 |
+
"SETTINGS_FILE = f'{root_path}/settings.json'\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
| 561 |
"\n",
|
| 562 |
+
"settings_keys = [\n",
|
| 563 |
+
" 'Model', 'Model_Num', 'Inpainting_Model',\n",
|
| 564 |
+
" 'Vae', 'Vae_Num',\n",
|
| 565 |
+
" 'latest_webui', 'latest_exstensions', 'detailed_download',\n",
|
| 566 |
+
" 'controlnet', 'controlnet_Num', 'commit_hash', 'optional_huggingface_token',\n",
|
| 567 |
+
" 'ngrok_token', 'commandline_arguments',\n",
|
| 568 |
+
" 'Model_url', 'Vae_url', 'LoRA_url', 'Embedding_url', 'Extensions_url', 'custom_file_urls'\n",
|
| 569 |
+
"]\n",
|
| 570 |
"\n",
|
| 571 |
"def save_settings():\n",
|
| 572 |
+
" settings = {key: globals()[f\"{key}_widget\"].value for key in settings_keys}\n",
|
|
|
|
|
|
|
| 573 |
" with open(SETTINGS_FILE, 'w') as f:\n",
|
| 574 |
+
" json.dump(settings, f)\n",
|
| 575 |
"\n",
|
| 576 |
"def load_settings():\n",
|
| 577 |
" if os.path.exists(SETTINGS_FILE):\n",
|
| 578 |
" with open(SETTINGS_FILE, 'r') as f:\n",
|
| 579 |
+
" settings = json.load(f)\n",
|
| 580 |
+
" for key in settings_keys:\n",
|
| 581 |
+
" globals()[f\"{key}_widget\"].value = settings.get(key)\n",
|
|
|
|
|
|
|
| 582 |
"\n",
|
| 583 |
"def save_data(button):\n",
|
| 584 |
" save_settings()\n",
|
| 585 |
+
"\n",
|
| 586 |
+
" # --- uhh - hide... ---\n",
|
| 587 |
+
" widgets_list = [all_model_box, all_vae_box, all_additional_box, all_custom_box, save_button]\n",
|
| 588 |
+
" for widget in widgets_list:\n",
|
| 589 |
+
" widget.add_class(\"hide\")\n",
|
| 590 |
+
" time.sleep(0.5)\n",
|
| 591 |
+
"\n",
|
| 592 |
" widgets.Widget.close_all()\n",
|
| 593 |
"\n",
|
| 594 |
"settings = load_settings()\n",
|
files_cells/notebooks/ru/downloading_ru.ipynb
CHANGED
|
@@ -68,7 +68,7 @@
|
|
| 68 |
" xformers = \"xformers==0.0.23.post1 triton==2.1.0\"\n",
|
| 69 |
" torch = \"torch==2.1.2+cu121 torchvision==0.16.2+cu121 torchaudio==2.1.2 --extra-index-url https://download.pytorch.org/whl/cu121\"\n",
|
| 70 |
"\n",
|
| 71 |
-
" print(\"Установка библиотек, это займет какое-то время...\", end='')\n",
|
| 72 |
" with capture.capture_output() as cap:\n",
|
| 73 |
" !pip install -U gdown\n",
|
| 74 |
" !apt-get update && apt -y install aria2\n",
|
|
@@ -87,7 +87,7 @@
|
|
| 87 |
" !wget -P /home/studio-lab-user https://huggingface.co/NagisaNao/fast_repo/resolve/main/sagemaker/FULL_DELETED_NOTEBOOK.ipynb\n",
|
| 88 |
"\n",
|
| 89 |
" if env == \"Google Colab\":\n",
|
| 90 |
-
" !pip install -q pip install xformers==0.0.26.
|
| 91 |
" else:\n",
|
| 92 |
" !pip install -q {torch} -U\n",
|
| 93 |
" !pip install -q {xformers} -U\n",
|
|
@@ -95,25 +95,19 @@
|
|
| 95 |
" with open(flag_file, \"w\") as f:\n",
|
| 96 |
" f.write(\"hey ;3\")\n",
|
| 97 |
" del cap\n",
|
| 98 |
-
" print(\"\\rБиблиотеки установлены!\" + \" \"*35)\n",
|
| 99 |
" time.sleep(2)\n",
|
| 100 |
" clear_output()\n",
|
| 101 |
"\n",
|
| 102 |
"\n",
|
| 103 |
-
"# ================= loading settings
|
| 104 |
-
"import toml\n",
|
| 105 |
-
"\n",
|
| 106 |
"def load_settings(path):\n",
|
| 107 |
" if os.path.exists(path):\n",
|
| 108 |
" with open(path, 'r') as file:\n",
|
| 109 |
-
"
|
| 110 |
-
" flat_settings = {}\n",
|
| 111 |
-
" for section, keys in settings.items():\n",
|
| 112 |
-
" flat_settings.update(keys)\n",
|
| 113 |
-
" return flat_settings\n",
|
| 114 |
" return {}\n",
|
| 115 |
"\n",
|
| 116 |
-
"settings = load_settings(f'{root_path}/settings.
|
| 117 |
"\n",
|
| 118 |
"variables = [\n",
|
| 119 |
" 'Model', 'Model_Num', 'Inpainting_Model',\n",
|
|
@@ -167,7 +161,8 @@
|
|
| 167 |
" install_time = timedelta(seconds=time.time()-start_install)\n",
|
| 168 |
" print(\"\\r🚀 Распаковка Завершена! За\",\"%02d:%02d:%02d ⚡\\n\" % (install_time.seconds / 3600, (install_time.seconds / 60) % 60, install_time.seconds % 60), end='', flush=True)\n",
|
| 169 |
"else:\n",
|
| 170 |
-
"
|
|
|
|
| 171 |
" print(\"🚀 Все распакованно... Пропуск. ⚡\")\n",
|
| 172 |
" start_colab = float(open(f'{webui_path}/static/colabTimer.txt', 'r').read())\n",
|
| 173 |
" time_since_start = str(timedelta(seconds=time.time()-start_colab)).split('.')[0]\n",
|
|
@@ -234,35 +229,39 @@
|
|
| 234 |
"## Downloading model and stuff | oh yeah~ I'm starting to misunderstand my own code ( almost my own ;3 )\n",
|
| 235 |
"print(\"📦 Скачивание моделей и прочего...\", end='')\n",
|
| 236 |
"model_list = {\n",
|
| 237 |
-
" \"1.Anime (by
|
| 238 |
" {\"url\": \"https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2.safetensors\", \"name\": \"Anime_v2.safetensors\"},\n",
|
| 239 |
" {\"url\": \"https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2-inpainting.safetensors\", \"name\": \"Anime_v2-inpainting.safetensors\"}\n",
|
| 240 |
" ],\n",
|
| 241 |
-
" \"2.
|
|
|
|
|
|
|
|
|
|
| 242 |
" {\"url\": \"https://civitai.com/api/download/models/130298\", \"name\": \"CetusMix_V4.safetensors\"},\n",
|
| 243 |
" {\"url\": \"https://civitai.com/api/download/models/139882\", \"name\": \"CetusMix_V4-inpainting.safetensors\"}\n",
|
| 244 |
" ],\n",
|
| 245 |
-
" \"
|
| 246 |
" {\"url\": \"https://civitai.com/api/download/models/125050\", \"name\": \"Counterfeit_V3.safetensors\"},\n",
|
| 247 |
" {\"url\": \"https://civitai.com/api/download/models/137911\", \"name\": \"Counterfeit_V3-inpainting.safetensors\"}\n",
|
| 248 |
" ],\n",
|
| 249 |
-
" \"
|
| 250 |
" {\"url\": \"https://civitai.com/api/download/models/138754\", \"name\": \"CuteColor_V3.safetensors\"}\n",
|
| 251 |
" ],\n",
|
| 252 |
-
" \"
|
| 253 |
" {\"url\": \"https://civitai.com/api/download/models/101640\", \"name\": \"DarkSushiMix_2_5D.safetensors\"},\n",
|
| 254 |
" {\"url\": \"https://civitai.com/api/download/models/56071\", \"name\": \"DarkSushiMix_colorful.safetensors\"}\n",
|
| 255 |
" ],\n",
|
| 256 |
-
" \"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 257 |
" {\"url\": \"https://civitai.com/api/download/models/119057\", \"name\": \"MeinaMix_V11.safetensors\"},\n",
|
| 258 |
" {\"url\": \"https://civitai.com/api/download/models/120702\", \"name\": \"MeinaMix_V11-inpainting.safetensors\"}\n",
|
| 259 |
" ],\n",
|
| 260 |
-
" \"
|
| 261 |
" {\"url\": \"https://civitai.com/api/download/models/125668\", \"name\": \"MixPro_V4.safetensors\"},\n",
|
| 262 |
" {\"url\": \"https://civitai.com/api/download/models/139878\", \"name\": \"MixPro_V4-inpainting.safetensors\"}\n",
|
| 263 |
-
" ],\n",
|
| 264 |
-
" \"8.BluMix [Anime] [V7]\": [\n",
|
| 265 |
-
" {\"url\": \"https://civitai.com/api/download/models/361779\", \"name\": \"BluMix_v7.safetensors\"}\n",
|
| 266 |
" ]\n",
|
| 267 |
"}\n",
|
| 268 |
"\n",
|
|
@@ -342,8 +341,8 @@
|
|
| 342 |
" \"model\": [models_dir, \"Model_url\"],\n",
|
| 343 |
" \"vae\": [vaes_dir, \"Vae_url\"],\n",
|
| 344 |
" \"lora\": [loras_dir, \"LoRA_url\"],\n",
|
| 345 |
-
" \"
|
| 346 |
-
" \"
|
| 347 |
" \"control\": [control_dir, \"ControlNet_url\"]\n",
|
| 348 |
"}\n",
|
| 349 |
"\n",
|
|
@@ -353,7 +352,6 @@
|
|
| 353 |
"ControlNet_url = \"\"\n",
|
| 354 |
"hf_token = optional_huggingface_token if optional_huggingface_token else \"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\"\n",
|
| 355 |
"user_header = f\"\\\"Authorization: Bearer {hf_token}\\\"\"\n",
|
| 356 |
-
"# user_header = f\"\\\"Authorization: Bearer {optional_huggingface_token}\\\"\"\n",
|
| 357 |
"\n",
|
| 358 |
"def handle_manual(url):\n",
|
| 359 |
" original_url = url\n",
|
|
@@ -365,22 +363,22 @@
|
|
| 365 |
"\n",
|
| 366 |
" for prefix, (dir, _) in prefixes.items():\n",
|
| 367 |
" if original_url.startswith(f\"{prefix}:\"):\n",
|
| 368 |
-
" if prefix != \"
|
| 369 |
" manual_download(url, dir, file_name=file_name)\n",
|
| 370 |
" else:\n",
|
| 371 |
" extension_repo.append((url, file_name))\n",
|
| 372 |
"\n",
|
| 373 |
"def manual_download(url, dst_dir, file_name):\n",
|
| 374 |
" basename = url.split(\"/\")[-1] if file_name is None else file_name\n",
|
| 375 |
-
" header_option = f\"--header={user_header}\"
|
|
|
|
|
|
|
| 376 |
"\n",
|
| 377 |
" # I do it at my own risk..... Fucking CivitAi >:(\n",
|
| 378 |
" civitai_token = \"62c0c5956b2f9defbd844d754000180b\"\n",
|
| 379 |
" if 'civitai' in url and civitai_token:\n",
|
| 380 |
" url = f\"{url}?token={civitai_token}\"\n",
|
| 381 |
"\n",
|
| 382 |
-
" print(\"\\033[32m---\"*45 + f\"\\n\\033[33mURL: \\033[34m{url}\\n\\033[33mSAVE DIR: \\033[34m{dst_dir}\\n\\033[33mFILE NAME: \\033[34m{file_name}\\033[32m\\n~~~\\033[0m\")\n",
|
| 383 |
-
"\n",
|
| 384 |
" # -- GDrive --\n",
|
| 385 |
" if 'drive.google' in url:\n",
|
| 386 |
" if 'folders' in url:\n",
|
|
|
|
| 68 |
" xformers = \"xformers==0.0.23.post1 triton==2.1.0\"\n",
|
| 69 |
" torch = \"torch==2.1.2+cu121 torchvision==0.16.2+cu121 torchaudio==2.1.2 --extra-index-url https://download.pytorch.org/whl/cu121\"\n",
|
| 70 |
"\n",
|
| 71 |
+
" print(\"💿 Установка библиотек, это займет какое-то время...\", end='')\n",
|
| 72 |
" with capture.capture_output() as cap:\n",
|
| 73 |
" !pip install -U gdown\n",
|
| 74 |
" !apt-get update && apt -y install aria2\n",
|
|
|
|
| 87 |
" !wget -P /home/studio-lab-user https://huggingface.co/NagisaNao/fast_repo/resolve/main/sagemaker/FULL_DELETED_NOTEBOOK.ipynb\n",
|
| 88 |
"\n",
|
| 89 |
" if env == \"Google Colab\":\n",
|
| 90 |
+
" !pip install -q pip install xformers==0.0.26.dev778 -U\n",
|
| 91 |
" else:\n",
|
| 92 |
" !pip install -q {torch} -U\n",
|
| 93 |
" !pip install -q {xformers} -U\n",
|
|
|
|
| 95 |
" with open(flag_file, \"w\") as f:\n",
|
| 96 |
" f.write(\"hey ;3\")\n",
|
| 97 |
" del cap\n",
|
| 98 |
+
" print(\"\\r🍪 Библиотеки установлены!\" + \" \"*35)\n",
|
| 99 |
" time.sleep(2)\n",
|
| 100 |
" clear_output()\n",
|
| 101 |
"\n",
|
| 102 |
"\n",
|
| 103 |
+
"# ================= loading settings V4 =================\n",
|
|
|
|
|
|
|
| 104 |
"def load_settings(path):\n",
|
| 105 |
" if os.path.exists(path):\n",
|
| 106 |
" with open(path, 'r') as file:\n",
|
| 107 |
+
" return json.load(file)\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
| 108 |
" return {}\n",
|
| 109 |
"\n",
|
| 110 |
+
"settings = load_settings(f'{root_path}/settings.json')\n",
|
| 111 |
"\n",
|
| 112 |
"variables = [\n",
|
| 113 |
" 'Model', 'Model_Num', 'Inpainting_Model',\n",
|
|
|
|
| 161 |
" install_time = timedelta(seconds=time.time()-start_install)\n",
|
| 162 |
" print(\"\\r🚀 Распаковка Завершена! За\",\"%02d:%02d:%02d ⚡\\n\" % (install_time.seconds / 3600, (install_time.seconds / 60) % 60, install_time.seconds % 60), end='', flush=True)\n",
|
| 163 |
"else:\n",
|
| 164 |
+
" if env == \"SageMaker Studio Lab\":\n",
|
| 165 |
+
" !echo -n {start_colab} > {webui_path}/static/colabTimer.txt\n",
|
| 166 |
" print(\"🚀 Все распакованно... Пропуск. ⚡\")\n",
|
| 167 |
" start_colab = float(open(f'{webui_path}/static/colabTimer.txt', 'r').read())\n",
|
| 168 |
" time_since_start = str(timedelta(seconds=time.time()-start_colab)).split('.')[0]\n",
|
|
|
|
| 229 |
"## Downloading model and stuff | oh yeah~ I'm starting to misunderstand my own code ( almost my own ;3 )\n",
|
| 230 |
"print(\"📦 Скачивание моделей и прочего...\", end='')\n",
|
| 231 |
"model_list = {\n",
|
| 232 |
+
" \"1.Anime (by XpucT) + INP\": [\n",
|
| 233 |
" {\"url\": \"https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2.safetensors\", \"name\": \"Anime_v2.safetensors\"},\n",
|
| 234 |
" {\"url\": \"https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2-inpainting.safetensors\", \"name\": \"Anime_v2-inpainting.safetensors\"}\n",
|
| 235 |
" ],\n",
|
| 236 |
+
" \"2.BluMix [Anime] [V7]\": [\n",
|
| 237 |
+
" {\"url\": \"https://civitai.com/api/download/models/361779\", \"name\": \"BluMix_v7.safetensors\"}\n",
|
| 238 |
+
" ],\n",
|
| 239 |
+
" \"3.Cetus-Mix [Anime] [V4] + INP\": [\n",
|
| 240 |
" {\"url\": \"https://civitai.com/api/download/models/130298\", \"name\": \"CetusMix_V4.safetensors\"},\n",
|
| 241 |
" {\"url\": \"https://civitai.com/api/download/models/139882\", \"name\": \"CetusMix_V4-inpainting.safetensors\"}\n",
|
| 242 |
" ],\n",
|
| 243 |
+
" \"4.Counterfeit [Anime] [V3] + INP\": [\n",
|
| 244 |
" {\"url\": \"https://civitai.com/api/download/models/125050\", \"name\": \"Counterfeit_V3.safetensors\"},\n",
|
| 245 |
" {\"url\": \"https://civitai.com/api/download/models/137911\", \"name\": \"Counterfeit_V3-inpainting.safetensors\"}\n",
|
| 246 |
" ],\n",
|
| 247 |
+
" \"5.CuteColor [Anime] [V3]\": [\n",
|
| 248 |
" {\"url\": \"https://civitai.com/api/download/models/138754\", \"name\": \"CuteColor_V3.safetensors\"}\n",
|
| 249 |
" ],\n",
|
| 250 |
+
" \"6.Dark-Sushi-Mix [Anime]\": [\n",
|
| 251 |
" {\"url\": \"https://civitai.com/api/download/models/101640\", \"name\": \"DarkSushiMix_2_5D.safetensors\"},\n",
|
| 252 |
" {\"url\": \"https://civitai.com/api/download/models/56071\", \"name\": \"DarkSushiMix_colorful.safetensors\"}\n",
|
| 253 |
" ],\n",
|
| 254 |
+
" \"7.Deliberate [Realism] [V6] + INP\": [\n",
|
| 255 |
+
" {\"url\": \"https://huggingface.co/XpucT/Deliberate/resolve/main/Deliberate_v6.safetensors\", \"name\": \"Deliberate_v6.safetensors\"},\n",
|
| 256 |
+
" {\"url\": \"https://huggingface.co/XpucT/Deliberate/resolve/main/Deliberate_v6-inpainting.safetensors\", \"name\": \"Deliberate_v6-inpainting.safetensors\"}\n",
|
| 257 |
+
" ],\n",
|
| 258 |
+
" \"8.Meina-Mix [Anime] [V11] + INP\": [\n",
|
| 259 |
" {\"url\": \"https://civitai.com/api/download/models/119057\", \"name\": \"MeinaMix_V11.safetensors\"},\n",
|
| 260 |
" {\"url\": \"https://civitai.com/api/download/models/120702\", \"name\": \"MeinaMix_V11-inpainting.safetensors\"}\n",
|
| 261 |
" ],\n",
|
| 262 |
+
" \"9.Mix-Pro [Anime] [V4] + INP\": [\n",
|
| 263 |
" {\"url\": \"https://civitai.com/api/download/models/125668\", \"name\": \"MixPro_V4.safetensors\"},\n",
|
| 264 |
" {\"url\": \"https://civitai.com/api/download/models/139878\", \"name\": \"MixPro_V4-inpainting.safetensors\"}\n",
|
|
|
|
|
|
|
|
|
|
| 265 |
" ]\n",
|
| 266 |
"}\n",
|
| 267 |
"\n",
|
|
|
|
| 341 |
" \"model\": [models_dir, \"Model_url\"],\n",
|
| 342 |
" \"vae\": [vaes_dir, \"Vae_url\"],\n",
|
| 343 |
" \"lora\": [loras_dir, \"LoRA_url\"],\n",
|
| 344 |
+
" \"embed\": [embeddings_dir, \"Embedding_url\"],\n",
|
| 345 |
+
" \"extension\": [extensions_dir, \"Extensions_url\"],\n",
|
| 346 |
" \"control\": [control_dir, \"ControlNet_url\"]\n",
|
| 347 |
"}\n",
|
| 348 |
"\n",
|
|
|
|
| 352 |
"ControlNet_url = \"\"\n",
|
| 353 |
"hf_token = optional_huggingface_token if optional_huggingface_token else \"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\"\n",
|
| 354 |
"user_header = f\"\\\"Authorization: Bearer {hf_token}\\\"\"\n",
|
|
|
|
| 355 |
"\n",
|
| 356 |
"def handle_manual(url):\n",
|
| 357 |
" original_url = url\n",
|
|
|
|
| 363 |
"\n",
|
| 364 |
" for prefix, (dir, _) in prefixes.items():\n",
|
| 365 |
" if original_url.startswith(f\"{prefix}:\"):\n",
|
| 366 |
+
" if prefix != \"extension\":\n",
|
| 367 |
" manual_download(url, dir, file_name=file_name)\n",
|
| 368 |
" else:\n",
|
| 369 |
" extension_repo.append((url, file_name))\n",
|
| 370 |
"\n",
|
| 371 |
"def manual_download(url, dst_dir, file_name):\n",
|
| 372 |
" basename = url.split(\"/\")[-1] if file_name is None else file_name\n",
|
| 373 |
+
" header_option = f\"--header={user_header}\"\n",
|
| 374 |
+
"\n",
|
| 375 |
+
" print(\"\\033[32m---\"*45 + f\"\\n\\033[33mURL: \\033[34m{url}\\n\\033[33mSAVE DIR: \\033[34m{dst_dir}\\n\\033[33mFILE NAME: \\033[34m{file_name}\\033[32m\\n~~~\\033[0m\")\n",
|
| 376 |
"\n",
|
| 377 |
" # I do it at my own risk..... Fucking CivitAi >:(\n",
|
| 378 |
" civitai_token = \"62c0c5956b2f9defbd844d754000180b\"\n",
|
| 379 |
" if 'civitai' in url and civitai_token:\n",
|
| 380 |
" url = f\"{url}?token={civitai_token}\"\n",
|
| 381 |
"\n",
|
|
|
|
|
|
|
| 382 |
" # -- GDrive --\n",
|
| 383 |
" if 'drive.google' in url:\n",
|
| 384 |
" if 'folders' in url:\n",
|
files_cells/notebooks/ru/widgets_ru.ipynb
CHANGED
|
@@ -21,6 +21,7 @@
|
|
| 21 |
"\n",
|
| 22 |
"import os\n",
|
| 23 |
"import json\n",
|
|
|
|
| 24 |
"import ipywidgets as widgets\n",
|
| 25 |
"from ipywidgets import widgets, Layout, Label, Button, VBox, HBox\n",
|
| 26 |
"from IPython.display import display, HTML, Javascript, clear_output\n",
|
|
@@ -62,6 +63,11 @@
|
|
| 62 |
"# ---\n",
|
| 63 |
"url_img, opacity_img, blur_img, y_img, x_img, scale_img, mode_img = args.image, args.opacity, args.blur, args.y, args.x, args.scale, args.mode\n",
|
| 64 |
"\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
"container_background = f'''\n",
|
| 66 |
"<style>\n",
|
| 67 |
":root {{\n",
|
|
@@ -72,6 +78,7 @@
|
|
| 72 |
" --image_x: {x_img}px;\n",
|
| 73 |
" --img_scale: {scale_img}%;\n",
|
| 74 |
" --img_mode: {mode_img};\n",
|
|
|
|
| 75 |
"}}\n",
|
| 76 |
"\n",
|
| 77 |
".widget-dropdown select,\n",
|
|
@@ -131,7 +138,7 @@
|
|
| 131 |
" content: \"ANXETY\";\n",
|
| 132 |
" font-weight: bold;\n",
|
| 133 |
" font-size: 24px;\n",
|
| 134 |
-
" color: rgba(0, 0, 0, 0.
|
| 135 |
"}\n",
|
| 136 |
"\n",
|
| 137 |
"/* background img */\n",
|
|
@@ -161,7 +168,7 @@
|
|
| 161 |
" background-position: var(--image_x) calc(-430px - var(--image_y));\n",
|
| 162 |
"}\n",
|
| 163 |
".image_4::before {\n",
|
| 164 |
-
" background-position: var(--image_x) calc(
|
| 165 |
"}\n",
|
| 166 |
"\n",
|
| 167 |
".container_custom_downlad {\n",
|
|
@@ -220,6 +227,43 @@
|
|
| 220 |
"}\n",
|
| 221 |
"\n",
|
| 222 |
"\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 223 |
"/* Button styles */\n",
|
| 224 |
"\n",
|
| 225 |
".button_save {\n",
|
|
@@ -338,6 +382,14 @@
|
|
| 338 |
".button_save {\n",
|
| 339 |
" animation-name: showedWidgets;\n",
|
| 340 |
" animation-duration: 1s;\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 341 |
"}\n",
|
| 342 |
"\n",
|
| 343 |
"@keyframes showedWidgets {\n",
|
|
@@ -352,6 +404,19 @@
|
|
| 352 |
" opacity: 1;\n",
|
| 353 |
" }\n",
|
| 354 |
"}\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 355 |
"</style>\n",
|
| 356 |
"\n",
|
| 357 |
"<!-- TOGGLE 'CustomDL' SCRIPT -->\n",
|
|
@@ -380,20 +445,23 @@
|
|
| 380 |
"# --- MODEL ---\n",
|
| 381 |
"model_header = widgets.HTML('<div class=\"header\">Выбор Модели<div>')\n",
|
| 382 |
"model_options = ['none',\n",
|
| 383 |
-
" '1.Anime (by
|
| 384 |
-
" '2.
|
| 385 |
-
" '3.
|
| 386 |
-
" '4.
|
| 387 |
-
" '5.
|
| 388 |
-
" '6.
|
| 389 |
-
" '7.
|
| 390 |
-
" '8.
|
|
|
|
| 391 |
"# ---\n",
|
| 392 |
-
"Model_widget = widgets.Dropdown(options=model_options, value='
|
| 393 |
"Model_Num_widget = widgets.Text(description='Номер Модели:', placeholder='Введите номера моделей для скачивания через запятую/пробел.', style=style, layout=layout)\n",
|
| 394 |
"Inpainting_Model_widget = widgets.Checkbox(value=False, description='Inpainting Модели', style=style)\n",
|
| 395 |
"\n",
|
| 396 |
-
"
|
|
|
|
|
|
|
| 397 |
"\n",
|
| 398 |
"# --- VAE ---\n",
|
| 399 |
"vae_header = widgets.HTML('<div class=\"header\" >Выбор VAE</div>')\n",
|
|
@@ -406,7 +474,9 @@
|
|
| 406 |
"Vae_widget = widgets.Dropdown(options=vae_options, value='3.Blessed2.vae', description='Vae:', style=style, layout=layout)\n",
|
| 407 |
"Vae_Num_widget = widgets.Text(description='Номер Vae:', placeholder='Введите номера vae для скачивания через запятую/пробел.', style=style, layout=layout)\n",
|
| 408 |
"\n",
|
| 409 |
-
"
|
|
|
|
|
|
|
| 410 |
"\n",
|
| 411 |
"# --- ADDITIONAL ---\n",
|
| 412 |
"additional_header = widgets.HTML('<div class=\"header\">Дополнительно</div>')\n",
|
|
@@ -433,10 +503,13 @@
|
|
| 433 |
"commandline_arguments_options = \"--listen --enable-insecure-extension-access --theme dark --no-half-vae --disable-console-progressbars --xformers\"\n",
|
| 434 |
"commandline_arguments_widget = widgets.Text(description='Аргументы:', value=commandline_arguments_options, style=style, layout=layout)\n",
|
| 435 |
"\n",
|
|
|
|
| 436 |
"additional_widget_list = [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",
|
| 437 |
"if free_plan and env == \"Google Colab\":\n",
|
| 438 |
" additional_widget_list.remove(ngrok_widget)\n",
|
| 439 |
-
"
|
|
|
|
|
|
|
| 440 |
"\n",
|
| 441 |
"# --- CUSTOM DOWNLOAD ---\n",
|
| 442 |
"custom_download_header_popup = widgets.HTML('''\n",
|
|
@@ -450,7 +523,7 @@
|
|
| 450 |
"\n",
|
| 451 |
"<div class=\"header\" style=\"cursor: pointer;\" onclick=\"toggleContainer()\">Кастомная Загрузка</div>\n",
|
| 452 |
"<!-- PopUp window -->\n",
|
| 453 |
-
"<div class=\"info\" id=\"info_dl\">
|
| 454 |
"<div class=\"popup\">\n",
|
| 455 |
" Разделите несколько URL-адресов запятой/пробелом. Для <span class=\"file_name\">пользовательского имени</span> файла/расширения укажите его через <span class=\"braces\">[]</span>\n",
|
| 456 |
" после URL без пробелов.\n",
|
|
@@ -472,49 +545,50 @@
|
|
| 472 |
"Extensions_url_widget = widgets.Text(description='Extensions:', style=style, layout=layout)\n",
|
| 473 |
"custom_file_urls_widget = widgets.Text(description='Файл (txt):', style=style, layout=layout)\n",
|
| 474 |
"\n",
|
| 475 |
-
"
|
|
|
|
| 476 |
" custom_download_header_popup, Model_url_widget, Vae_url_widget, LoRA_url_widget, Embedding_url_widget, Extensions_url_widget, custom_file_urls_widget\n",
|
| 477 |
-
" ]).add_class(\"container\").add_class(\"image_4\").add_class(\"container_custom_downlad\")
|
|
|
|
| 478 |
"\n",
|
| 479 |
"# --- Save Button ---\n",
|
| 480 |
"save_button = widgets.Button(description='Сохранить').add_class(\"button_save\")\n",
|
| 481 |
"display(save_button)\n",
|
| 482 |
"\n",
|
| 483 |
"\n",
|
| 484 |
-
"# ============ Load / Save - Settings
|
| 485 |
-
"
|
| 486 |
-
" import toml\n",
|
| 487 |
-
"except ImportError: # SageMaker - only for you...\n",
|
| 488 |
-
" !pip install toml > /dev/null 2>&1\n",
|
| 489 |
-
" import toml\n",
|
| 490 |
"\n",
|
| 491 |
-
"
|
| 492 |
-
"
|
| 493 |
-
"
|
| 494 |
-
"
|
| 495 |
-
"
|
| 496 |
-
"
|
| 497 |
-
"
|
| 498 |
-
"
|
| 499 |
"\n",
|
| 500 |
"def save_settings():\n",
|
| 501 |
-
" settings = {}\n",
|
| 502 |
-
" for section, keys in settings_structure.items():\n",
|
| 503 |
-
" settings[section] = {key: globals()[f\"{key}_widget\"].value for key in keys}\n",
|
| 504 |
" with open(SETTINGS_FILE, 'w') as f:\n",
|
| 505 |
-
"
|
| 506 |
"\n",
|
| 507 |
"def load_settings():\n",
|
| 508 |
" if os.path.exists(SETTINGS_FILE):\n",
|
| 509 |
" with open(SETTINGS_FILE, 'r') as f:\n",
|
| 510 |
-
"
|
| 511 |
-
" for
|
| 512 |
-
"
|
| 513 |
-
" if key in loaded_settings[section]:\n",
|
| 514 |
-
" globals()[f\"{key}_widget\"].value = loaded_settings[section][key]\n",
|
| 515 |
"\n",
|
| 516 |
"def save_data(button):\n",
|
| 517 |
" save_settings()\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 518 |
" widgets.Widget.close_all()\n",
|
| 519 |
"\n",
|
| 520 |
"settings = load_settings()\n",
|
|
|
|
| 21 |
"\n",
|
| 22 |
"import os\n",
|
| 23 |
"import json\n",
|
| 24 |
+
"import time\n",
|
| 25 |
"import ipywidgets as widgets\n",
|
| 26 |
"from ipywidgets import widgets, Layout, Label, Button, VBox, HBox\n",
|
| 27 |
"from IPython.display import display, HTML, Javascript, clear_output\n",
|
|
|
|
| 63 |
"# ---\n",
|
| 64 |
"url_img, opacity_img, blur_img, y_img, x_img, scale_img, mode_img = args.image, args.opacity, args.blur, args.y, args.x, args.scale, args.mode\n",
|
| 65 |
"\n",
|
| 66 |
+
"# WTF COLAB - WHAT THE FUCK IS THE DIFFERENCE OF 40 PIXELS!?!?!?\n",
|
| 67 |
+
"fix_heigh_img = \"-780px\"\n",
|
| 68 |
+
"if env == \"Google Colab\": # betrayal..\n",
|
| 69 |
+
" fix_heigh_img = \"-740px\"\n",
|
| 70 |
+
"\n",
|
| 71 |
"container_background = f'''\n",
|
| 72 |
"<style>\n",
|
| 73 |
":root {{\n",
|
|
|
|
| 78 |
" --image_x: {x_img}px;\n",
|
| 79 |
" --img_scale: {scale_img}%;\n",
|
| 80 |
" --img_mode: {mode_img};\n",
|
| 81 |
+
" --img_height_dif: {fix_heigh_img}\n",
|
| 82 |
"}}\n",
|
| 83 |
"\n",
|
| 84 |
".widget-dropdown select,\n",
|
|
|
|
| 138 |
" content: \"ANXETY\";\n",
|
| 139 |
" font-weight: bold;\n",
|
| 140 |
" font-size: 24px;\n",
|
| 141 |
+
" color: rgba(0, 0, 0, 0.2);\n",
|
| 142 |
"}\n",
|
| 143 |
"\n",
|
| 144 |
"/* background img */\n",
|
|
|
|
| 168 |
" background-position: var(--image_x) calc(-430px - var(--image_y));\n",
|
| 169 |
"}\n",
|
| 170 |
".image_4::before {\n",
|
| 171 |
+
" background-position: var(--image_x) calc(var(--img_height_dif) - var(--image_y));\n",
|
| 172 |
"}\n",
|
| 173 |
"\n",
|
| 174 |
".container_custom_downlad {\n",
|
|
|
|
| 227 |
"}\n",
|
| 228 |
"\n",
|
| 229 |
"\n",
|
| 230 |
+
"/* Slider Checkbox style */\n",
|
| 231 |
+
"\n",
|
| 232 |
+
".widget-checkbox input[type=\"checkbox\"] {\n",
|
| 233 |
+
" appearance: none;\n",
|
| 234 |
+
" position: relative;\n",
|
| 235 |
+
" top: 4px; /* Why is he taller?! */\n",
|
| 236 |
+
" width: 40px;\n",
|
| 237 |
+
" height: 20px;\n",
|
| 238 |
+
" border: none;\n",
|
| 239 |
+
" border-radius: 10px;\n",
|
| 240 |
+
" background-color: #20b2aa;\n",
|
| 241 |
+
" cursor: pointer;\n",
|
| 242 |
+
" box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.3);\n",
|
| 243 |
+
" transition: background-color 0.3s ease;\n",
|
| 244 |
+
"}\n",
|
| 245 |
+
".widget-checkbox input[type=\"checkbox\"]:checked {\n",
|
| 246 |
+
" background-color: #2196F3;\n",
|
| 247 |
+
"}\n",
|
| 248 |
+
"\n",
|
| 249 |
+
".widget-checkbox input[type=\"checkbox\"]:before {\n",
|
| 250 |
+
" content: '';\n",
|
| 251 |
+
" position: absolute;\n",
|
| 252 |
+
" top: 50%;\n",
|
| 253 |
+
" left: 3px;\n",
|
| 254 |
+
" width: 16px;\n",
|
| 255 |
+
" height: 16px;\n",
|
| 256 |
+
" border-radius: inherit;\n",
|
| 257 |
+
" background-color: white;\n",
|
| 258 |
+
" box-shadow: 0 0 8px rgba(0, 0, 0, 0.3);\n",
|
| 259 |
+
" transform: translateY(-50%);\n",
|
| 260 |
+
" transition: left 0.3s ease;\n",
|
| 261 |
+
"}\n",
|
| 262 |
+
".widget-checkbox input[type=\"checkbox\"]:checked:before {\n",
|
| 263 |
+
" left: 21px;\n",
|
| 264 |
+
"}\n",
|
| 265 |
+
"\n",
|
| 266 |
+
"\n",
|
| 267 |
"/* Button styles */\n",
|
| 268 |
"\n",
|
| 269 |
".button_save {\n",
|
|
|
|
| 382 |
".button_save {\n",
|
| 383 |
" animation-name: showedWidgets;\n",
|
| 384 |
" animation-duration: 1s;\n",
|
| 385 |
+
" animation-fill-mode: forwards;\n",
|
| 386 |
+
"}\n",
|
| 387 |
+
"\n",
|
| 388 |
+
".container.hide,\n",
|
| 389 |
+
".button_save.hide {\n",
|
| 390 |
+
" animation-name: hideWidgets;\n",
|
| 391 |
+
" animation-duration: 0.5s;\n",
|
| 392 |
+
" animation-fill-mode: forwards;\n",
|
| 393 |
"}\n",
|
| 394 |
"\n",
|
| 395 |
"@keyframes showedWidgets {\n",
|
|
|
|
| 404 |
" opacity: 1;\n",
|
| 405 |
" }\n",
|
| 406 |
"}\n",
|
| 407 |
+
"\n",
|
| 408 |
+
"@keyframes hideWidgets {\n",
|
| 409 |
+
" 0% {\n",
|
| 410 |
+
" transform: translate3d(0, 0, 0) scale(1);\n",
|
| 411 |
+
" filter: blur(0) grayscale(0) brightness(1);\n",
|
| 412 |
+
" opacity: 1;\n",
|
| 413 |
+
" }\n",
|
| 414 |
+
" 100% {\n",
|
| 415 |
+
" transform: translate3d(0, 5%, 0) scale(0.9);\n",
|
| 416 |
+
" filter: blur(15px) grayscale(1) brightness(0.5);\n",
|
| 417 |
+
" opacity: 0;\n",
|
| 418 |
+
" }\n",
|
| 419 |
+
"}\n",
|
| 420 |
"</style>\n",
|
| 421 |
"\n",
|
| 422 |
"<!-- TOGGLE 'CustomDL' SCRIPT -->\n",
|
|
|
|
| 445 |
"# --- MODEL ---\n",
|
| 446 |
"model_header = widgets.HTML('<div class=\"header\">Выбор Модели<div>')\n",
|
| 447 |
"model_options = ['none',\n",
|
| 448 |
+
" '1.Anime (by XpucT) + INP',\n",
|
| 449 |
+
" '2.BluMix [Anime] [V7]',\n",
|
| 450 |
+
" '3.Cetus-Mix [Anime] [V4] + INP',\n",
|
| 451 |
+
" '4.Counterfeit [Anime] [V3] + INP',\n",
|
| 452 |
+
" '5.CuteColor [Anime] [V3]',\n",
|
| 453 |
+
" '6.Dark-Sushi-Mix [Anime]',\n",
|
| 454 |
+
" '7.Deliberate [Realism] [V6] + INP',\n",
|
| 455 |
+
" '8.Meina-Mix [Anime] [V11] + INP',\n",
|
| 456 |
+
" '9.Mix-Pro [Anime] [V4] + INP']\n",
|
| 457 |
"# ---\n",
|
| 458 |
+
"Model_widget = widgets.Dropdown(options=model_options, value='4.Counterfeit [Anime] [V3] + INP', description='Модель:', style=style, layout=layout)\n",
|
| 459 |
"Model_Num_widget = widgets.Text(description='Номер Модели:', placeholder='Введите номера моделей для скачивания через запятую/пробел.', style=style, layout=layout)\n",
|
| 460 |
"Inpainting_Model_widget = widgets.Checkbox(value=False, description='Inpainting Модели', style=style)\n",
|
| 461 |
"\n",
|
| 462 |
+
"''' Display Model'''\n",
|
| 463 |
+
"all_model_box = widgets.VBox([model_header, Model_widget, Model_Num_widget, Inpainting_Model_widget]).add_class(\"container\").add_class(\"image_1\")\n",
|
| 464 |
+
"display(all_model_box)\n",
|
| 465 |
"\n",
|
| 466 |
"# --- VAE ---\n",
|
| 467 |
"vae_header = widgets.HTML('<div class=\"header\" >Выбор VAE</div>')\n",
|
|
|
|
| 474 |
"Vae_widget = widgets.Dropdown(options=vae_options, value='3.Blessed2.vae', description='Vae:', style=style, layout=layout)\n",
|
| 475 |
"Vae_Num_widget = widgets.Text(description='Номер Vae:', placeholder='Введите номера vae для скачивания через запятую/пробел.', style=style, layout=layout)\n",
|
| 476 |
"\n",
|
| 477 |
+
"''' Display Vae'''\n",
|
| 478 |
+
"all_vae_box= widgets.VBox([vae_header, Vae_widget, Vae_Num_widget]).add_class(\"container\").add_class(\"image_2\")\n",
|
| 479 |
+
"display(all_vae_box)\n",
|
| 480 |
"\n",
|
| 481 |
"# --- ADDITIONAL ---\n",
|
| 482 |
"additional_header = widgets.HTML('<div class=\"header\">Дополнительно</div>')\n",
|
|
|
|
| 503 |
"commandline_arguments_options = \"--listen --enable-insecure-extension-access --theme dark --no-half-vae --disable-console-progressbars --xformers\"\n",
|
| 504 |
"commandline_arguments_widget = widgets.Text(description='Аргументы:', value=commandline_arguments_options, style=style, layout=layout)\n",
|
| 505 |
"\n",
|
| 506 |
+
"''' Display Additional'''\n",
|
| 507 |
"additional_widget_list = [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",
|
| 508 |
"if free_plan and env == \"Google Colab\":\n",
|
| 509 |
" additional_widget_list.remove(ngrok_widget)\n",
|
| 510 |
+
"# ```\n",
|
| 511 |
+
"all_additional_box = widgets.VBox(additional_widget_list).add_class(\"container\").add_class(\"image_3\")\n",
|
| 512 |
+
"display(all_additional_box)\n",
|
| 513 |
"\n",
|
| 514 |
"# --- CUSTOM DOWNLOAD ---\n",
|
| 515 |
"custom_download_header_popup = widgets.HTML('''\n",
|
|
|
|
| 523 |
"\n",
|
| 524 |
"<div class=\"header\" style=\"cursor: pointer;\" onclick=\"toggleContainer()\">Кастомная Загрузка</div>\n",
|
| 525 |
"<!-- PopUp window -->\n",
|
| 526 |
+
"<div class=\"info\" id=\"info_dl\">INFO</div>\n",
|
| 527 |
"<div class=\"popup\">\n",
|
| 528 |
" Разделите несколько URL-адресов запятой/пробелом. Для <span class=\"file_name\">пользовательского имени</span> файла/расширения укажите его через <span class=\"braces\">[]</span>\n",
|
| 529 |
" после URL без пробелов.\n",
|
|
|
|
| 545 |
"Extensions_url_widget = widgets.Text(description='Extensions:', style=style, layout=layout)\n",
|
| 546 |
"custom_file_urls_widget = widgets.Text(description='Файл (txt):', style=style, layout=layout)\n",
|
| 547 |
"\n",
|
| 548 |
+
"''' Display CustomDl'''\n",
|
| 549 |
+
"all_custom_box = widgets.VBox([\n",
|
| 550 |
" custom_download_header_popup, Model_url_widget, Vae_url_widget, LoRA_url_widget, Embedding_url_widget, Extensions_url_widget, custom_file_urls_widget\n",
|
| 551 |
+
" ]).add_class(\"container\").add_class(\"image_4\").add_class(\"container_custom_downlad\")\n",
|
| 552 |
+
"display(all_custom_box)\n",
|
| 553 |
"\n",
|
| 554 |
"# --- Save Button ---\n",
|
| 555 |
"save_button = widgets.Button(description='Сохранить').add_class(\"button_save\")\n",
|
| 556 |
"display(save_button)\n",
|
| 557 |
"\n",
|
| 558 |
"\n",
|
| 559 |
+
"# ============ Load / Save - Settings V2 ============\n",
|
| 560 |
+
"SETTINGS_FILE = f'{root_path}/settings.json'\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
| 561 |
"\n",
|
| 562 |
+
"settings_keys = [\n",
|
| 563 |
+
" 'Model', 'Model_Num', 'Inpainting_Model',\n",
|
| 564 |
+
" 'Vae', 'Vae_Num',\n",
|
| 565 |
+
" 'latest_webui', 'latest_exstensions', 'detailed_download',\n",
|
| 566 |
+
" 'controlnet', 'controlnet_Num', 'commit_hash', 'optional_huggingface_token',\n",
|
| 567 |
+
" 'ngrok_token', 'commandline_arguments',\n",
|
| 568 |
+
" 'Model_url', 'Vae_url', 'LoRA_url', 'Embedding_url', 'Extensions_url', 'custom_file_urls'\n",
|
| 569 |
+
"]\n",
|
| 570 |
"\n",
|
| 571 |
"def save_settings():\n",
|
| 572 |
+
" settings = {key: globals()[f\"{key}_widget\"].value for key in settings_keys}\n",
|
|
|
|
|
|
|
| 573 |
" with open(SETTINGS_FILE, 'w') as f:\n",
|
| 574 |
+
" json.dump(settings, f)\n",
|
| 575 |
"\n",
|
| 576 |
"def load_settings():\n",
|
| 577 |
" if os.path.exists(SETTINGS_FILE):\n",
|
| 578 |
" with open(SETTINGS_FILE, 'r') as f:\n",
|
| 579 |
+
" settings = json.load(f)\n",
|
| 580 |
+
" for key in settings_keys:\n",
|
| 581 |
+
" globals()[f\"{key}_widget\"].value = settings.get(key)\n",
|
|
|
|
|
|
|
| 582 |
"\n",
|
| 583 |
"def save_data(button):\n",
|
| 584 |
" save_settings()\n",
|
| 585 |
+
"\n",
|
| 586 |
+
" # --- uhh - hide... ---\n",
|
| 587 |
+
" widgets_list = [all_model_box, all_vae_box, all_additional_box, all_custom_box, save_button]\n",
|
| 588 |
+
" for widget in widgets_list:\n",
|
| 589 |
+
" widget.add_class(\"hide\")\n",
|
| 590 |
+
" time.sleep(0.5)\n",
|
| 591 |
+
"\n",
|
| 592 |
" widgets.Widget.close_all()\n",
|
| 593 |
"\n",
|
| 594 |
"settings = load_settings()\n",
|
files_cells/python/en/downloading_en.py
CHANGED
|
@@ -49,7 +49,7 @@ if not os.path.exists(flag_file):
|
|
| 49 |
xformers = "xformers==0.0.23.post1 triton==2.1.0"
|
| 50 |
torch = "torch==2.1.2+cu121 torchvision==0.16.2+cu121 torchaudio==2.1.2 --extra-index-url https://download.pytorch.org/whl/cu121"
|
| 51 |
|
| 52 |
-
print("Installing the libraries, it's going to take a while
|
| 53 |
with capture.capture_output() as cap:
|
| 54 |
get_ipython().system('pip install -U gdown')
|
| 55 |
get_ipython().system('apt-get update && apt -y install aria2')
|
|
@@ -68,7 +68,7 @@ if not os.path.exists(flag_file):
|
|
| 68 |
get_ipython().system('wget -P /home/studio-lab-user https://huggingface.co/NagisaNao/fast_repo/resolve/main/sagemaker/FULL_DELETED_NOTEBOOK.ipynb')
|
| 69 |
|
| 70 |
if env == "Google Colab":
|
| 71 |
-
get_ipython().system('pip install -q pip install xformers==0.0.26.
|
| 72 |
else:
|
| 73 |
get_ipython().system('pip install -q {torch} -U')
|
| 74 |
get_ipython().system('pip install -q {xformers} -U')
|
|
@@ -76,25 +76,19 @@ if not os.path.exists(flag_file):
|
|
| 76 |
with open(flag_file, "w") as f:
|
| 77 |
f.write("hey ;3")
|
| 78 |
del cap
|
| 79 |
-
print("\
|
| 80 |
time.sleep(2)
|
| 81 |
clear_output()
|
| 82 |
|
| 83 |
|
| 84 |
-
# ================= loading settings
|
| 85 |
-
import toml
|
| 86 |
-
|
| 87 |
def load_settings(path):
|
| 88 |
if os.path.exists(path):
|
| 89 |
with open(path, 'r') as file:
|
| 90 |
-
|
| 91 |
-
flat_settings = {}
|
| 92 |
-
for section, keys in settings.items():
|
| 93 |
-
flat_settings.update(keys)
|
| 94 |
-
return flat_settings
|
| 95 |
return {}
|
| 96 |
|
| 97 |
-
settings = load_settings(f'{root_path}/settings.
|
| 98 |
|
| 99 |
variables = [
|
| 100 |
'Model', 'Model_Num', 'Inpainting_Model',
|
|
@@ -148,7 +142,8 @@ if not os.path.exists(webui_path):
|
|
| 148 |
install_time = timedelta(seconds=time.time()-start_install)
|
| 149 |
print("\r🚀 Unpacking is complete! For","%02d:%02d:%02d ⚡\n" % (install_time.seconds / 3600, (install_time.seconds / 60) % 60, install_time.seconds % 60), end='', flush=True)
|
| 150 |
else:
|
| 151 |
-
|
|
|
|
| 152 |
print("🚀 All unpacked... Skip. ⚡")
|
| 153 |
start_colab = float(open(f'{webui_path}/static/colabTimer.txt', 'r').read())
|
| 154 |
time_since_start = str(timedelta(seconds=time.time()-start_colab)).split('.')[0]
|
|
@@ -215,35 +210,39 @@ if commit_hash:
|
|
| 215 |
## Downloading model and stuff | oh yeah~ I'm starting to misunderstand my own code ( almost my own ;3 )
|
| 216 |
print("📦 Downloading models and stuff...", end='')
|
| 217 |
model_list = {
|
| 218 |
-
"1.Anime (by
|
| 219 |
{"url": "https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2.safetensors", "name": "Anime_v2.safetensors"},
|
| 220 |
{"url": "https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2-inpainting.safetensors", "name": "Anime_v2-inpainting.safetensors"}
|
| 221 |
],
|
| 222 |
-
"2.
|
|
|
|
|
|
|
|
|
|
| 223 |
{"url": "https://civitai.com/api/download/models/130298", "name": "CetusMix_V4.safetensors"},
|
| 224 |
{"url": "https://civitai.com/api/download/models/139882", "name": "CetusMix_V4-inpainting.safetensors"}
|
| 225 |
],
|
| 226 |
-
"
|
| 227 |
{"url": "https://civitai.com/api/download/models/125050", "name": "Counterfeit_V3.safetensors"},
|
| 228 |
{"url": "https://civitai.com/api/download/models/137911", "name": "Counterfeit_V3-inpainting.safetensors"}
|
| 229 |
],
|
| 230 |
-
"
|
| 231 |
{"url": "https://civitai.com/api/download/models/138754", "name": "CuteColor_V3.safetensors"}
|
| 232 |
],
|
| 233 |
-
"
|
| 234 |
{"url": "https://civitai.com/api/download/models/101640", "name": "DarkSushiMix_2_5D.safetensors"},
|
| 235 |
{"url": "https://civitai.com/api/download/models/56071", "name": "DarkSushiMix_colorful.safetensors"}
|
| 236 |
],
|
| 237 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 238 |
{"url": "https://civitai.com/api/download/models/119057", "name": "MeinaMix_V11.safetensors"},
|
| 239 |
{"url": "https://civitai.com/api/download/models/120702", "name": "MeinaMix_V11-inpainting.safetensors"}
|
| 240 |
],
|
| 241 |
-
"
|
| 242 |
{"url": "https://civitai.com/api/download/models/125668", "name": "MixPro_V4.safetensors"},
|
| 243 |
{"url": "https://civitai.com/api/download/models/139878", "name": "MixPro_V4-inpainting.safetensors"}
|
| 244 |
-
],
|
| 245 |
-
"8.BluMix [Anime] [V7]": [
|
| 246 |
-
{"url": "https://civitai.com/api/download/models/361779", "name": "BluMix_v7.safetensors"}
|
| 247 |
]
|
| 248 |
}
|
| 249 |
|
|
@@ -323,8 +322,8 @@ prefixes = {
|
|
| 323 |
"model": [models_dir, "Model_url"],
|
| 324 |
"vae": [vaes_dir, "Vae_url"],
|
| 325 |
"lora": [loras_dir, "LoRA_url"],
|
| 326 |
-
"
|
| 327 |
-
"
|
| 328 |
"control": [control_dir, "ControlNet_url"]
|
| 329 |
}
|
| 330 |
|
|
@@ -334,7 +333,6 @@ url = ""
|
|
| 334 |
ControlNet_url = ""
|
| 335 |
hf_token = optional_huggingface_token if optional_huggingface_token else "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"
|
| 336 |
user_header = f"\"Authorization: Bearer {hf_token}\""
|
| 337 |
-
# user_header = f"\"Authorization: Bearer {optional_huggingface_token}\""
|
| 338 |
|
| 339 |
def handle_manual(url):
|
| 340 |
original_url = url
|
|
@@ -346,22 +344,22 @@ def handle_manual(url):
|
|
| 346 |
|
| 347 |
for prefix, (dir, _) in prefixes.items():
|
| 348 |
if original_url.startswith(f"{prefix}:"):
|
| 349 |
-
if prefix != "
|
| 350 |
manual_download(url, dir, file_name=file_name)
|
| 351 |
else:
|
| 352 |
extension_repo.append((url, file_name))
|
| 353 |
|
| 354 |
def manual_download(url, dst_dir, file_name):
|
| 355 |
basename = url.split("/")[-1] if file_name is None else file_name
|
| 356 |
-
header_option = f"--header={user_header}"
|
|
|
|
|
|
|
| 357 |
|
| 358 |
# I do it at my own risk..... Fucking CivitAi >:(
|
| 359 |
civitai_token = "62c0c5956b2f9defbd844d754000180b"
|
| 360 |
if 'civitai' in url and civitai_token:
|
| 361 |
url = f"{url}?token={civitai_token}"
|
| 362 |
|
| 363 |
-
print("\033[32m---"*45 + f"\n\033[33mURL: \033[34m{url}\n\033[33mSAVE DIR: \033[34m{dst_dir}\n\033[33mFILE NAME: \033[34m{file_name}\033[32m\n~~~\033[0m")
|
| 364 |
-
|
| 365 |
# -- GDrive --
|
| 366 |
if 'drive.google' in url:
|
| 367 |
if 'folders' in url:
|
|
|
|
| 49 |
xformers = "xformers==0.0.23.post1 triton==2.1.0"
|
| 50 |
torch = "torch==2.1.2+cu121 torchvision==0.16.2+cu121 torchaudio==2.1.2 --extra-index-url https://download.pytorch.org/whl/cu121"
|
| 51 |
|
| 52 |
+
print("💿 Installing the libraries, it's going to take a while...", end='')
|
| 53 |
with capture.capture_output() as cap:
|
| 54 |
get_ipython().system('pip install -U gdown')
|
| 55 |
get_ipython().system('apt-get update && apt -y install aria2')
|
|
|
|
| 68 |
get_ipython().system('wget -P /home/studio-lab-user https://huggingface.co/NagisaNao/fast_repo/resolve/main/sagemaker/FULL_DELETED_NOTEBOOK.ipynb')
|
| 69 |
|
| 70 |
if env == "Google Colab":
|
| 71 |
+
get_ipython().system('pip install -q pip install xformers==0.0.26.dev778 -U')
|
| 72 |
else:
|
| 73 |
get_ipython().system('pip install -q {torch} -U')
|
| 74 |
get_ipython().system('pip install -q {xformers} -U')
|
|
|
|
| 76 |
with open(flag_file, "w") as f:
|
| 77 |
f.write("hey ;3")
|
| 78 |
del cap
|
| 79 |
+
print("\r🍪 Libraries are installed!" + " "*35)
|
| 80 |
time.sleep(2)
|
| 81 |
clear_output()
|
| 82 |
|
| 83 |
|
| 84 |
+
# ================= loading settings V4 =================
|
|
|
|
|
|
|
| 85 |
def load_settings(path):
|
| 86 |
if os.path.exists(path):
|
| 87 |
with open(path, 'r') as file:
|
| 88 |
+
return json.load(file)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 89 |
return {}
|
| 90 |
|
| 91 |
+
settings = load_settings(f'{root_path}/settings.json')
|
| 92 |
|
| 93 |
variables = [
|
| 94 |
'Model', 'Model_Num', 'Inpainting_Model',
|
|
|
|
| 142 |
install_time = timedelta(seconds=time.time()-start_install)
|
| 143 |
print("\r🚀 Unpacking is complete! For","%02d:%02d:%02d ⚡\n" % (install_time.seconds / 3600, (install_time.seconds / 60) % 60, install_time.seconds % 60), end='', flush=True)
|
| 144 |
else:
|
| 145 |
+
if env == "SageMaker Studio Lab":
|
| 146 |
+
get_ipython().system('echo -n {start_colab} > {webui_path}/static/colabTimer.txt')
|
| 147 |
print("🚀 All unpacked... Skip. ⚡")
|
| 148 |
start_colab = float(open(f'{webui_path}/static/colabTimer.txt', 'r').read())
|
| 149 |
time_since_start = str(timedelta(seconds=time.time()-start_colab)).split('.')[0]
|
|
|
|
| 210 |
## Downloading model and stuff | oh yeah~ I'm starting to misunderstand my own code ( almost my own ;3 )
|
| 211 |
print("📦 Downloading models and stuff...", end='')
|
| 212 |
model_list = {
|
| 213 |
+
"1.Anime (by XpucT) + INP": [
|
| 214 |
{"url": "https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2.safetensors", "name": "Anime_v2.safetensors"},
|
| 215 |
{"url": "https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2-inpainting.safetensors", "name": "Anime_v2-inpainting.safetensors"}
|
| 216 |
],
|
| 217 |
+
"2.BluMix [Anime] [V7]": [
|
| 218 |
+
{"url": "https://civitai.com/api/download/models/361779", "name": "BluMix_v7.safetensors"}
|
| 219 |
+
],
|
| 220 |
+
"3.Cetus-Mix [Anime] [V4] + INP": [
|
| 221 |
{"url": "https://civitai.com/api/download/models/130298", "name": "CetusMix_V4.safetensors"},
|
| 222 |
{"url": "https://civitai.com/api/download/models/139882", "name": "CetusMix_V4-inpainting.safetensors"}
|
| 223 |
],
|
| 224 |
+
"4.Counterfeit [Anime] [V3] + INP": [
|
| 225 |
{"url": "https://civitai.com/api/download/models/125050", "name": "Counterfeit_V3.safetensors"},
|
| 226 |
{"url": "https://civitai.com/api/download/models/137911", "name": "Counterfeit_V3-inpainting.safetensors"}
|
| 227 |
],
|
| 228 |
+
"5.CuteColor [Anime] [V3]": [
|
| 229 |
{"url": "https://civitai.com/api/download/models/138754", "name": "CuteColor_V3.safetensors"}
|
| 230 |
],
|
| 231 |
+
"6.Dark-Sushi-Mix [Anime]": [
|
| 232 |
{"url": "https://civitai.com/api/download/models/101640", "name": "DarkSushiMix_2_5D.safetensors"},
|
| 233 |
{"url": "https://civitai.com/api/download/models/56071", "name": "DarkSushiMix_colorful.safetensors"}
|
| 234 |
],
|
| 235 |
+
"7.Deliberate [Realism] [V6] + INP": [
|
| 236 |
+
{"url": "https://huggingface.co/XpucT/Deliberate/resolve/main/Deliberate_v6.safetensors", "name": "Deliberate_v6.safetensors"},
|
| 237 |
+
{"url": "https://huggingface.co/XpucT/Deliberate/resolve/main/Deliberate_v6-inpainting.safetensors", "name": "Deliberate_v6-inpainting.safetensors"}
|
| 238 |
+
],
|
| 239 |
+
"8.Meina-Mix [Anime] [V11] + INP": [
|
| 240 |
{"url": "https://civitai.com/api/download/models/119057", "name": "MeinaMix_V11.safetensors"},
|
| 241 |
{"url": "https://civitai.com/api/download/models/120702", "name": "MeinaMix_V11-inpainting.safetensors"}
|
| 242 |
],
|
| 243 |
+
"9.Mix-Pro [Anime] [V4] + INP": [
|
| 244 |
{"url": "https://civitai.com/api/download/models/125668", "name": "MixPro_V4.safetensors"},
|
| 245 |
{"url": "https://civitai.com/api/download/models/139878", "name": "MixPro_V4-inpainting.safetensors"}
|
|
|
|
|
|
|
|
|
|
| 246 |
]
|
| 247 |
}
|
| 248 |
|
|
|
|
| 322 |
"model": [models_dir, "Model_url"],
|
| 323 |
"vae": [vaes_dir, "Vae_url"],
|
| 324 |
"lora": [loras_dir, "LoRA_url"],
|
| 325 |
+
"embed": [embeddings_dir, "Embedding_url"],
|
| 326 |
+
"extension": [extensions_dir, "Extensions_url"],
|
| 327 |
"control": [control_dir, "ControlNet_url"]
|
| 328 |
}
|
| 329 |
|
|
|
|
| 333 |
ControlNet_url = ""
|
| 334 |
hf_token = optional_huggingface_token if optional_huggingface_token else "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"
|
| 335 |
user_header = f"\"Authorization: Bearer {hf_token}\""
|
|
|
|
| 336 |
|
| 337 |
def handle_manual(url):
|
| 338 |
original_url = url
|
|
|
|
| 344 |
|
| 345 |
for prefix, (dir, _) in prefixes.items():
|
| 346 |
if original_url.startswith(f"{prefix}:"):
|
| 347 |
+
if prefix != "extension":
|
| 348 |
manual_download(url, dir, file_name=file_name)
|
| 349 |
else:
|
| 350 |
extension_repo.append((url, file_name))
|
| 351 |
|
| 352 |
def manual_download(url, dst_dir, file_name):
|
| 353 |
basename = url.split("/")[-1] if file_name is None else file_name
|
| 354 |
+
header_option = f"--header={user_header}"
|
| 355 |
+
|
| 356 |
+
print("\033[32m---"*45 + f"\n\033[33mURL: \033[34m{url}\n\033[33mSAVE DIR: \033[34m{dst_dir}\n\033[33mFILE NAME: \033[34m{file_name}\033[32m\n~~~\033[0m")
|
| 357 |
|
| 358 |
# I do it at my own risk..... Fucking CivitAi >:(
|
| 359 |
civitai_token = "62c0c5956b2f9defbd844d754000180b"
|
| 360 |
if 'civitai' in url and civitai_token:
|
| 361 |
url = f"{url}?token={civitai_token}"
|
| 362 |
|
|
|
|
|
|
|
| 363 |
# -- GDrive --
|
| 364 |
if 'drive.google' in url:
|
| 365 |
if 'folders' in url:
|
files_cells/python/en/widgets_en.py
CHANGED
|
@@ -2,6 +2,7 @@
|
|
| 2 |
|
| 3 |
import os
|
| 4 |
import json
|
|
|
|
| 5 |
import ipywidgets as widgets
|
| 6 |
from ipywidgets import widgets, Layout, Label, Button, VBox, HBox
|
| 7 |
from IPython.display import display, HTML, Javascript, clear_output
|
|
@@ -43,6 +44,11 @@ args = parser.parse_args()
|
|
| 43 |
# ---
|
| 44 |
url_img, opacity_img, blur_img, y_img, x_img, scale_img, mode_img = args.image, args.opacity, args.blur, args.y, args.x, args.scale, args.mode
|
| 45 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
container_background = f'''
|
| 47 |
<style>
|
| 48 |
:root {{
|
|
@@ -53,6 +59,7 @@ container_background = f'''
|
|
| 53 |
--image_x: {x_img}px;
|
| 54 |
--img_scale: {scale_img}%;
|
| 55 |
--img_mode: {mode_img};
|
|
|
|
| 56 |
}}
|
| 57 |
|
| 58 |
.widget-dropdown select,
|
|
@@ -112,7 +119,7 @@ hr {
|
|
| 112 |
content: "ANXETY";
|
| 113 |
font-weight: bold;
|
| 114 |
font-size: 24px;
|
| 115 |
-
color: rgba(0, 0, 0, 0.
|
| 116 |
}
|
| 117 |
|
| 118 |
/* background img */
|
|
@@ -142,7 +149,7 @@ hr {
|
|
| 142 |
background-position: var(--image_x) calc(-430px - var(--image_y));
|
| 143 |
}
|
| 144 |
.image_4::before {
|
| 145 |
-
background-position: var(--image_x) calc(
|
| 146 |
}
|
| 147 |
|
| 148 |
.container_custom_downlad {
|
|
@@ -201,6 +208,43 @@ hr {
|
|
| 201 |
}
|
| 202 |
|
| 203 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 204 |
/* Button styles */
|
| 205 |
|
| 206 |
.button_save {
|
|
@@ -319,6 +363,14 @@ hr {
|
|
| 319 |
.button_save {
|
| 320 |
animation-name: showedWidgets;
|
| 321 |
animation-duration: 1s;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 322 |
}
|
| 323 |
|
| 324 |
@keyframes showedWidgets {
|
|
@@ -333,6 +385,19 @@ hr {
|
|
| 333 |
opacity: 1;
|
| 334 |
}
|
| 335 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 336 |
</style>
|
| 337 |
|
| 338 |
<!-- TOGGLE 'CustomDL' SCRIPT -->
|
|
@@ -361,20 +426,23 @@ HR = widgets.HTML('<hr>')
|
|
| 361 |
# --- MODEL ---
|
| 362 |
model_header = widgets.HTML('<div class="header">Model Selection<div>')
|
| 363 |
model_options = ['none',
|
| 364 |
-
'1.Anime (by
|
| 365 |
-
'2.
|
| 366 |
-
'3.
|
| 367 |
-
'4.
|
| 368 |
-
'5.
|
| 369 |
-
'6.
|
| 370 |
-
'7.
|
| 371 |
-
'8.
|
|
|
|
| 372 |
# ---
|
| 373 |
-
Model_widget = widgets.Dropdown(options=model_options, value='
|
| 374 |
Model_Num_widget = widgets.Text(description='Model Number:', placeholder='Enter the model numbers to be downloaded using comma/space.', style=style, layout=layout)
|
| 375 |
Inpainting_Model_widget = widgets.Checkbox(value=False, description='Inpainting Models', style=style)
|
| 376 |
|
| 377 |
-
|
|
|
|
|
|
|
| 378 |
|
| 379 |
# --- VAE ---
|
| 380 |
vae_header = widgets.HTML('<div class="header" >VAE Selection</div>')
|
|
@@ -385,9 +453,11 @@ vae_options = ['none',
|
|
| 385 |
'4.ClearVae.vae',
|
| 386 |
'5.WD.vae']
|
| 387 |
Vae_widget = widgets.Dropdown(options=vae_options, value='3.Blessed2.vae', description='Vae:', style=style, layout=layout)
|
| 388 |
-
Vae_Num_widget = widgets.Text(description='Vae
|
| 389 |
|
| 390 |
-
|
|
|
|
|
|
|
| 391 |
|
| 392 |
# --- ADDITIONAL ---
|
| 393 |
additional_header = widgets.HTML('<div class="header">Additional</div>')
|
|
@@ -406,18 +476,21 @@ controlnet_options = ['none', 'ALL', '1.canny',
|
|
| 406 |
controlnet_widget = widgets.Dropdown(options=controlnet_options, value='none', description='ControlNet:', style=style, layout=layout)
|
| 407 |
controlnet_Num_widget = widgets.Text(description='ControlNet Number:', placeholder='Enter the ControlNet model numbers to be downloaded using comma/space.', style=style, layout=layout)
|
| 408 |
commit_hash_widget = widgets.Text(description='Commit Hash:', style=style, layout=layout)
|
| 409 |
-
optional_huggingface_token_widget = widgets.Text(description='
|
| 410 |
-
ngrok_token_widget = widgets.Text(description='Ngrok
|
| 411 |
ngrock_button = widgets.HTML('<a href="https://dashboard.ngrok.com/get-started/your-authtoken" target="_blank">Get Ngrok Token</a>').add_class("button_ngrok")
|
| 412 |
ngrok_widget = widgets.HBox([ngrok_token_widget, ngrock_button], style=style, layout=layout)
|
| 413 |
# ---
|
| 414 |
commandline_arguments_options = "--listen --enable-insecure-extension-access --theme dark --no-half-vae --disable-console-progressbars --xformers"
|
| 415 |
commandline_arguments_widget = widgets.Text(description='Arguments:', value=commandline_arguments_options, style=style, layout=layout)
|
| 416 |
|
|
|
|
| 417 |
additional_widget_list = [additional_header, latest_changes_widget, HR, controlnet_widget, controlnet_Num_widget, commit_hash_widget, optional_huggingface_token_widget, ngrok_widget, HR, commandline_arguments_widget]
|
| 418 |
if free_plan and env == "Google Colab":
|
| 419 |
additional_widget_list.remove(ngrok_widget)
|
| 420 |
-
|
|
|
|
|
|
|
| 421 |
|
| 422 |
# --- CUSTOM DOWNLOAD ---
|
| 423 |
custom_download_header_popup = widgets.HTML('''
|
|
@@ -431,7 +504,7 @@ custom_download_header_popup = widgets.HTML('''
|
|
| 431 |
|
| 432 |
<div class="header" style="cursor: pointer;" onclick="toggleContainer()">Custom Download</div>
|
| 433 |
<!-- PopUp Window -->
|
| 434 |
-
<div class="info">
|
| 435 |
<div class="popup">
|
| 436 |
Separate multiple URLs with a comma/space. For a <span class="file_name">custom name</span> file/extension, specify it with <span class="braces">[]</span>
|
| 437 |
after the URL without spaces.
|
|
@@ -453,9 +526,11 @@ Embedding_url_widget = widgets.Text(description='Embedding:', style=style, layou
|
|
| 453 |
Extensions_url_widget = widgets.Text(description='Extensions:', style=style, layout=layout)
|
| 454 |
custom_file_urls_widget = widgets.Text(description='File (txt):', style=style, layout=layout)
|
| 455 |
|
| 456 |
-
|
|
|
|
| 457 |
custom_download_header_popup, Model_url_widget, Vae_url_widget, LoRA_url_widget, Embedding_url_widget, Extensions_url_widget, custom_file_urls_widget
|
| 458 |
-
]).add_class("container").add_class("image_4").add_class("container_custom_downlad")
|
|
|
|
| 459 |
|
| 460 |
# --- Save Button ---
|
| 461 |
save_button = widgets.Button(description='Save').add_class("button_save")
|
|
@@ -463,39 +538,38 @@ display(save_button)
|
|
| 463 |
|
| 464 |
|
| 465 |
# ============ Load / Save - Settings V2 ============
|
| 466 |
-
|
| 467 |
-
import toml
|
| 468 |
-
except ImportError: # SageMaker - only for you...
|
| 469 |
-
get_ipython().system('pip install toml > /dev/null 2>&1')
|
| 470 |
-
import toml
|
| 471 |
|
| 472 |
-
|
| 473 |
-
|
| 474 |
-
|
| 475 |
-
|
| 476 |
-
|
| 477 |
-
|
| 478 |
-
|
| 479 |
-
|
| 480 |
|
| 481 |
def save_settings():
|
| 482 |
-
settings = {}
|
| 483 |
-
for section, keys in settings_structure.items():
|
| 484 |
-
settings[section] = {key: globals()[f"{key}_widget"].value for key in keys}
|
| 485 |
with open(SETTINGS_FILE, 'w') as f:
|
| 486 |
-
|
| 487 |
|
| 488 |
def load_settings():
|
| 489 |
if os.path.exists(SETTINGS_FILE):
|
| 490 |
with open(SETTINGS_FILE, 'r') as f:
|
| 491 |
-
|
| 492 |
-
for
|
| 493 |
-
|
| 494 |
-
if key in loaded_settings[section]:
|
| 495 |
-
globals()[f"{key}_widget"].value = loaded_settings[section][key]
|
| 496 |
|
| 497 |
def save_data(button):
|
| 498 |
save_settings()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 499 |
widgets.Widget.close_all()
|
| 500 |
|
| 501 |
settings = load_settings()
|
|
|
|
| 2 |
|
| 3 |
import os
|
| 4 |
import json
|
| 5 |
+
import time
|
| 6 |
import ipywidgets as widgets
|
| 7 |
from ipywidgets import widgets, Layout, Label, Button, VBox, HBox
|
| 8 |
from IPython.display import display, HTML, Javascript, clear_output
|
|
|
|
| 44 |
# ---
|
| 45 |
url_img, opacity_img, blur_img, y_img, x_img, scale_img, mode_img = args.image, args.opacity, args.blur, args.y, args.x, args.scale, args.mode
|
| 46 |
|
| 47 |
+
# WTF COLAB - WHAT THE FUCK IS THE DIFFERENCE OF 40 PIXELS!?!?!?
|
| 48 |
+
fix_heigh_img = "-780px"
|
| 49 |
+
if env == "Google Colab": # betrayal..
|
| 50 |
+
fix_heigh_img = "-740px"
|
| 51 |
+
|
| 52 |
container_background = f'''
|
| 53 |
<style>
|
| 54 |
:root {{
|
|
|
|
| 59 |
--image_x: {x_img}px;
|
| 60 |
--img_scale: {scale_img}%;
|
| 61 |
--img_mode: {mode_img};
|
| 62 |
+
--img_height_dif: {fix_heigh_img}
|
| 63 |
}}
|
| 64 |
|
| 65 |
.widget-dropdown select,
|
|
|
|
| 119 |
content: "ANXETY";
|
| 120 |
font-weight: bold;
|
| 121 |
font-size: 24px;
|
| 122 |
+
color: rgba(0, 0, 0, 0.2);
|
| 123 |
}
|
| 124 |
|
| 125 |
/* background img */
|
|
|
|
| 149 |
background-position: var(--image_x) calc(-430px - var(--image_y));
|
| 150 |
}
|
| 151 |
.image_4::before {
|
| 152 |
+
background-position: var(--image_x) calc(var(--img_height_dif) - var(--image_y));
|
| 153 |
}
|
| 154 |
|
| 155 |
.container_custom_downlad {
|
|
|
|
| 208 |
}
|
| 209 |
|
| 210 |
|
| 211 |
+
/* Slider Checkbox style */
|
| 212 |
+
|
| 213 |
+
.widget-checkbox input[type="checkbox"] {
|
| 214 |
+
appearance: none;
|
| 215 |
+
position: relative;
|
| 216 |
+
top: 4px; /* Why is he taller?! */
|
| 217 |
+
width: 40px;
|
| 218 |
+
height: 20px;
|
| 219 |
+
border: none;
|
| 220 |
+
border-radius: 10px;
|
| 221 |
+
background-color: #20b2aa;
|
| 222 |
+
cursor: pointer;
|
| 223 |
+
box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.3);
|
| 224 |
+
transition: background-color 0.3s ease;
|
| 225 |
+
}
|
| 226 |
+
.widget-checkbox input[type="checkbox"]:checked {
|
| 227 |
+
background-color: #2196F3;
|
| 228 |
+
}
|
| 229 |
+
|
| 230 |
+
.widget-checkbox input[type="checkbox"]:before {
|
| 231 |
+
content: '';
|
| 232 |
+
position: absolute;
|
| 233 |
+
top: 50%;
|
| 234 |
+
left: 3px;
|
| 235 |
+
width: 16px;
|
| 236 |
+
height: 16px;
|
| 237 |
+
border-radius: inherit;
|
| 238 |
+
background-color: white;
|
| 239 |
+
box-shadow: 0 0 8px rgba(0, 0, 0, 0.3);
|
| 240 |
+
transform: translateY(-50%);
|
| 241 |
+
transition: left 0.3s ease;
|
| 242 |
+
}
|
| 243 |
+
.widget-checkbox input[type="checkbox"]:checked:before {
|
| 244 |
+
left: 21px;
|
| 245 |
+
}
|
| 246 |
+
|
| 247 |
+
|
| 248 |
/* Button styles */
|
| 249 |
|
| 250 |
.button_save {
|
|
|
|
| 363 |
.button_save {
|
| 364 |
animation-name: showedWidgets;
|
| 365 |
animation-duration: 1s;
|
| 366 |
+
animation-fill-mode: forwards;
|
| 367 |
+
}
|
| 368 |
+
|
| 369 |
+
.container.hide,
|
| 370 |
+
.button_save.hide {
|
| 371 |
+
animation-name: hideWidgets;
|
| 372 |
+
animation-duration: 0.5s;
|
| 373 |
+
animation-fill-mode: forwards;
|
| 374 |
}
|
| 375 |
|
| 376 |
@keyframes showedWidgets {
|
|
|
|
| 385 |
opacity: 1;
|
| 386 |
}
|
| 387 |
}
|
| 388 |
+
|
| 389 |
+
@keyframes hideWidgets {
|
| 390 |
+
0% {
|
| 391 |
+
transform: translate3d(0, 0, 0) scale(1);
|
| 392 |
+
filter: blur(0) grayscale(0) brightness(1);
|
| 393 |
+
opacity: 1;
|
| 394 |
+
}
|
| 395 |
+
100% {
|
| 396 |
+
transform: translate3d(0, 5%, 0) scale(0.9);
|
| 397 |
+
filter: blur(15px) grayscale(1) brightness(0.5);
|
| 398 |
+
opacity: 0;
|
| 399 |
+
}
|
| 400 |
+
}
|
| 401 |
</style>
|
| 402 |
|
| 403 |
<!-- TOGGLE 'CustomDL' SCRIPT -->
|
|
|
|
| 426 |
# --- MODEL ---
|
| 427 |
model_header = widgets.HTML('<div class="header">Model Selection<div>')
|
| 428 |
model_options = ['none',
|
| 429 |
+
'1.Anime (by XpucT) + INP',
|
| 430 |
+
'2.BluMix [Anime] [V7]',
|
| 431 |
+
'3.Cetus-Mix [Anime] [V4] + INP',
|
| 432 |
+
'4.Counterfeit [Anime] [V3] + INP',
|
| 433 |
+
'5.CuteColor [Anime] [V3]',
|
| 434 |
+
'6.Dark-Sushi-Mix [Anime]',
|
| 435 |
+
'7.Deliberate [Realism] [V6] + INP',
|
| 436 |
+
'8.Meina-Mix [Anime] [V11] + INP',
|
| 437 |
+
'9.Mix-Pro [Anime] [V4] + INP']
|
| 438 |
# ---
|
| 439 |
+
Model_widget = widgets.Dropdown(options=model_options, value='4.Counterfeit [Anime] [V3] + INP', description='Model:', style=style, layout=layout)
|
| 440 |
Model_Num_widget = widgets.Text(description='Model Number:', placeholder='Enter the model numbers to be downloaded using comma/space.', style=style, layout=layout)
|
| 441 |
Inpainting_Model_widget = widgets.Checkbox(value=False, description='Inpainting Models', style=style)
|
| 442 |
|
| 443 |
+
''' Display Model'''
|
| 444 |
+
all_model_box = widgets.VBox([model_header, Model_widget, Model_Num_widget, Inpainting_Model_widget]).add_class("container").add_class("image_1")
|
| 445 |
+
display(all_model_box)
|
| 446 |
|
| 447 |
# --- VAE ---
|
| 448 |
vae_header = widgets.HTML('<div class="header" >VAE Selection</div>')
|
|
|
|
| 453 |
'4.ClearVae.vae',
|
| 454 |
'5.WD.vae']
|
| 455 |
Vae_widget = widgets.Dropdown(options=vae_options, value='3.Blessed2.vae', description='Vae:', style=style, layout=layout)
|
| 456 |
+
Vae_Num_widget = widgets.Text(description='Vae Number:', placeholder='Enter the vae numbers to be downloaded using comma/space.', style=style, layout=layout)
|
| 457 |
|
| 458 |
+
''' Display Vae'''
|
| 459 |
+
all_vae_box= widgets.VBox([vae_header, Vae_widget, Vae_Num_widget]).add_class("container").add_class("image_2")
|
| 460 |
+
display(all_vae_box)
|
| 461 |
|
| 462 |
# --- ADDITIONAL ---
|
| 463 |
additional_header = widgets.HTML('<div class="header">Additional</div>')
|
|
|
|
| 476 |
controlnet_widget = widgets.Dropdown(options=controlnet_options, value='none', description='ControlNet:', style=style, layout=layout)
|
| 477 |
controlnet_Num_widget = widgets.Text(description='ControlNet Number:', placeholder='Enter the ControlNet model numbers to be downloaded using comma/space.', style=style, layout=layout)
|
| 478 |
commit_hash_widget = widgets.Text(description='Commit Hash:', style=style, layout=layout)
|
| 479 |
+
optional_huggingface_token_widget = widgets.Text(description='HuggingFace Token:', style=style, layout=layout)
|
| 480 |
+
ngrok_token_widget = widgets.Text(description='Ngrok Token:', style=style, layout=widgets.Layout(width='1047px'))
|
| 481 |
ngrock_button = widgets.HTML('<a href="https://dashboard.ngrok.com/get-started/your-authtoken" target="_blank">Get Ngrok Token</a>').add_class("button_ngrok")
|
| 482 |
ngrok_widget = widgets.HBox([ngrok_token_widget, ngrock_button], style=style, layout=layout)
|
| 483 |
# ---
|
| 484 |
commandline_arguments_options = "--listen --enable-insecure-extension-access --theme dark --no-half-vae --disable-console-progressbars --xformers"
|
| 485 |
commandline_arguments_widget = widgets.Text(description='Arguments:', value=commandline_arguments_options, style=style, layout=layout)
|
| 486 |
|
| 487 |
+
''' Display Additional'''
|
| 488 |
additional_widget_list = [additional_header, latest_changes_widget, HR, controlnet_widget, controlnet_Num_widget, commit_hash_widget, optional_huggingface_token_widget, ngrok_widget, HR, commandline_arguments_widget]
|
| 489 |
if free_plan and env == "Google Colab":
|
| 490 |
additional_widget_list.remove(ngrok_widget)
|
| 491 |
+
# ```
|
| 492 |
+
all_additional_box = widgets.VBox(additional_widget_list).add_class("container").add_class("image_3")
|
| 493 |
+
display(all_additional_box)
|
| 494 |
|
| 495 |
# --- CUSTOM DOWNLOAD ---
|
| 496 |
custom_download_header_popup = widgets.HTML('''
|
|
|
|
| 504 |
|
| 505 |
<div class="header" style="cursor: pointer;" onclick="toggleContainer()">Custom Download</div>
|
| 506 |
<!-- PopUp Window -->
|
| 507 |
+
<div class="info">INFO</div>
|
| 508 |
<div class="popup">
|
| 509 |
Separate multiple URLs with a comma/space. For a <span class="file_name">custom name</span> file/extension, specify it with <span class="braces">[]</span>
|
| 510 |
after the URL without spaces.
|
|
|
|
| 526 |
Extensions_url_widget = widgets.Text(description='Extensions:', style=style, layout=layout)
|
| 527 |
custom_file_urls_widget = widgets.Text(description='File (txt):', style=style, layout=layout)
|
| 528 |
|
| 529 |
+
''' Display CustomDl'''
|
| 530 |
+
all_custom_box = widgets.VBox([
|
| 531 |
custom_download_header_popup, Model_url_widget, Vae_url_widget, LoRA_url_widget, Embedding_url_widget, Extensions_url_widget, custom_file_urls_widget
|
| 532 |
+
]).add_class("container").add_class("image_4").add_class("container_custom_downlad")
|
| 533 |
+
display(all_custom_box)
|
| 534 |
|
| 535 |
# --- Save Button ---
|
| 536 |
save_button = widgets.Button(description='Save').add_class("button_save")
|
|
|
|
| 538 |
|
| 539 |
|
| 540 |
# ============ Load / Save - Settings V2 ============
|
| 541 |
+
SETTINGS_FILE = f'{root_path}/settings.json'
|
|
|
|
|
|
|
|
|
|
|
|
|
| 542 |
|
| 543 |
+
settings_keys = [
|
| 544 |
+
'Model', 'Model_Num', 'Inpainting_Model',
|
| 545 |
+
'Vae', 'Vae_Num',
|
| 546 |
+
'latest_webui', 'latest_exstensions', 'detailed_download',
|
| 547 |
+
'controlnet', 'controlnet_Num', 'commit_hash', 'optional_huggingface_token',
|
| 548 |
+
'ngrok_token', 'commandline_arguments',
|
| 549 |
+
'Model_url', 'Vae_url', 'LoRA_url', 'Embedding_url', 'Extensions_url', 'custom_file_urls'
|
| 550 |
+
]
|
| 551 |
|
| 552 |
def save_settings():
|
| 553 |
+
settings = {key: globals()[f"{key}_widget"].value for key in settings_keys}
|
|
|
|
|
|
|
| 554 |
with open(SETTINGS_FILE, 'w') as f:
|
| 555 |
+
json.dump(settings, f)
|
| 556 |
|
| 557 |
def load_settings():
|
| 558 |
if os.path.exists(SETTINGS_FILE):
|
| 559 |
with open(SETTINGS_FILE, 'r') as f:
|
| 560 |
+
settings = json.load(f)
|
| 561 |
+
for key in settings_keys:
|
| 562 |
+
globals()[f"{key}_widget"].value = settings.get(key)
|
|
|
|
|
|
|
| 563 |
|
| 564 |
def save_data(button):
|
| 565 |
save_settings()
|
| 566 |
+
|
| 567 |
+
# --- uhh - hide... ---
|
| 568 |
+
widgets_list = [all_model_box, all_vae_box, all_additional_box, all_custom_box, save_button]
|
| 569 |
+
for widget in widgets_list:
|
| 570 |
+
widget.add_class("hide")
|
| 571 |
+
time.sleep(0.5)
|
| 572 |
+
|
| 573 |
widgets.Widget.close_all()
|
| 574 |
|
| 575 |
settings = load_settings()
|
files_cells/python/ru/downloading_ru.py
CHANGED
|
@@ -49,7 +49,7 @@ if not os.path.exists(flag_file):
|
|
| 49 |
xformers = "xformers==0.0.23.post1 triton==2.1.0"
|
| 50 |
torch = "torch==2.1.2+cu121 torchvision==0.16.2+cu121 torchaudio==2.1.2 --extra-index-url https://download.pytorch.org/whl/cu121"
|
| 51 |
|
| 52 |
-
print("Установка библиотек, это займет какое-то время...", end='')
|
| 53 |
with capture.capture_output() as cap:
|
| 54 |
get_ipython().system('pip install -U gdown')
|
| 55 |
get_ipython().system('apt-get update && apt -y install aria2')
|
|
@@ -68,7 +68,7 @@ if not os.path.exists(flag_file):
|
|
| 68 |
get_ipython().system('wget -P /home/studio-lab-user https://huggingface.co/NagisaNao/fast_repo/resolve/main/sagemaker/FULL_DELETED_NOTEBOOK.ipynb')
|
| 69 |
|
| 70 |
if env == "Google Colab":
|
| 71 |
-
get_ipython().system('pip install -q pip install xformers==0.0.26.
|
| 72 |
else:
|
| 73 |
get_ipython().system('pip install -q {torch} -U')
|
| 74 |
get_ipython().system('pip install -q {xformers} -U')
|
|
@@ -76,25 +76,19 @@ if not os.path.exists(flag_file):
|
|
| 76 |
with open(flag_file, "w") as f:
|
| 77 |
f.write("hey ;3")
|
| 78 |
del cap
|
| 79 |
-
print("\rБиблиотеки установлены!" + " "*35)
|
| 80 |
time.sleep(2)
|
| 81 |
clear_output()
|
| 82 |
|
| 83 |
|
| 84 |
-
# ================= loading settings
|
| 85 |
-
import toml
|
| 86 |
-
|
| 87 |
def load_settings(path):
|
| 88 |
if os.path.exists(path):
|
| 89 |
with open(path, 'r') as file:
|
| 90 |
-
|
| 91 |
-
flat_settings = {}
|
| 92 |
-
for section, keys in settings.items():
|
| 93 |
-
flat_settings.update(keys)
|
| 94 |
-
return flat_settings
|
| 95 |
return {}
|
| 96 |
|
| 97 |
-
settings = load_settings(f'{root_path}/settings.
|
| 98 |
|
| 99 |
variables = [
|
| 100 |
'Model', 'Model_Num', 'Inpainting_Model',
|
|
@@ -148,7 +142,8 @@ if not os.path.exists(webui_path):
|
|
| 148 |
install_time = timedelta(seconds=time.time()-start_install)
|
| 149 |
print("\r🚀 Распаковка Завершена! За","%02d:%02d:%02d ⚡\n" % (install_time.seconds / 3600, (install_time.seconds / 60) % 60, install_time.seconds % 60), end='', flush=True)
|
| 150 |
else:
|
| 151 |
-
|
|
|
|
| 152 |
print("🚀 Все распакованно... Пропуск. ⚡")
|
| 153 |
start_colab = float(open(f'{webui_path}/static/colabTimer.txt', 'r').read())
|
| 154 |
time_since_start = str(timedelta(seconds=time.time()-start_colab)).split('.')[0]
|
|
@@ -215,35 +210,39 @@ if commit_hash:
|
|
| 215 |
## Downloading model and stuff | oh yeah~ I'm starting to misunderstand my own code ( almost my own ;3 )
|
| 216 |
print("📦 Скачивание моделей и прочего...", end='')
|
| 217 |
model_list = {
|
| 218 |
-
"1.Anime (by
|
| 219 |
{"url": "https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2.safetensors", "name": "Anime_v2.safetensors"},
|
| 220 |
{"url": "https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2-inpainting.safetensors", "name": "Anime_v2-inpainting.safetensors"}
|
| 221 |
],
|
| 222 |
-
"2.
|
|
|
|
|
|
|
|
|
|
| 223 |
{"url": "https://civitai.com/api/download/models/130298", "name": "CetusMix_V4.safetensors"},
|
| 224 |
{"url": "https://civitai.com/api/download/models/139882", "name": "CetusMix_V4-inpainting.safetensors"}
|
| 225 |
],
|
| 226 |
-
"
|
| 227 |
{"url": "https://civitai.com/api/download/models/125050", "name": "Counterfeit_V3.safetensors"},
|
| 228 |
{"url": "https://civitai.com/api/download/models/137911", "name": "Counterfeit_V3-inpainting.safetensors"}
|
| 229 |
],
|
| 230 |
-
"
|
| 231 |
{"url": "https://civitai.com/api/download/models/138754", "name": "CuteColor_V3.safetensors"}
|
| 232 |
],
|
| 233 |
-
"
|
| 234 |
{"url": "https://civitai.com/api/download/models/101640", "name": "DarkSushiMix_2_5D.safetensors"},
|
| 235 |
{"url": "https://civitai.com/api/download/models/56071", "name": "DarkSushiMix_colorful.safetensors"}
|
| 236 |
],
|
| 237 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 238 |
{"url": "https://civitai.com/api/download/models/119057", "name": "MeinaMix_V11.safetensors"},
|
| 239 |
{"url": "https://civitai.com/api/download/models/120702", "name": "MeinaMix_V11-inpainting.safetensors"}
|
| 240 |
],
|
| 241 |
-
"
|
| 242 |
{"url": "https://civitai.com/api/download/models/125668", "name": "MixPro_V4.safetensors"},
|
| 243 |
{"url": "https://civitai.com/api/download/models/139878", "name": "MixPro_V4-inpainting.safetensors"}
|
| 244 |
-
],
|
| 245 |
-
"8.BluMix [Anime] [V7]": [
|
| 246 |
-
{"url": "https://civitai.com/api/download/models/361779", "name": "BluMix_v7.safetensors"}
|
| 247 |
]
|
| 248 |
}
|
| 249 |
|
|
@@ -323,8 +322,8 @@ prefixes = {
|
|
| 323 |
"model": [models_dir, "Model_url"],
|
| 324 |
"vae": [vaes_dir, "Vae_url"],
|
| 325 |
"lora": [loras_dir, "LoRA_url"],
|
| 326 |
-
"
|
| 327 |
-
"
|
| 328 |
"control": [control_dir, "ControlNet_url"]
|
| 329 |
}
|
| 330 |
|
|
@@ -334,7 +333,6 @@ url = ""
|
|
| 334 |
ControlNet_url = ""
|
| 335 |
hf_token = optional_huggingface_token if optional_huggingface_token else "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"
|
| 336 |
user_header = f"\"Authorization: Bearer {hf_token}\""
|
| 337 |
-
# user_header = f"\"Authorization: Bearer {optional_huggingface_token}\""
|
| 338 |
|
| 339 |
def handle_manual(url):
|
| 340 |
original_url = url
|
|
@@ -346,22 +344,22 @@ def handle_manual(url):
|
|
| 346 |
|
| 347 |
for prefix, (dir, _) in prefixes.items():
|
| 348 |
if original_url.startswith(f"{prefix}:"):
|
| 349 |
-
if prefix != "
|
| 350 |
manual_download(url, dir, file_name=file_name)
|
| 351 |
else:
|
| 352 |
extension_repo.append((url, file_name))
|
| 353 |
|
| 354 |
def manual_download(url, dst_dir, file_name):
|
| 355 |
basename = url.split("/")[-1] if file_name is None else file_name
|
| 356 |
-
header_option = f"--header={user_header}"
|
|
|
|
|
|
|
| 357 |
|
| 358 |
# I do it at my own risk..... Fucking CivitAi >:(
|
| 359 |
civitai_token = "62c0c5956b2f9defbd844d754000180b"
|
| 360 |
if 'civitai' in url and civitai_token:
|
| 361 |
url = f"{url}?token={civitai_token}"
|
| 362 |
|
| 363 |
-
print("\033[32m---"*45 + f"\n\033[33mURL: \033[34m{url}\n\033[33mSAVE DIR: \033[34m{dst_dir}\n\033[33mFILE NAME: \033[34m{file_name}\033[32m\n~~~\033[0m")
|
| 364 |
-
|
| 365 |
# -- GDrive --
|
| 366 |
if 'drive.google' in url:
|
| 367 |
if 'folders' in url:
|
|
|
|
| 49 |
xformers = "xformers==0.0.23.post1 triton==2.1.0"
|
| 50 |
torch = "torch==2.1.2+cu121 torchvision==0.16.2+cu121 torchaudio==2.1.2 --extra-index-url https://download.pytorch.org/whl/cu121"
|
| 51 |
|
| 52 |
+
print("💿 Установка библиотек, это займет какое-то время...", end='')
|
| 53 |
with capture.capture_output() as cap:
|
| 54 |
get_ipython().system('pip install -U gdown')
|
| 55 |
get_ipython().system('apt-get update && apt -y install aria2')
|
|
|
|
| 68 |
get_ipython().system('wget -P /home/studio-lab-user https://huggingface.co/NagisaNao/fast_repo/resolve/main/sagemaker/FULL_DELETED_NOTEBOOK.ipynb')
|
| 69 |
|
| 70 |
if env == "Google Colab":
|
| 71 |
+
get_ipython().system('pip install -q pip install xformers==0.0.26.dev778 -U')
|
| 72 |
else:
|
| 73 |
get_ipython().system('pip install -q {torch} -U')
|
| 74 |
get_ipython().system('pip install -q {xformers} -U')
|
|
|
|
| 76 |
with open(flag_file, "w") as f:
|
| 77 |
f.write("hey ;3")
|
| 78 |
del cap
|
| 79 |
+
print("\r🍪 Библиотеки установлены!" + " "*35)
|
| 80 |
time.sleep(2)
|
| 81 |
clear_output()
|
| 82 |
|
| 83 |
|
| 84 |
+
# ================= loading settings V4 =================
|
|
|
|
|
|
|
| 85 |
def load_settings(path):
|
| 86 |
if os.path.exists(path):
|
| 87 |
with open(path, 'r') as file:
|
| 88 |
+
return json.load(file)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 89 |
return {}
|
| 90 |
|
| 91 |
+
settings = load_settings(f'{root_path}/settings.json')
|
| 92 |
|
| 93 |
variables = [
|
| 94 |
'Model', 'Model_Num', 'Inpainting_Model',
|
|
|
|
| 142 |
install_time = timedelta(seconds=time.time()-start_install)
|
| 143 |
print("\r🚀 Распаковка Завершена! За","%02d:%02d:%02d ⚡\n" % (install_time.seconds / 3600, (install_time.seconds / 60) % 60, install_time.seconds % 60), end='', flush=True)
|
| 144 |
else:
|
| 145 |
+
if env == "SageMaker Studio Lab":
|
| 146 |
+
get_ipython().system('echo -n {start_colab} > {webui_path}/static/colabTimer.txt')
|
| 147 |
print("🚀 Все распакованно... Пропуск. ⚡")
|
| 148 |
start_colab = float(open(f'{webui_path}/static/colabTimer.txt', 'r').read())
|
| 149 |
time_since_start = str(timedelta(seconds=time.time()-start_colab)).split('.')[0]
|
|
|
|
| 210 |
## Downloading model and stuff | oh yeah~ I'm starting to misunderstand my own code ( almost my own ;3 )
|
| 211 |
print("📦 Скачивание моделей и прочего...", end='')
|
| 212 |
model_list = {
|
| 213 |
+
"1.Anime (by XpucT) + INP": [
|
| 214 |
{"url": "https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2.safetensors", "name": "Anime_v2.safetensors"},
|
| 215 |
{"url": "https://huggingface.co/XpucT/Anime/resolve/main/Anime_v2-inpainting.safetensors", "name": "Anime_v2-inpainting.safetensors"}
|
| 216 |
],
|
| 217 |
+
"2.BluMix [Anime] [V7]": [
|
| 218 |
+
{"url": "https://civitai.com/api/download/models/361779", "name": "BluMix_v7.safetensors"}
|
| 219 |
+
],
|
| 220 |
+
"3.Cetus-Mix [Anime] [V4] + INP": [
|
| 221 |
{"url": "https://civitai.com/api/download/models/130298", "name": "CetusMix_V4.safetensors"},
|
| 222 |
{"url": "https://civitai.com/api/download/models/139882", "name": "CetusMix_V4-inpainting.safetensors"}
|
| 223 |
],
|
| 224 |
+
"4.Counterfeit [Anime] [V3] + INP": [
|
| 225 |
{"url": "https://civitai.com/api/download/models/125050", "name": "Counterfeit_V3.safetensors"},
|
| 226 |
{"url": "https://civitai.com/api/download/models/137911", "name": "Counterfeit_V3-inpainting.safetensors"}
|
| 227 |
],
|
| 228 |
+
"5.CuteColor [Anime] [V3]": [
|
| 229 |
{"url": "https://civitai.com/api/download/models/138754", "name": "CuteColor_V3.safetensors"}
|
| 230 |
],
|
| 231 |
+
"6.Dark-Sushi-Mix [Anime]": [
|
| 232 |
{"url": "https://civitai.com/api/download/models/101640", "name": "DarkSushiMix_2_5D.safetensors"},
|
| 233 |
{"url": "https://civitai.com/api/download/models/56071", "name": "DarkSushiMix_colorful.safetensors"}
|
| 234 |
],
|
| 235 |
+
"7.Deliberate [Realism] [V6] + INP": [
|
| 236 |
+
{"url": "https://huggingface.co/XpucT/Deliberate/resolve/main/Deliberate_v6.safetensors", "name": "Deliberate_v6.safetensors"},
|
| 237 |
+
{"url": "https://huggingface.co/XpucT/Deliberate/resolve/main/Deliberate_v6-inpainting.safetensors", "name": "Deliberate_v6-inpainting.safetensors"}
|
| 238 |
+
],
|
| 239 |
+
"8.Meina-Mix [Anime] [V11] + INP": [
|
| 240 |
{"url": "https://civitai.com/api/download/models/119057", "name": "MeinaMix_V11.safetensors"},
|
| 241 |
{"url": "https://civitai.com/api/download/models/120702", "name": "MeinaMix_V11-inpainting.safetensors"}
|
| 242 |
],
|
| 243 |
+
"9.Mix-Pro [Anime] [V4] + INP": [
|
| 244 |
{"url": "https://civitai.com/api/download/models/125668", "name": "MixPro_V4.safetensors"},
|
| 245 |
{"url": "https://civitai.com/api/download/models/139878", "name": "MixPro_V4-inpainting.safetensors"}
|
|
|
|
|
|
|
|
|
|
| 246 |
]
|
| 247 |
}
|
| 248 |
|
|
|
|
| 322 |
"model": [models_dir, "Model_url"],
|
| 323 |
"vae": [vaes_dir, "Vae_url"],
|
| 324 |
"lora": [loras_dir, "LoRA_url"],
|
| 325 |
+
"embed": [embeddings_dir, "Embedding_url"],
|
| 326 |
+
"extension": [extensions_dir, "Extensions_url"],
|
| 327 |
"control": [control_dir, "ControlNet_url"]
|
| 328 |
}
|
| 329 |
|
|
|
|
| 333 |
ControlNet_url = ""
|
| 334 |
hf_token = optional_huggingface_token if optional_huggingface_token else "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"
|
| 335 |
user_header = f"\"Authorization: Bearer {hf_token}\""
|
|
|
|
| 336 |
|
| 337 |
def handle_manual(url):
|
| 338 |
original_url = url
|
|
|
|
| 344 |
|
| 345 |
for prefix, (dir, _) in prefixes.items():
|
| 346 |
if original_url.startswith(f"{prefix}:"):
|
| 347 |
+
if prefix != "extension":
|
| 348 |
manual_download(url, dir, file_name=file_name)
|
| 349 |
else:
|
| 350 |
extension_repo.append((url, file_name))
|
| 351 |
|
| 352 |
def manual_download(url, dst_dir, file_name):
|
| 353 |
basename = url.split("/")[-1] if file_name is None else file_name
|
| 354 |
+
header_option = f"--header={user_header}"
|
| 355 |
+
|
| 356 |
+
print("\033[32m---"*45 + f"\n\033[33mURL: \033[34m{url}\n\033[33mSAVE DIR: \033[34m{dst_dir}\n\033[33mFILE NAME: \033[34m{file_name}\033[32m\n~~~\033[0m")
|
| 357 |
|
| 358 |
# I do it at my own risk..... Fucking CivitAi >:(
|
| 359 |
civitai_token = "62c0c5956b2f9defbd844d754000180b"
|
| 360 |
if 'civitai' in url and civitai_token:
|
| 361 |
url = f"{url}?token={civitai_token}"
|
| 362 |
|
|
|
|
|
|
|
| 363 |
# -- GDrive --
|
| 364 |
if 'drive.google' in url:
|
| 365 |
if 'folders' in url:
|
files_cells/python/ru/widgets_ru.py
CHANGED
|
@@ -2,6 +2,7 @@
|
|
| 2 |
|
| 3 |
import os
|
| 4 |
import json
|
|
|
|
| 5 |
import ipywidgets as widgets
|
| 6 |
from ipywidgets import widgets, Layout, Label, Button, VBox, HBox
|
| 7 |
from IPython.display import display, HTML, Javascript, clear_output
|
|
@@ -118,7 +119,7 @@ hr {
|
|
| 118 |
content: "ANXETY";
|
| 119 |
font-weight: bold;
|
| 120 |
font-size: 24px;
|
| 121 |
-
color: rgba(0, 0, 0, 0.
|
| 122 |
}
|
| 123 |
|
| 124 |
/* background img */
|
|
@@ -212,7 +213,7 @@ hr {
|
|
| 212 |
.widget-checkbox input[type="checkbox"] {
|
| 213 |
appearance: none;
|
| 214 |
position: relative;
|
| 215 |
-
top:
|
| 216 |
width: 40px;
|
| 217 |
height: 20px;
|
| 218 |
border: none;
|
|
@@ -362,6 +363,14 @@ hr {
|
|
| 362 |
.button_save {
|
| 363 |
animation-name: showedWidgets;
|
| 364 |
animation-duration: 1s;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 365 |
}
|
| 366 |
|
| 367 |
@keyframes showedWidgets {
|
|
@@ -376,6 +385,19 @@ hr {
|
|
| 376 |
opacity: 1;
|
| 377 |
}
|
| 378 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 379 |
</style>
|
| 380 |
|
| 381 |
<!-- TOGGLE 'CustomDL' SCRIPT -->
|
|
@@ -404,20 +426,23 @@ HR = widgets.HTML('<hr>')
|
|
| 404 |
# --- MODEL ---
|
| 405 |
model_header = widgets.HTML('<div class="header">Выбор Модели<div>')
|
| 406 |
model_options = ['none',
|
| 407 |
-
'1.Anime (by
|
| 408 |
-
'2.
|
| 409 |
-
'3.
|
| 410 |
-
'4.
|
| 411 |
-
'5.
|
| 412 |
-
'6.
|
| 413 |
-
'7.
|
| 414 |
-
'8.
|
|
|
|
| 415 |
# ---
|
| 416 |
-
Model_widget = widgets.Dropdown(options=model_options, value='
|
| 417 |
Model_Num_widget = widgets.Text(description='Номер Модели:', placeholder='Введите номера моделей для скачивания через запятую/пробел.', style=style, layout=layout)
|
| 418 |
Inpainting_Model_widget = widgets.Checkbox(value=False, description='Inpainting Модели', style=style)
|
| 419 |
|
| 420 |
-
|
|
|
|
|
|
|
| 421 |
|
| 422 |
# --- VAE ---
|
| 423 |
vae_header = widgets.HTML('<div class="header" >Выбор VAE</div>')
|
|
@@ -430,7 +455,9 @@ vae_options = ['none',
|
|
| 430 |
Vae_widget = widgets.Dropdown(options=vae_options, value='3.Blessed2.vae', description='Vae:', style=style, layout=layout)
|
| 431 |
Vae_Num_widget = widgets.Text(description='Номер Vae:', placeholder='Введите номера vae для скачивания через запятую/пробел.', style=style, layout=layout)
|
| 432 |
|
| 433 |
-
|
|
|
|
|
|
|
| 434 |
|
| 435 |
# --- ADDITIONAL ---
|
| 436 |
additional_header = widgets.HTML('<div class="header">Дополнительно</div>')
|
|
@@ -457,10 +484,13 @@ ngrok_widget = widgets.HBox([ngrok_token_widget, ngrock_button], style=style, la
|
|
| 457 |
commandline_arguments_options = "--listen --enable-insecure-extension-access --theme dark --no-half-vae --disable-console-progressbars --xformers"
|
| 458 |
commandline_arguments_widget = widgets.Text(description='Аргументы:', value=commandline_arguments_options, style=style, layout=layout)
|
| 459 |
|
|
|
|
| 460 |
additional_widget_list = [additional_header, latest_changes_widget, HR, controlnet_widget, controlnet_Num_widget, commit_hash_widget, optional_huggingface_token_widget, ngrok_widget, HR, commandline_arguments_widget]
|
| 461 |
if free_plan and env == "Google Colab":
|
| 462 |
additional_widget_list.remove(ngrok_widget)
|
| 463 |
-
|
|
|
|
|
|
|
| 464 |
|
| 465 |
# --- CUSTOM DOWNLOAD ---
|
| 466 |
custom_download_header_popup = widgets.HTML('''
|
|
@@ -474,7 +504,7 @@ custom_download_header_popup = widgets.HTML('''
|
|
| 474 |
|
| 475 |
<div class="header" style="cursor: pointer;" onclick="toggleContainer()">Кастомная Загрузка</div>
|
| 476 |
<!-- PopUp window -->
|
| 477 |
-
<div class="info" id="info_dl">
|
| 478 |
<div class="popup">
|
| 479 |
Разделите несколько URL-адресов запятой/пробелом. Для <span class="file_name">пользовательского имени</span> файла/расширения укажите его через <span class="braces">[]</span>
|
| 480 |
после URL без пробелов.
|
|
@@ -496,9 +526,11 @@ Embedding_url_widget = widgets.Text(description='Embedding:', style=style, layou
|
|
| 496 |
Extensions_url_widget = widgets.Text(description='Extensions:', style=style, layout=layout)
|
| 497 |
custom_file_urls_widget = widgets.Text(description='Файл (txt):', style=style, layout=layout)
|
| 498 |
|
| 499 |
-
|
|
|
|
| 500 |
custom_download_header_popup, Model_url_widget, Vae_url_widget, LoRA_url_widget, Embedding_url_widget, Extensions_url_widget, custom_file_urls_widget
|
| 501 |
-
]).add_class("container").add_class("image_4").add_class("container_custom_downlad")
|
|
|
|
| 502 |
|
| 503 |
# --- Save Button ---
|
| 504 |
save_button = widgets.Button(description='Сохранить').add_class("button_save")
|
|
@@ -531,6 +563,13 @@ def load_settings():
|
|
| 531 |
|
| 532 |
def save_data(button):
|
| 533 |
save_settings()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 534 |
widgets.Widget.close_all()
|
| 535 |
|
| 536 |
settings = load_settings()
|
|
|
|
| 2 |
|
| 3 |
import os
|
| 4 |
import json
|
| 5 |
+
import time
|
| 6 |
import ipywidgets as widgets
|
| 7 |
from ipywidgets import widgets, Layout, Label, Button, VBox, HBox
|
| 8 |
from IPython.display import display, HTML, Javascript, clear_output
|
|
|
|
| 119 |
content: "ANXETY";
|
| 120 |
font-weight: bold;
|
| 121 |
font-size: 24px;
|
| 122 |
+
color: rgba(0, 0, 0, 0.2);
|
| 123 |
}
|
| 124 |
|
| 125 |
/* background img */
|
|
|
|
| 213 |
.widget-checkbox input[type="checkbox"] {
|
| 214 |
appearance: none;
|
| 215 |
position: relative;
|
| 216 |
+
top: 4px; /* Why is he taller?! */
|
| 217 |
width: 40px;
|
| 218 |
height: 20px;
|
| 219 |
border: none;
|
|
|
|
| 363 |
.button_save {
|
| 364 |
animation-name: showedWidgets;
|
| 365 |
animation-duration: 1s;
|
| 366 |
+
animation-fill-mode: forwards;
|
| 367 |
+
}
|
| 368 |
+
|
| 369 |
+
.container.hide,
|
| 370 |
+
.button_save.hide {
|
| 371 |
+
animation-name: hideWidgets;
|
| 372 |
+
animation-duration: 0.5s;
|
| 373 |
+
animation-fill-mode: forwards;
|
| 374 |
}
|
| 375 |
|
| 376 |
@keyframes showedWidgets {
|
|
|
|
| 385 |
opacity: 1;
|
| 386 |
}
|
| 387 |
}
|
| 388 |
+
|
| 389 |
+
@keyframes hideWidgets {
|
| 390 |
+
0% {
|
| 391 |
+
transform: translate3d(0, 0, 0) scale(1);
|
| 392 |
+
filter: blur(0) grayscale(0) brightness(1);
|
| 393 |
+
opacity: 1;
|
| 394 |
+
}
|
| 395 |
+
100% {
|
| 396 |
+
transform: translate3d(0, 5%, 0) scale(0.9);
|
| 397 |
+
filter: blur(15px) grayscale(1) brightness(0.5);
|
| 398 |
+
opacity: 0;
|
| 399 |
+
}
|
| 400 |
+
}
|
| 401 |
</style>
|
| 402 |
|
| 403 |
<!-- TOGGLE 'CustomDL' SCRIPT -->
|
|
|
|
| 426 |
# --- MODEL ---
|
| 427 |
model_header = widgets.HTML('<div class="header">Выбор Модели<div>')
|
| 428 |
model_options = ['none',
|
| 429 |
+
'1.Anime (by XpucT) + INP',
|
| 430 |
+
'2.BluMix [Anime] [V7]',
|
| 431 |
+
'3.Cetus-Mix [Anime] [V4] + INP',
|
| 432 |
+
'4.Counterfeit [Anime] [V3] + INP',
|
| 433 |
+
'5.CuteColor [Anime] [V3]',
|
| 434 |
+
'6.Dark-Sushi-Mix [Anime]',
|
| 435 |
+
'7.Deliberate [Realism] [V6] + INP',
|
| 436 |
+
'8.Meina-Mix [Anime] [V11] + INP',
|
| 437 |
+
'9.Mix-Pro [Anime] [V4] + INP']
|
| 438 |
# ---
|
| 439 |
+
Model_widget = widgets.Dropdown(options=model_options, value='4.Counterfeit [Anime] [V3] + INP', description='Модель:', style=style, layout=layout)
|
| 440 |
Model_Num_widget = widgets.Text(description='Номер Модели:', placeholder='Введите номера моделей для скачивания через запятую/пробел.', style=style, layout=layout)
|
| 441 |
Inpainting_Model_widget = widgets.Checkbox(value=False, description='Inpainting Модели', style=style)
|
| 442 |
|
| 443 |
+
''' Display Model'''
|
| 444 |
+
all_model_box = widgets.VBox([model_header, Model_widget, Model_Num_widget, Inpainting_Model_widget]).add_class("container").add_class("image_1")
|
| 445 |
+
display(all_model_box)
|
| 446 |
|
| 447 |
# --- VAE ---
|
| 448 |
vae_header = widgets.HTML('<div class="header" >Выбор VAE</div>')
|
|
|
|
| 455 |
Vae_widget = widgets.Dropdown(options=vae_options, value='3.Blessed2.vae', description='Vae:', style=style, layout=layout)
|
| 456 |
Vae_Num_widget = widgets.Text(description='Номер Vae:', placeholder='Введите номера vae для скачивания через запятую/пробел.', style=style, layout=layout)
|
| 457 |
|
| 458 |
+
''' Display Vae'''
|
| 459 |
+
all_vae_box= widgets.VBox([vae_header, Vae_widget, Vae_Num_widget]).add_class("container").add_class("image_2")
|
| 460 |
+
display(all_vae_box)
|
| 461 |
|
| 462 |
# --- ADDITIONAL ---
|
| 463 |
additional_header = widgets.HTML('<div class="header">Дополнительно</div>')
|
|
|
|
| 484 |
commandline_arguments_options = "--listen --enable-insecure-extension-access --theme dark --no-half-vae --disable-console-progressbars --xformers"
|
| 485 |
commandline_arguments_widget = widgets.Text(description='Аргументы:', value=commandline_arguments_options, style=style, layout=layout)
|
| 486 |
|
| 487 |
+
''' Display Additional'''
|
| 488 |
additional_widget_list = [additional_header, latest_changes_widget, HR, controlnet_widget, controlnet_Num_widget, commit_hash_widget, optional_huggingface_token_widget, ngrok_widget, HR, commandline_arguments_widget]
|
| 489 |
if free_plan and env == "Google Colab":
|
| 490 |
additional_widget_list.remove(ngrok_widget)
|
| 491 |
+
# ```
|
| 492 |
+
all_additional_box = widgets.VBox(additional_widget_list).add_class("container").add_class("image_3")
|
| 493 |
+
display(all_additional_box)
|
| 494 |
|
| 495 |
# --- CUSTOM DOWNLOAD ---
|
| 496 |
custom_download_header_popup = widgets.HTML('''
|
|
|
|
| 504 |
|
| 505 |
<div class="header" style="cursor: pointer;" onclick="toggleContainer()">Кастомная Загрузка</div>
|
| 506 |
<!-- PopUp window -->
|
| 507 |
+
<div class="info" id="info_dl">INFO</div>
|
| 508 |
<div class="popup">
|
| 509 |
Разделите несколько URL-адресов запятой/пробелом. Для <span class="file_name">пользовательского имени</span> файла/расширения укажите его через <span class="braces">[]</span>
|
| 510 |
после URL без пробелов.
|
|
|
|
| 526 |
Extensions_url_widget = widgets.Text(description='Extensions:', style=style, layout=layout)
|
| 527 |
custom_file_urls_widget = widgets.Text(description='Файл (txt):', style=style, layout=layout)
|
| 528 |
|
| 529 |
+
''' Display CustomDl'''
|
| 530 |
+
all_custom_box = widgets.VBox([
|
| 531 |
custom_download_header_popup, Model_url_widget, Vae_url_widget, LoRA_url_widget, Embedding_url_widget, Extensions_url_widget, custom_file_urls_widget
|
| 532 |
+
]).add_class("container").add_class("image_4").add_class("container_custom_downlad")
|
| 533 |
+
display(all_custom_box)
|
| 534 |
|
| 535 |
# --- Save Button ---
|
| 536 |
save_button = widgets.Button(description='Сохранить').add_class("button_save")
|
|
|
|
| 563 |
|
| 564 |
def save_data(button):
|
| 565 |
save_settings()
|
| 566 |
+
|
| 567 |
+
# --- uhh - hide... ---
|
| 568 |
+
widgets_list = [all_model_box, all_vae_box, all_additional_box, all_custom_box, save_button]
|
| 569 |
+
for widget in widgets_list:
|
| 570 |
+
widget.add_class("hide")
|
| 571 |
+
time.sleep(0.5)
|
| 572 |
+
|
| 573 |
widgets.Widget.close_all()
|
| 574 |
|
| 575 |
settings = load_settings()
|