Compare commits

...

14 Commits

Author SHA1 Message Date
skunkworxdark
3cc54915e3 Bug fix to Metadata To Model & Metadata To SDXL Model for when no metadata found. 2024-02-26 17:48:06 +00:00
skunkworxdark
228497a375 Added new nodes Metadata To ControlNets, Metadata To IP-Adapters, Metadata To T2I-Adapters 2024-02-22 16:36:57 +00:00
skunkworxdark
d43cd17f0a meta to loras
- Added `Metadata to Loras`, `Metadata To SDXL LoRAs`.
- Added unet, clip and vae outputs to `Metadata To Model` & `Metadata To SDXL Model`
- Added default vae as an input to `Metadata to VAE`
2024-02-19 19:21:09 +00:00
skunkworxdark
e4f6a1078e add meta to vae
added metadata to vae
added model exists checks
2024-02-17 14:06:30 +00:00
skunkworxdark
e9da116642 Update metadata_linked.py
bug fix for metadata to model nodes
2024-02-16 21:55:00 +00:00
skunkworxdark
9024c2f11c updates 2024-02-15 22:31:45 +00:00
skunkworxdark
a1cf091f2e Revert "Revert "Merge branch 'main' into Metadata""
This reverts commit 47335ce4fd5e54e12faba192e2f95b0d9f524398.
2024-02-15 17:57:58 +00:00
skunkworxdark
a7ff82247c Revert "Merge branch 'main' into Metadata"
This reverts commit c117c392b878330f82ba4a5b489578021ad5d8e0, reversing
changes made to 095525125841ce302b7e1be368ecc958749dff52.
2024-02-15 17:57:58 +00:00
skunkworxdark
97e29cf595 add model,vae,seamless and metaToBool 2024-02-15 17:57:58 +00:00
skunkworxdark
e444e1272c checkin rename some files 2024-02-15 17:57:58 +00:00
skunkworxdark
f177798894 updates 2024-02-15 17:57:58 +00:00
skunkworxdark
cf6b2904b1 Added scheduler and updated some descriptions 2024-02-15 17:57:58 +00:00
skunkworxdark
2643f9aa30 Added custom validation 2024-02-15 17:57:57 +00:00
skunkworxdark
13449b96ef separate new metadata nodes in own py fil 2024-02-15 17:57:57 +00:00
2 changed files with 1160 additions and 0 deletions

View File

@@ -0,0 +1,131 @@
from typing import Optional, Union
from invokeai.app.invocations.baseinvocation import (
BaseInvocationOutput,
Input,
InputField,
InvocationContext,
OutputField,
invocation,
invocation_output,
)
from invokeai.app.invocations.controlnet_image_processors import ControlField, ControlNetInvocation
from invokeai.app.invocations.ip_adapter import IPAdapterField, IPAdapterInvocation
from invokeai.app.invocations.t2i_adapter import T2IAdapterField, T2IAdapterInvocation
from invokeai.app.shared.fields import FieldDescriptions
def append_list(new_item, items, item_cls):
"""Add an item to an exiting item or list of items then output as a list of items."""
result = []
if items is None or (isinstance(items, list) and len(items) == 0):
pass
elif isinstance(items, item_cls):
result.append(items)
elif isinstance(items, list) and all(isinstance(i, item_cls) for i in items):
result.extend(items)
else:
raise ValueError(f"Invalid adapter list format: {items}")
result.append(new_item)
return result
@invocation_output("control_list_output")
class ControlListOutput(BaseInvocationOutput):
# Outputs
control_list: list[ControlField] = OutputField(description=FieldDescriptions.control)
@invocation(
"controlnet-linked",
title="ControlNet-Linked",
tags=["controlnet"],
category="controlnet",
version="1.1.0",
)
class ControlNetLinkedInvocation(ControlNetInvocation):
"""Collects ControlNet info to pass to other nodes."""
control_list: Optional[Union[ControlField, list[ControlField]]] = InputField(
default=None,
title="ControlNet-List",
input=Input.Connection,
ui_order=0,
)
def invoke(self, context: InvocationContext) -> ControlListOutput:
# Call parent
output = super().invoke(context).control
# Append the control output to the input list
control_list = append_list(output, self.control_list, ControlField)
return ControlListOutput(control_list=control_list)
@invocation_output("ip_adapter_list_output")
class IPAdapterListOutput(BaseInvocationOutput):
# Outputs
ip_adapter_list: list[IPAdapterField] = OutputField(
description=FieldDescriptions.ip_adapter, title="IP-Adapter-List"
)
@invocation(
"ip_adapter_linked",
title="IP-Adapter-Linked",
tags=["ip_adapter", "control"],
category="ip_adapter",
version="1.1.0",
)
class IPAdapterLinkedInvocation(IPAdapterInvocation):
"""Collects IP-Adapter info to pass to other nodes."""
ip_adapter_list: Optional[Union[IPAdapterField, list[IPAdapterField]]] = InputField(
description=FieldDescriptions.ip_adapter,
title="IP-Adapter-List",
default=None,
input=Input.Connection,
ui_order=0,
)
def invoke(self, context: InvocationContext) -> IPAdapterListOutput:
# Call parent
output = super().invoke(context).ip_adapter
# Append the control output to the input list
result = append_list(output, self.ip_adapter_list, IPAdapterField)
return IPAdapterListOutput(ip_adapter_list=result)
@invocation_output("ip_adapters_output")
class T2IAdapterListOutput(BaseInvocationOutput):
# Outputs
t2i_adapter_list: list[T2IAdapterField] = OutputField(
description=FieldDescriptions.t2i_adapter, title="T2I Adapter-List"
)
@invocation(
"t2i_adapter_linked",
title="T2I-Adapter-Linked",
tags=["t2i_adapter", "control"],
category="t2i_adapter",
version="1.0.0",
)
class T2IAdapterLinkedInvocation(T2IAdapterInvocation):
"""Collects T2I-Adapter info to pass to other nodes."""
t2i_adapter_list: Optional[Union[T2IAdapterField, list[T2IAdapterField]]] = InputField(
description=FieldDescriptions.ip_adapter,
title="T2I-Adapter",
default=None,
input=Input.Connection,
ui_order=0,
)
def invoke(self, context: InvocationContext) -> T2IAdapterListOutput:
# Call parent
output = super().invoke(context).t2i_adapter
# Append the control output to the input list
t2i_adapter_list = append_list(output, self.t2i_adapter_list, T2IAdapterField)
return T2IAdapterListOutput(t2i_adapter_list=t2i_adapter_list)

File diff suppressed because it is too large Load Diff