Update and rename Reverse_Prompt_Node.py to ReversePromptNode.py
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import os
|
||||
import json
|
||||
import folder_paths
|
||||
import hashlib
|
||||
|
||||
class ReversePromptNode:
|
||||
def __init__(self):
|
||||
@@ -12,16 +12,21 @@ class ReversePromptNode:
|
||||
curr_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
presets_dir = os.path.join(curr_dir, "presets")
|
||||
|
||||
# 如果目录不存在,创建一个(防止报错)
|
||||
# 自动创建目录
|
||||
if not os.path.exists(presets_dir):
|
||||
os.makedirs(presets_dir)
|
||||
try:
|
||||
os.makedirs(presets_dir)
|
||||
except:
|
||||
pass
|
||||
|
||||
# 扫描 .json 文件
|
||||
files = [f for f in os.listdir(presets_dir) if f.endswith(".json")]
|
||||
files = []
|
||||
if os.path.exists(presets_dir):
|
||||
files = [f for f in os.listdir(presets_dir) if f.endswith(".json")]
|
||||
|
||||
# 如果没有文件,提供一个占位符
|
||||
# 防止列表为空导致的前端错误
|
||||
if not files:
|
||||
files = ["put_json_in_presets_folder.json"]
|
||||
files = ["No_json_files_found"]
|
||||
|
||||
return {
|
||||
"required": {
|
||||
@@ -33,9 +38,24 @@ class ReversePromptNode:
|
||||
RETURN_TYPES = ("STRING",)
|
||||
RETURN_NAMES = ("json_string",)
|
||||
FUNCTION = "load_json_preset"
|
||||
CATEGORY = "ChiefAI/Utils" # 你可以根据喜好修改类别
|
||||
CATEGORY = "ChiefAI/Utils"
|
||||
|
||||
# 核心修复:添加 IS_CHANGED 逻辑
|
||||
# 这告诉 ComfyUI:如果不返回 NaN,则每次运行都检查文件内容是否有变化
|
||||
# 这里我们返回文件的修改时间或哈希,确保修改 json 内容后能生效
|
||||
@classmethod
|
||||
def IS_CHANGED(s, preset_file, stringify_mode):
|
||||
curr_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
file_path = os.path.join(curr_dir, "presets", preset_file)
|
||||
if os.path.exists(file_path):
|
||||
mtime = os.path.getmtime(file_path)
|
||||
return f"{preset_file}_{mtime}_{stringify_mode}"
|
||||
return float("NaN")
|
||||
|
||||
def load_json_preset(self, preset_file, stringify_mode):
|
||||
if preset_file == "No_json_files_found":
|
||||
return (json.dumps({"error": "No JSON files found in presets folder"}),)
|
||||
|
||||
curr_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
file_path = os.path.join(curr_dir, "presets", preset_file)
|
||||
|
||||
@@ -46,19 +66,16 @@ class ReversePromptNode:
|
||||
raise FileNotFoundError(f"File not found: {file_path}")
|
||||
|
||||
with open(file_path, 'r', encoding='utf-8') as f:
|
||||
# 先解析一次以确保它是有效的JSON
|
||||
data = json.load(f)
|
||||
|
||||
# 根据用户选择输出格式化后的文本
|
||||
if stringify_mode == "Minified (One Line)":
|
||||
# 压缩成一行,去除空格
|
||||
json_content = json.dumps(data, ensure_ascii=False)
|
||||
else:
|
||||
# 保持缩进的可读格式
|
||||
json_content = json.dumps(data, indent=4, ensure_ascii=False)
|
||||
|
||||
except Exception as e:
|
||||
print(f"[ReversePromptNode] Error: {e}")
|
||||
json_content = json.dumps({"error": str(e)})
|
||||
print(f"[ReversePromptNode] Error loading {preset_file}: {e}")
|
||||
# 返回错误信息但保持 JSON 格式,防止工作流崩溃
|
||||
json_content = json.dumps({"error_loading_file": str(e)})
|
||||
|
||||
return (json_content,)
|
||||
Reference in New Issue
Block a user