Update README.md

This commit is contained in:
Peyton DeNiro
2023-08-19 20:50:50 -05:00
committed by GitHub
parent 203a675d6b
commit c9a02f6eff
+82 -24
View File
@@ -10,18 +10,74 @@ The `ComfyUI-to-Python-Extension` is a powerful tool that translates ComfyUI wor
**To this:**
```
import os
import random
import torch
import sys
from typing import Sequence, Mapping, Any, Union
import torch
sys.path.append("../")
def add_comfyui_directory_to_sys_path() -> None:
"""
Recursively looks at parent folders starting from the current working directory until it finds 'ComfyUI'.
Once found, the directory is added to sys.path.
"""
start_path = os.getcwd() # Get the current working directory
def search_directory(path: str) -> None:
# Check if the current directory contains 'ComfyUI'
if "ComfyUI" in os.listdir(path):
directory_path = os.path.join(path, "ComfyUI")
sys.path.append(directory_path)
print(f"ComfyUI found and added to sys.path: {directory_path}")
# Get the parent directory
parent_directory = os.path.dirname(path)
# If the parent directory is the same as the current directory, we've reached the root and stop the search
if parent_directory == path:
return
# Recursively call the function with the parent directory
search_directory(parent_directory)
# Start the search from the current working directory
search_directory(start_path)
def get_value_at_index(obj: Union[Sequence, Mapping], index: int) -> Any:
"""Returns the value at the given index of a sequence or mapping.
If the object is a sequence (like list or string), returns the value at the given index.
If the object is a mapping (like a dictionary), returns the value at the index-th key.
Some return a dictionary, in these cases, we look for the "results" key
Args:
obj (Union[Sequence, Mapping]): The object to retrieve the value from.
index (int): The index of the value to retrieve.
Returns:
Any: The value at the given index.
Raises:
IndexError: If the index is out of bounds for the object and the object is not a mapping.
"""
try:
return obj[index]
except KeyError:
return obj["result"][index]
add_comfyui_directory_to_sys_path()
from nodes import (
VAEDecode,
KSamplerAdvanced,
EmptyLatentImage,
SaveImage,
CheckpointLoaderSimple,
CLIPTextEncode,
KSamplerAdvanced,
CheckpointLoaderSimple,
VAEDecode,
SaveImage,
EmptyLatentImage,
NODE_CLASS_MAPPINGS,
)
@@ -39,12 +95,12 @@ def main():
cliptextencode = CLIPTextEncode()
cliptextencode_6 = cliptextencode.encode(
text="evening sunset scenery blue sky nature, glass bottle with a galaxy in it",
clip=checkpointloadersimple_4[1],
text="Kylo Ren trapped inside of a Mark Rothko painting",
clip=get_value_at_index(checkpointloadersimple_4, 1),
)
cliptextencode_7 = cliptextencode.encode(
text="text, watermark", clip=checkpointloadersimple_4[1]
text="text, watermark", clip=get_value_at_index(checkpointloadersimple_4, 1)
)
checkpointloadersimple_12 = checkpointloadersimple.load_checkpoint(
@@ -52,12 +108,13 @@ def main():
)
cliptextencode_15 = cliptextencode.encode(
text="evening sunset scenery blue sky nature, glass bottle with a galaxy in it",
clip=checkpointloadersimple_12[1],
text="Kylo Ren trapped inside of a Mark Rothko painting",
clip=get_value_at_index(checkpointloadersimple_12, 1),
)
cliptextencode_16 = cliptextencode.encode(
text="text, watermark", clip=checkpointloadersimple_12[1]
text="text, watermark",
clip=get_value_at_index(checkpointloadersimple_12, 1),
)
ksampleradvanced = KSamplerAdvanced()
@@ -75,10 +132,10 @@ def main():
start_at_step=0,
end_at_step=20,
return_with_leftover_noise="enable",
model=checkpointloadersimple_4[0],
positive=cliptextencode_6[0],
negative=cliptextencode_7[0],
latent_image=emptylatentimage_5[0],
model=get_value_at_index(checkpointloadersimple_4, 0),
positive=get_value_at_index(cliptextencode_6, 0),
negative=get_value_at_index(cliptextencode_7, 0),
latent_image=get_value_at_index(emptylatentimage_5, 0),
)
ksampleradvanced_11 = ksampleradvanced.sample(
@@ -91,18 +148,19 @@ def main():
start_at_step=20,
end_at_step=10000,
return_with_leftover_noise="disable",
model=checkpointloadersimple_12[0],
positive=cliptextencode_15[0],
negative=cliptextencode_16[0],
latent_image=ksampleradvanced_10[0],
model=get_value_at_index(checkpointloadersimple_12, 0),
positive=get_value_at_index(cliptextencode_15, 0),
negative=get_value_at_index(cliptextencode_16, 0),
latent_image=get_value_at_index(ksampleradvanced_10, 0),
)
vaedecode_17 = vaedecode.decode(
samples=ksampleradvanced_11[0], vae=checkpointloadersimple_12[2]
samples=get_value_at_index(ksampleradvanced_11, 0),
vae=get_value_at_index(checkpointloadersimple_12, 2),
)
saveimage_19 = saveimage.save_images(
filename_prefix="ComfyUI", images=vaedecode_17[0]
filename_prefix="ComfyUI", images=get_value_at_index(vaedecode_17, 0)
)
@@ -168,4 +226,4 @@ if __name__ == "__main__":
9. After running `comfyui_to_python.py`, a new .py file will be created in the current working directory that contains the same name as the `input` variable. If you made no changes, look for `workflow_api.py`.
10. Now you can execute the newly created .py file to generate images without launching a server.
10. Now you can execute the newly created .py file to generate images without launching a server.