Added a utility node for cleaning up directory
This commit is contained in:
+3
-2
@@ -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']
|
||||
+57
@@ -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"}
|
||||
Reference in New Issue
Block a user