##~ Display Download Results Widgets | by: ANXETY ~## import re import os import json import time import ipywidgets as widgets from ipywidgets import widgets, Layout, Label, Button, VBox, HBox from IPython.display import display, HTML, Javascript, clear_output # ================= DETECT ENV ================= def detect_environment(): free_plan = (os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES') / (1024. ** 3) <= 20) environments = { 'COLAB_GPU': ('Google Colab', "/root" if free_plan else "/content"), 'KAGGLE_URL_BASE': ('Kaggle', "/kaggle/working/content") } for env_var, (environment, path) in environments.items(): if env_var in os.environ: return environment, path, free_plan env, root_path, free_plan = detect_environment() webui_path = f"{root_path}/sdw" # ---------------------------------------------- # CONFIG DIR models_dir = f"{webui_path}/models/Stable-diffusion" vaes_dir = f"{webui_path}/models/VAE" embeddings_dir = f"{webui_path}/embeddings" loras_dir = f"{webui_path}/models/Lora" extensions_dir = f"{webui_path}/extensions" control_dir = f"{webui_path}/models/ControlNet" adetailer_dir = f"{webui_path}/models/adetailer" # ==================== CSS ==================== CSS = """ """ display(HTML(CSS)) # ==================== CSS ==================== # ==================== WIDGETS ==================== # --- global widgets --- HR = widgets.HTML('
') header_widget = widgets.HTML(value='''
DOWNLOAD RESULTS | v0.2.8
''') # Adding content to "outputs_widgets_list" def output_container_generator(header, items): header_widget = widgets.HTML(value=f'
{header} ➤
') content = [widgets.HTML(value=f'
{item}
') for item in items] container_widget = widgets.VBox([header_widget] + content).add_class("outputs_dl") return container_widget # Models models_list = [file for file in os.listdir(models_dir) if file.endswith('.safetensors')] models_widget = output_container_generator('Models', models_list).add_class("model") # Vaes vaes_list = [file for file in os.listdir(vaes_dir) if file.endswith('.safetensors')] vaes_widget = output_container_generator('VAEs', vaes_list).add_class("vae") # Embeddings embeddings_list = [file for file in os.listdir(embeddings_dir) if file.endswith(('.safetensors', '.pt')) and not os.path.isdir(os.path.join(embeddings_dir, file))] embeddings_widget = output_container_generator('Embeddings', embeddings_list).add_class("embedding") # LoRAs # loras_list = [file for file in os.listdir(loras_dir) if not file.endswith('.txt')] loras_list = [file for file in os.listdir(loras_dir) if file.endswith('.safetensors')] loras_widget = output_container_generator('LoRAs', loras_list).add_class("lora") # Extensions extensions_list = [folder for folder in os.listdir(extensions_dir) if os.path.isdir(os.path.join(extensions_dir, folder))] extensions_widget = output_container_generator('Extensions', extensions_list).add_class("extension") # ControlNet # controlnets_list = [file for file in os.listdir(control_dir) if not file.endswith(('.txt', '.yaml'))] filter_name = re.compile(r'^[^_]*_[^_]*_[^_]*_(.*)_fp16\.safetensors$') controlnets_list = [ filter_name.match(file).group(1) if filter_name.match(file) else file for file in os.listdir(control_dir) if not file.endswith(('.txt', '.yaml')) ] controlnets_widget = output_container_generator('ControlNets', controlnets_list).add_class("controlnet") ## Sorting and Output widgets_dict = { models_widget: models_list, vaes_widget: vaes_list, embeddings_widget: embeddings_list, loras_widget: loras_list, extensions_widget: extensions_list, controlnets_widget: controlnets_list } outputs_widgets_list = [widget for widget, widget_list in widgets_dict.items() if widget_list] result_output_widget = widgets.HBox(outputs_widgets_list).add_class("result_output_dl") container_widget = widgets.VBox([header_widget, HR, result_output_widget, HR]).add_class("container_dl") display(container_widget)