{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "code", "source": [ "##~ AutoCleaner V3.6 CODE | BY: ANXETY ~##\n", "\n", "import os\n", "import time\n", "import ipywidgets as widgets\n", "from ipywidgets import Label, Button, VBox, HBox\n", "from IPython.display import display, HTML, Javascript\n", "\n", "\n", "# ================= DETECT ENV =================\n", "def detect_environment():\n", " free_plan = (os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES') / (1024. ** 3) <= 20)\n", " environments = {\n", " 'COLAB_GPU': ('Google Colab', \"/root\" if free_plan else \"/content\"),\n", " 'KAGGLE_URL_BASE': ('Kaggle', \"/kaggle/working/content\")\n", " }\n", "\n", " for env_var, (environment, path) in environments.items():\n", " if env_var in os.environ:\n", " return environment, path, free_plan\n", "\n", "env, root_path, free_plan = detect_environment()\n", "webui_path = f\"{root_path}/sdw\"\n", "# ----------------------------------------------\n", "\n", "\n", "# ==================== CSS ====================\n", "CSS = \"\"\"\n", "\n", "\"\"\"\n", "\n", "display(HTML(CSS))\n", "# ==================== CSS ====================\n", "\n", "\n", "# ================ AutoCleaner function ================\n", "directories = {\n", " \"Images\": f\"{webui_path}/outputs\",\n", " \"Models\": f\"{webui_path}/models/Stable-diffusion/\",\n", " \"Vae\": f\"{webui_path}/models/VAE/\",\n", " \"LoRa\": f\"{webui_path}/models/Lora/\",\n", " \"ControlNet Models\": f\"{webui_path}/models/ControlNet/\"\n", "}\n", "\n", "\"\"\" functions \"\"\"\n", "def clean_directory(directory):\n", " deleted_files = 0\n", " for root, dirs, files in os.walk(directory):\n", " for file in files:\n", " if file.endswith(\".txt\"):\n", " continue\n", " os.remove(os.path.join(root, file))\n", " if not file.endswith(\".yaml\"):\n", " deleted_files += 1\n", " return deleted_files\n", "\n", "def update_memory_info():\n", " disk_space = psutil.disk_usage(os.getcwd())\n", " total = disk_space.total / (1024 ** 3)\n", " used = disk_space.used / (1024 ** 3)\n", " free = disk_space.free / (1024 ** 3)\n", "\n", " storage_info.value = f'''\n", "
Всего: {total:.2f} GB | Используется: {used:.2f} GB | Свободно: {free:.2f} GB
\n", " '''\n", "\n", "def on_execute_button_press(button):\n", " selected_cleaners = auto_cleaner_widget.value\n", " deleted_files_dict = {}\n", "\n", " for option in selected_cleaners:\n", " if option in directories:\n", " deleted_files_dict[option] = clean_directory(directories[option])\n", "\n", " output.clear_output()\n", "\n", " with output:\n", " for message in generate_messages(deleted_files_dict):\n", " message_widget = HTML(f'

{message}

')\n", " display(message_widget)\n", "\n", " update_memory_info()\n", "\n", "def on_clear_button_press(button):\n", " container.add_class(\"hide\")\n", " time.sleep(0.5)\n", " widgets.Widget.close_all()\n", "\n", "def generate_messages(deleted_files_dict):\n", " messages = []\n", " word_variants = {\n", " \"Images\": \"Images\",\n", " \"Models\": \"Models\",\n", " \"Vae\": \"Vae\",\n", " \"LoRa\": \"LoRa\",\n", " \"ControlNet Models\": \"ControlNet Models\"\n", " }\n", " for key, value in deleted_files_dict.items():\n", " object_word = word_variants.get(key)\n", " messages.append(f\"Deleted {value} {object_word}\")\n", " return messages\n", "# ================ AutoCleaner function ================\n", "\n", "\n", "# --- storage memory ---\n", "import psutil\n", "disk_space = psutil.disk_usage(os.getcwd())\n", "total = disk_space.total / (1024 ** 3)\n", "used = disk_space.used / (1024 ** 3)\n", "free = disk_space.free / (1024 ** 3)\n", "\n", "\n", "# UI Code\n", "AutoCleaner_options = AutoCleaner_options = list(directories.keys())\n", "instruction_label = widgets.HTML('''\n", "Use ctrl or shift for multiple selections.\n", "''')\n", "auto_cleaner_widget = widgets.SelectMultiple(options=AutoCleaner_options, layout=widgets.Layout(width='auto')).add_class(\"custom-select-multiple_AC\")\n", "output = widgets.Output().add_class(\"output_AC\")\n", "# ---\n", "execute_button = Button(description='Execute Cleaning').add_class(\"button_execute_AC\").add_class(\"button_AC\")\n", "execute_button.on_click(on_execute_button_press)\n", "clear_button = Button(description='Hide Widget').add_class(\"button_clear_AC\").add_class(\"button_AC\")\n", "clear_button.on_click(on_clear_button_press)\n", "# ---\n", "storage_info = widgets.HTML(f'''\n", "
Total storage: {total:.2f} GB | Used: {used:.2f} GB | Free: {free:.2f} GB
\n", "''')\n", "# ---\n", "buttons = widgets.HBox([execute_button, clear_button])\n", "lower_information_panel = widgets.HBox([buttons, storage_info]).add_class(\"lower_information_panel_AC\")\n", "\n", "container = VBox([instruction_label, widgets.HTML('
'), auto_cleaner_widget, output, widgets.HTML('
'), lower_information_panel]).add_class(\"container_AC\")\n", "\n", "display(container)" ], "metadata": { "id": "I22dFg7F2j3G" }, "execution_count": null, "outputs": [] } ] }