Files

58 lines
1.8 KiB
Python
Executable File

import os
import folder_paths
class EmAySee_SaveTextToFile:
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"text_to_save": ("STRING", {"multiline": True}),
"filename": ("STRING", {"default": "output_text"}),
"subfolder": ("STRING", {"default": ""}),
}
}
RETURN_TYPES = ()
FUNCTION = "save_text"
OUTPUT_NODE = True
CATEGORY = "EmAySee/Utils"
def save_text(self, text_to_save, filename, subfolder):
if os.path.isabs(filename):
full_path_input = filename
elif subfolder.startswith("/") or (len(subfolder) > 1 and subfolder[1] == ":"):
full_path_input = os.path.join(subfolder, filename)
else:
output_dir = folder_paths.get_output_directory()
full_path_input = os.path.join(output_dir, subfolder, filename)
save_dir = os.path.dirname(full_path_input)
base_name = os.path.basename(full_path_input)
os.makedirs(save_dir, exist_ok=True)
if base_name.lower().endswith(".txt"):
base_name = base_name[:-4]
safe_filename = "".join(c for c in base_name if c.isalnum() or c in (' ', '.', '_', '-')).rstrip()
if not safe_filename:
safe_filename = "output_text"
file_path = os.path.join(save_dir, f"{safe_filename}.txt")
try:
with open(file_path, "w", encoding="utf-8") as f:
f.write(text_to_save)
print(f"[EmAySee] Successfully saved text to: {file_path}")
except Exception as e:
print(f"[EmAySee] CRITICAL Error saving text to {file_path}: {e}")
return ()
NODE_CLASS_MAPPINGS = {
"EmAySee_SaveTextToFile": EmAySee_SaveTextToFile
}
NODE_DISPLAY_NAME_MAPPINGS = {
"EmAySee_SaveTextToFile": "EmAySee Save Text to File"
}