Output nodes save their id in metadata:

- nodes can access their unique IDs
- output nodes like SaveImage, SaveAudio, Preview... etc. utilize this to serialize ID in the metadata
This commit is contained in:
bezo97 2024-10-13 17:29:06 +02:00
parent 3c60ecd7a8
commit e0c5a8778a
3 changed files with 5 additions and 0 deletions

View File

@ -121,6 +121,7 @@ def insert_or_replace_vorbis_comment(flac_io, comment_dict):
class SaveAudio: class SaveAudio:
def __init__(self): def __init__(self):
self.id: str
self.output_dir = folder_paths.get_output_directory() self.output_dir = folder_paths.get_output_directory()
self.type = "output" self.type = "output"
self.prefix_append = "" self.prefix_append = ""
@ -151,6 +152,7 @@ class SaveAudio:
if extra_pnginfo is not None: if extra_pnginfo is not None:
for x in extra_pnginfo: for x in extra_pnginfo:
metadata[x] = json.dumps(extra_pnginfo[x]) metadata[x] = json.dumps(extra_pnginfo[x])
metadata["output_node_id"] = self.id
for (batch_number, waveform) in enumerate(audio["waveform"].cpu()): for (batch_number, waveform) in enumerate(audio["waveform"].cpu()):
filename_with_batch_num = filename.replace("%batch_num%", str(batch_number)) filename_with_batch_num = filename.replace("%batch_num%", str(batch_number))

View File

@ -287,6 +287,7 @@ def execute(server, dynprompt, caches, current_item, extra_data, executed, promp
obj = caches.objects.get(unique_id) obj = caches.objects.get(unique_id)
if obj is None: if obj is None:
obj = class_def() obj = class_def()
obj.id = unique_id
caches.objects.set(unique_id, obj) caches.objects.set(unique_id, obj)
if hasattr(obj, "check_lazy_status"): if hasattr(obj, "check_lazy_status"):

View File

@ -1472,6 +1472,7 @@ class KSamplerAdvanced:
class SaveImage: class SaveImage:
def __init__(self): def __init__(self):
self.id: str
self.output_dir = folder_paths.get_output_directory() self.output_dir = folder_paths.get_output_directory()
self.type = "output" self.type = "output"
self.prefix_append = "" self.prefix_append = ""
@ -1512,6 +1513,7 @@ class SaveImage:
if extra_pnginfo is not None: if extra_pnginfo is not None:
for x in extra_pnginfo: for x in extra_pnginfo:
metadata.add_text(x, json.dumps(extra_pnginfo[x])) metadata.add_text(x, json.dumps(extra_pnginfo[x]))
metadata.add_text("output_node_id", self.id)
filename_with_batch_num = filename.replace("%batch_num%", str(batch_number)) filename_with_batch_num = filename.replace("%batch_num%", str(batch_number))
file = f"{filename_with_batch_num}_{counter:05}_.png" file = f"{filename_with_batch_num}_{counter:05}_.png"