hack(nodes): hack to get image urls in the invocation complete event

This commit is contained in:
psychedelicious 2023-05-21 22:46:56 +10:00
parent 4d37ce31fc
commit 07c9b598bd
2 changed files with 27 additions and 2 deletions

View File

@ -1,6 +1,6 @@
# Copyright (c) 2022 Kyle Schouviller (https://github.com/kyle0654)
from typing import Any
from typing import Any, Optional
from invokeai.app.api.models.images import ProgressImage
from invokeai.app.util.misc import get_timestamp
@ -50,6 +50,8 @@ class EventServiceBase:
result: dict,
node: dict,
source_node_id: str,
image_url: Optional[str] = None,
thumbnail_url: Optional[str] = None,
) -> None:
"""Emitted when an invocation has completed"""
self.__emit_session_event(
@ -59,6 +61,8 @@ class EventServiceBase:
node=node,
source_node_id=source_node_id,
result=result,
image_url=image_url,
thumbnail_url=thumbnail_url
),
)

View File

@ -1,7 +1,10 @@
import time
import traceback
from threading import Event, Thread, BoundedSemaphore
from typing import Any, TypeGuard
from invokeai.app.invocations.image import ImageOutput
from invokeai.app.models.image import ImageType
from ..invocations.baseinvocation import InvocationContext
from .invocation_queue import InvocationQueueItem
from .invoker import InvocationProcessorABC, Invoker
@ -88,12 +91,30 @@ class DefaultInvocationProcessor(InvocationProcessorABC):
graph_execution_state
)
def is_image_output(obj: Any) -> TypeGuard[ImageOutput]:
return obj.__class__ == ImageOutput
outputs_dict = outputs.dict()
if is_image_output(outputs):
image_url = self.__invoker.services.images_new.get_url(
ImageType.RESULT, outputs.image.image_name
)
thumbnail_url = self.__invoker.services.images_new.get_url(
ImageType.RESULT, outputs.image.image_name, True
)
else:
image_url = None
thumbnail_url = None
# Send complete event
self.__invoker.services.events.emit_invocation_complete(
graph_execution_state_id=graph_execution_state.id,
node=invocation.dict(),
source_node_id=source_node_id,
result=outputs.dict(),
result=outputs_dict,
image_url=image_url,
thumbnail_url=thumbnail_url,
)
except KeyboardInterrupt: