diff --git a/__init__.py b/__init__.py index 86b5336..972dfec 100644 --- a/__init__.py +++ b/__init__.py @@ -10,8 +10,9 @@ from .gemini_segment import NODE_CLASS_MAPPINGS as GEMINI_SEGMENT_MAPPINGS, NODE from .nano_banana import NODE_CLASS_MAPPINGS as NANO_BANANA_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as NANO_BANANA_DISPLAY from .gemini_tts import NODE_CLASS_MAPPINGS as GEMINI_TTS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as GEMINI_TTS_DISPLAY from .elevenlabs_tts import NODE_CLASS_MAPPINGS as ELEVENLABS_TTS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as ELEVENLABS_TTS_DISPLAY +from .cleanup import NODE_CLASS_MAPPINGS as CLEANUP_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS as CLEANUP_DISPLAY -NODE_CLASS_MAPPINGS = {**PRO_MAPPINGS, **MAX_MAPPINGS, **GEMINI_MAPPINGS, **GPT_IMAGE_MAPPINGS, **IMAGEN_IMAGE_MAPPINGS, **IMAGEN_EDIT_MAPPINGS, **VEO_MAPPINGS, **VEO_GEMINI_MAPPINGS, **GEMINI_SEGMENT_MAPPINGS, **NANO_BANANA_MAPPINGS, **GEMINI_TTS_MAPPINGS, **ELEVENLABS_TTS_MAPPINGS} -NODE_DISPLAY_NAME_MAPPINGS = {**PRO_DISPLAY, **MAX_DISPLAY, **GEMINI_DISPLAY, **GPT_IMAGE_DISPLAY, **IMAGEN_IMAGE_DISPLAY, **IMAGEN_EDIT_DISPLAY, **VEO_DISPLAY, **VEO_GEMINI_DISPLAY, **GEMINI_SEGMENT_DISPLAY, **NANO_BANANA_DISPLAY, **GEMINI_TTS_DISPLAY, **ELEVENLABS_TTS_DISPLAY} +NODE_CLASS_MAPPINGS = {**PRO_MAPPINGS, **MAX_MAPPINGS, **GEMINI_MAPPINGS, **GPT_IMAGE_MAPPINGS, **IMAGEN_IMAGE_MAPPINGS, **IMAGEN_EDIT_MAPPINGS, **VEO_MAPPINGS, **VEO_GEMINI_MAPPINGS, **GEMINI_SEGMENT_MAPPINGS, **NANO_BANANA_MAPPINGS, **GEMINI_TTS_MAPPINGS, **ELEVENLABS_TTS_MAPPINGS, **CLEANUP_MAPPINGS} +NODE_DISPLAY_NAME_MAPPINGS = {**PRO_DISPLAY, **MAX_DISPLAY, **GEMINI_DISPLAY, **GPT_IMAGE_DISPLAY, **IMAGEN_IMAGE_DISPLAY, **IMAGEN_EDIT_DISPLAY, **VEO_DISPLAY, **VEO_GEMINI_DISPLAY, **GEMINI_SEGMENT_DISPLAY, **NANO_BANANA_DISPLAY, **GEMINI_TTS_DISPLAY, **ELEVENLABS_TTS_DISPLAY, **CLEANUP_DISPLAY} __all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS'] \ No newline at end of file diff --git a/cleanup.py b/cleanup.py new file mode 100644 index 0000000..168c21b --- /dev/null +++ b/cleanup.py @@ -0,0 +1,57 @@ +import os +import time +import shutil +from comfy.comfy_types.node_typing import IO + +class ClearDirectoryNode: + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "directory": ("STRING", {"default": ""}), + "sleep_seconds": ("FLOAT", {"default": 1.0, "min": 0.0}), + }, + "optional": { + "any_input": (IO.ANY,), + } + } + + RETURN_TYPES = (IO.ANY, "STRING") + RETURN_NAMES = ("any_output", "status") + FUNCTION = "clear_and_return" + CATEGORY = "Utility/File" + + def clear_and_return(self, directory, sleep_seconds, any_input=None): + + if not directory: + return (any_input, "no_directory_provided") + + dirpath = os.path.expanduser(directory) + if not os.path.exists(dirpath): + return (any_input, f"directory_not_found:{dirpath}") + + if not os.path.isdir(dirpath): + return (any_input, f"not_a_directory:{dirpath}") + + try: + time.sleep(float(sleep_seconds)) + except Exception: + pass + + try: + for name in os.listdir(dirpath): + path = os.path.join(dirpath, name) + try: + if os.path.islink(path) or os.path.isfile(path): + os.remove(path) + elif os.path.isdir(path): + shutil.rmtree(path) + except Exception as e: + return (any_input, f"error_removing:{path}:{e}") + return (any_input, "cleared") + except Exception as e: + return (any_input, f"error:{e}") + + +NODE_CLASS_MAPPINGS = {"ClearDirectoryNode": ClearDirectoryNode} +NODE_DISPLAY_NAME_MAPPINGS = {"ClearDirectoryNode": "Clear Directory After Sleep"} \ No newline at end of file