Fix output selection logic

This commit is contained in:
City
2024-01-05 15:17:03 +01:00
parent 2f76d241a9
commit 64c8d6db64
3 changed files with 12 additions and 4 deletions
+2 -2
View File
@@ -88,7 +88,7 @@ def dispatch_to_remote(remote_url, prompt, job_id=f"{get_client_id()}-unknown",
else:
prompt[i]["inputs"]["enabled"] = "false"
banned = [] if outputs == "any" else get_output_nodes(remote_url)
banned = [] if outputs == "any" else ["PreviewImage", "SaveImage"] # get_output_nodes(remote_url)
output = None
for i in prompt.keys():
# only leave current fetch but replace with PreviewImage
@@ -97,10 +97,10 @@ def dispatch_to_remote(remote_url, prompt, job_id=f"{get_client_id()}-unknown",
output = {
"inputs": {"images": prompt[i]["inputs"]["final_image"]},
"class_type": 'PreviewImage',
"final_output": True, # might allow multiple outputs with an ID?
}
recursive_node_deletion(i)
# do not save output on remote
# todo: other output types
if prompt[i]["class_type"] in banned:
recursive_node_deletion(i)
if output:
+9 -1
View File
@@ -7,6 +7,14 @@ from PIL import Image
POLLING = 0.5
def get_job_output(inputs, outputs):
output_id = list(outputs.keys())[-1] # fallback to last
for i,d in inputs.items():
if d.get("final_output") and i in outputs.keys():
output_id = i
break
return outputs[output_id].get("images", [])
def wait_for_job(remote_url, job_id):
fail = 0
while fail <= 3:
@@ -25,7 +33,7 @@ def wait_for_job(remote_url, job_id):
if d["prompt"][3].get("job_id") == job_id:
# this needs to be less jank
if len(d["outputs"].keys()) > 0:
return d["outputs"][list(d["outputs"].keys())[-1]].get("images")
return get_job_output(d["prompt"][2], d["outputs"])
else:
return []
# todo: check if it's actually in the queue to avoid waiting forever