From e96fc12fc4c587c6d068c46ce1f603823dbb43a3 Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Mon, 4 Aug 2025 22:21:19 -0400 Subject: [PATCH 1/6] Add video generation functionality and FLUX.1 Krea model support - Add Runware Text to Video and Image to Video nodes - Add FLUX.1 Krea model to all search modules --- README.md | 4 + __init__.py | 5 + clientlibs/types.js | 12 + modules/controlNet.py | 1 + modules/embeddingSearch.py | 1 + modules/loraSearch.py | 1 + modules/modelSearch.py | 2 + modules/utils/runwareUtils.py | 984 ++++++++++++++++++++-------------- modules/vaeSearch.py | 1 + modules/videoInference.py | 262 +++++++++ modules/videoModelSearch.py | 163 ++++++ 11 files changed, 1022 insertions(+), 414 deletions(-) create mode 100644 modules/videoInference.py create mode 100644 modules/videoModelSearch.py diff --git a/README.md b/README.md index b6f7305..6726bd5 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,10 @@ Hereโ€™s a breakdown of the amazing nodes included in this integration: - **Runware IPAdapter**: Use reference images to guide the style and content of generated images. ๐Ÿ–Œ๏ธ - **Runware IPAdapters Combine**: Combine multiple IP-Adapter inputs for sophisticated image conditioning. ๐Ÿ”— + +- **Runware Text to Video**: Generate videos from text prompts using advanced AI models. ๐ŸŽฅ +- **Runware Image to Video**: Create videos from reference images with optional text guidance. ๐Ÿ–ผ๏ธโžก๏ธ๐ŸŽฅ + --- ## ๐Ÿค Support & Community diff --git a/__init__.py b/__init__.py index b07d23e..561e95b 100644 --- a/__init__.py +++ b/__init__.py @@ -25,6 +25,8 @@ from .modules.ipAdapter import ipAdapter from .modules.ipAdapterCombine import ipAdapterCombine from .modules.vaeSearch import vaeSearch from .modules.referenceImages import referenceImages +from .modules.videoInference import txt2vid +from .modules.videoModelSearch import videoModelSearch RUNWARE_COMFYUI_VERSION = "1.2.0 Beta" @@ -64,6 +66,8 @@ NODE_CLASS_MAPPINGS = { "Runware IPAdapter": ipAdapter, "Runware IPAdapters Combine": ipAdapterCombine, "Runware Reference Images": referenceImages, + "Runware Video Inference": txt2vid, + "Runware Video Model Search": videoModelSearch, } NODE_DISPLAY_NAME_MAPPINGS = { @@ -72,6 +76,7 @@ NODE_DISPLAY_NAME_MAPPINGS = { "Runware Embedding Search": "Runware Embedding", "Runware VAE Search": "Runware VAE", "Runware Multi Inference": "Runware Multi Inference [BETA]", + "Runware Video Model Search": "Runware Video Model", } WEB_DIRECTORY = "./clientlibs" diff --git a/clientlibs/types.js b/clientlibs/types.js index b2a5a74..1ac924b 100644 --- a/clientlibs/types.js +++ b/clientlibs/types.js @@ -13,6 +13,7 @@ const DEFAULT_MODELS_ARCH_LIST = { "All": "all", "FLUX.1-Schnell": "flux1s", "FLUX.1-Dev": "flux1d", + "FLUX.1 Krea": "flux1k", "Pony": "pony", "SD 1.5": "sd1x", "SD 1.5 Hyper": "sdhyper", @@ -73,6 +74,8 @@ const RUNWARE_NODE_TYPES = { EMBEDDINGCOMBINE: "Runware Embedding Combine", VAE: "Runware VAE Search", REFERENCEIMAGES: "Runware Reference Images", + VIDEOINFERENCE: "Runware Video Inference", + VIDEOMODELSEARCH: "Runware Video Model Search", }; const RUNWARE_NODE_PROPS = { @@ -186,6 +189,15 @@ const RUNWARE_NODE_PROPS = { bgColor: DEFAULT_BGCOLOR, colorModeOnly: true, }, + [RUNWARE_NODE_TYPES.VIDEOINFERENCE]: { + bgColor: DEFAULT_BGCOLOR, + liveDimensions: true, + promptEnhancer: true, + }, + [RUNWARE_NODE_TYPES.VIDEOMODELSEARCH]: { + bgColor: DEFAULT_BGCOLOR, + liveSearch: true, + }, }; export { diff --git a/modules/controlNet.py b/modules/controlNet.py index 693b424..3703213 100644 --- a/modules/controlNet.py +++ b/modules/controlNet.py @@ -15,6 +15,7 @@ class controlNet: "All", "FLUX.1-Schnell", "FLUX.1-Dev", + "FLUX.1 Krea", "Pony", "SD 1.5", "SD 1.5 Hyper", diff --git a/modules/embeddingSearch.py b/modules/embeddingSearch.py index e61cc06..bcd0040 100644 --- a/modules/embeddingSearch.py +++ b/modules/embeddingSearch.py @@ -10,6 +10,7 @@ class embeddingSearch: "All", "FLUX.1-Schnell", "FLUX.1-Dev", + "FLUX.1 Krea", "Pony", "SD 1.5", "SD 1.5 Hyper", diff --git a/modules/loraSearch.py b/modules/loraSearch.py index b9e910a..e9e2c89 100644 --- a/modules/loraSearch.py +++ b/modules/loraSearch.py @@ -10,6 +10,7 @@ class loraSearch: "All", "FLUX.1-Schnell", "FLUX.1-Dev", + "FLUX.1 Krea", "Pony", "SD 1.5", "SD 1.5 Hyper", diff --git a/modules/modelSearch.py b/modules/modelSearch.py index d7286e9..dc4ff5e 100644 --- a/modules/modelSearch.py +++ b/modules/modelSearch.py @@ -10,6 +10,7 @@ class modelSearch: "All", "FLUX.1-Schnell", "FLUX.1-Dev", + "FLUX.1 Krea", "Pony", "SD 1.5", "SD 1.5 Hyper", @@ -37,6 +38,7 @@ class modelSearch: "rundiffusion:130@100 (Juggernaut Pro Flux by RunDiffusion)", "runware:100@1 (Flux Schnell)", "runware:101@1 (Flux Dev)", + "runware:107@1 (FLUX.1 Krea)", "runware:5@1 (SD3)", "civitai:4384@128713 (SDXL 1.5 DreamShaper)", "civitai:43331@176425 (SD 1.5 majicMIX realistic ้บฆๆฉ˜ๅ†™ๅฎž)", diff --git a/modules/utils/runwareUtils.py b/modules/utils/runwareUtils.py index da39ae9..a538e6a 100644 --- a/modules/utils/runwareUtils.py +++ b/modules/utils/runwareUtils.py @@ -1,414 +1,570 @@ -from comfy.model_management import InterruptProcessingException -from requests.adapters import HTTPAdapter -from datetime import datetime, timedelta -from server import PromptServer -from dotenv import load_dotenv -from pathlib import Path -from PIL import Image -import numpy as np -import requests -import hashlib -import asyncio -import random -import base64 -import torch -import uuid -import time -import json -import os -import io -import threading - -load_dotenv() - -BASEFOLDER = Path(__file__).parent.parent.parent -IMAGE_CACHE_FILE = BASEFOLDER / "imagesCache.json" - -if not IMAGE_CACHE_FILE.exists(): - with open(IMAGE_CACHE_FILE, "w") as f: - print("[Runware] Initializing images cache...") - json.dump({}, f) - -RUNWARE_REMBG_OUTPUT_FORMATS = { - "outputFormat": ( - ["WEBP", "PNG"], - {"default": "WEBP", "tooltip": "Choose the output image format."}, - ) -} - -MAX_RETRIES = 4 -RETRY_COOLDOWNS = [1, 2, 5, 10] - -session = requests.Session() -adapter = HTTPAdapter(pool_connections=10, pool_maxsize=10) -session.mount("http://", adapter) -session.mount("https://", adapter) - -def generalRequestWrapper(recaller, *args, **kwargs): - for attempt in range(MAX_RETRIES + 1): - try: - return recaller(*args, **kwargs) - except (requests.exceptions.ConnectionError, requests.exceptions.SSLError) as e: - if attempt == MAX_RETRIES: - raise - else: - cooldown = RETRY_COOLDOWNS[attempt] - print(f"[Runware] Error API Request Failed! Retrying in {cooldown} seconds... (Attempt {attempt+1}/{MAX_RETRIES})") - time.sleep(cooldown) - continue - return False - -def getAPIKey(): - apiKey = os.getenv("RUNWARE_API_KEY") - if apiKey and isinstance(apiKey, str) and len(apiKey) > 24: - return apiKey - return False - -def getTimeout(): - timeout = os.getenv("RUNWARE_TIMEOUT") - if timeout and timeout.isdigit(): - return int(timeout) - else: - timeout = 90 - os.environ["RUNWARE_TIMEOUT"] = str(timeout) - return timeout - -def getOutputQuality(): - output_quality = os.getenv("RUNWARE_OUTPUT_QUALITY") - if output_quality and isinstance(output_quality, str) and output_quality.isdigit(): - return int(output_quality) - else: - output_quality = 95 - os.environ["RUNWARE_OUTPUT_QUALITY"] = str(output_quality) - return output_quality - -def getOutputFormat(): - output_format = os.getenv("RUNWARE_OUTPUT_FORMAT") - if output_format and isinstance(output_format, str): - return output_format - else: - output_format = "WEBP" - os.environ["RUNWARE_OUTPUT_FORMAT"] = output_format - return output_format - -def getEnableImagesCaching(): - enable_images_caching = os.getenv("RUNWARE_ENABLE_IMAGES_CACHING") - if enable_images_caching and enable_images_caching.lower() in ["true", "false"]: - return enable_images_caching.lower() == "true" - else: - enable_images_caching = True - os.environ["RUNWARE_ENABLE_IMAGES_CACHING"] = str(enable_images_caching) - return enable_images_caching - -def getMinImageCacheSize(): - min_image_cache_size = os.getenv("RUNWARE_MIN_IMAGE_CACHE_SIZE") - if min_image_cache_size and min_image_cache_size.isdigit(): - return int(min_image_cache_size) - else: - min_image_cache_size = 150 - os.environ["RUNWARE_MIN_IMAGE_CACHE_SIZE"] = str(min_image_cache_size) - return min_image_cache_size - -def getCustomEndpoint(): - custom_endpoint = os.getenv("RUNWARE_CUSTOM_ENDPOINT") - if custom_endpoint and isinstance(custom_endpoint, str): - return custom_endpoint - return "https://api.runware.ai/v1" - -SESSION_TIMEOUT = getTimeout() -RUNWARE_API_KEY = getAPIKey() -OUTPUT_FORMAT = getOutputFormat() -OUTPUT_QUALITY = getOutputQuality() -ENABLE_IMAGES_CACHING = getEnableImagesCaching() -MIN_IMAGE_CACHE_SIZE = getMinImageCacheSize() -RUNWARE_API_BASE_URL = getCustomEndpoint() - -def setEnvKey(keyName, keyValue): - comfyNodeRoot = Path(__file__).parent.parent.parent - envFilePath = comfyNodeRoot / ".env" - if not envFilePath.exists(): - envFilePath.touch() - with open(envFilePath, "r") as f: - lines = f.readlines() - key_exists = False - new_lines = [] - for line in lines: - if line.startswith(f"{keyName}="): - key_exists = True - new_lines.append(f"{keyName}={keyValue}\n") - else: - new_lines.append(line) - if not key_exists: - new_lines.append(f"{keyName}={keyValue}\n") - with open(envFilePath, "w") as f: - f.writelines(new_lines) - return True - -def setAPIKey(apiKey: str): - global RUNWARE_API_KEY - envSetRes = setEnvKey("RUNWARE_API_KEY", apiKey) - if envSetRes: - RUNWARE_API_KEY = apiKey - os.environ["RUNWARE_API_KEY"] = apiKey - return True - -def setTimeout(timeout: int): - envSetRes = setEnvKey("RUNWARE_TIMEOUT", str(timeout)) - if envSetRes: - global SESSION_TIMEOUT - SESSION_TIMEOUT = timeout - os.environ["RUNWARE_TIMEOUT"] = str(timeout) - return True - -def setOutputFormat(format: str): - envSetRes = setEnvKey("RUNWARE_OUTPUT_FORMAT", format) - if envSetRes: - global OUTPUT_FORMAT - OUTPUT_FORMAT = format - os.environ["RUNWARE_OUTPUT_FORMAT"] = format - return True - -def setOutputQuality(quality: int): - envSetRes = setEnvKey("RUNWARE_OUTPUT_QUALITY", str(quality)) - if envSetRes: - global OUTPUT_QUALITY - OUTPUT_QUALITY = quality - os.environ["RUNWARE_OUTPUT_QUALITY"] = str(quality) - return True - -def setEnableImagesCaching(enabled: bool): - envSetRes = setEnvKey("RUNWARE_ENABLE_IMAGES_CACHING", str(enabled)) - if envSetRes: - global ENABLE_IMAGES_CACHING - ENABLE_IMAGES_CACHING = enabled - os.environ["RUNWARE_ENABLE_IMAGES_CACHING"] = str(enabled) - return True - -def setMinImageCacheSize(size: int): - envSetRes = setEnvKey("RUNWARE_MIN_IMAGE_CACHE_SIZE", str(size)) - if envSetRes: - global MIN_IMAGE_CACHE_SIZE - MIN_IMAGE_CACHE_SIZE = size - os.environ["RUNWARE_MIN_IMAGE_CACHE_SIZE"] = str(size) - return True - -def genRandSeed(minSeed=1000, maxSeed=9223372036854776000): - return random.randint(minSeed, maxSeed) - -def genRandUUID(): - return str(uuid.uuid4()) - -def checkAPIKey(apiKey): - headers = { - "Accept": "application/json", - "Content-Type": "application/json", - "Accept-Encoding": "gzip, deflate, br, zstd", - } - - genConfig = [ - { - "taskType": "authentication", - "apiKey": apiKey, - } - ] - - try: - - def recaller(): - return session.post( - RUNWARE_API_BASE_URL, - headers=headers, - json=genConfig, - timeout=10, - allow_redirects=False, - stream=True, - ) - - genResult = generalRequestWrapper(recaller) - genResult = genResult.json() - if "errors" in genResult: - return str(genResult["errors"][0]["message"]) - else: - return True - except Exception as e: - return False - -def sendImageCaption(captionText, nodeID): - PromptServer.instance.send_sync( - "runwareImageCaption", - { - "success": True, - "captionText": captionText, - "nodeID": nodeID, - }, - ) - -def inferenecRequest(genConfig): - global RUNWARE_API_KEY, RUNWARE_API_BASE_URL, SESSION_TIMEOUT - RUNWARE_API_KEY = os.getenv("RUNWARE_API_KEY") - SESSION_TIMEOUT = int(os.getenv("RUNWARE_TIMEOUT")) - headers = { - "Authorization": f"Bearer {RUNWARE_API_KEY}", - "Content-Type": "application/json", - "Accept-Encoding": "gzip, deflate, br, zstd", - } - - try: - def recaller(): - return session.post( - RUNWARE_API_BASE_URL, - headers=headers, - json=genConfig, - timeout=SESSION_TIMEOUT, - allow_redirects=False, - stream=True, - ) - - genResult = generalRequestWrapper(recaller) - try: - genResult = genResult.json() - except json.JSONDecodeError as e: - print(f"[Debugging] Runware JSON Decode Error: {str(e)}") - print(f"[Debugging] Runware Response Status Code: {genResult.status_code}") - print(f"[Debugging] Runware Response Headers: {genResult.headers}") - print(f"[Debugging] Runware Raw Response Content: {genResult.content}") - raise Exception("Error: Invalid JSON response from API!") - if "errors" in genResult: - raise Exception(genResult["errors"][0]["message"]) - else: - return genResult - except requests.exceptions.Timeout: - raise Exception( - f"Error: Request Timed Out After {SESSION_TIMEOUT} Seconds - Please Try Again!" - ) - except requests.exceptions.RequestException: - raise Exception("Error: Runware Request Failed!") - except Exception as e: - if "invalid api key" in str(e).lower(): - PromptServer.instance.send_sync( - "runwareError", - { - "success": False, - "errorMessage": str(e), - "errorCode": 401, - }, - ) - raise InterruptProcessingException() - else: - raise Exception(f"Error: {e}") - return False - - -async def uploadImage(imageDataUri): - uploadTaskConfig = [ - {"taskType": "imageUpload", "taskUUID": genRandUUID(), "image": imageDataUri} - ] - - try: - uploadResult = inferenecRequest(uploadTaskConfig) - if ( - uploadResult - and "data" in uploadResult - and "imageUUID" in uploadResult["data"][0] - ): - imageUUID = uploadResult["data"][0]["imageUUID"] - return imageUUID - except Exception as e: - return False - - return False - -async def uploadAndCacheImage(imgSig: str, imgDataUri: str): - try: - imageUUID = await uploadImage(imgDataUri) - if imageUUID: - await imageStoreSet(imgSig, imageUUID) - except Exception as e: - return False - -async def imageStoreSet(imgHash: str, imgUUID: str) -> bool: - try: - with open(IMAGE_CACHE_FILE, "r") as f: - cache = json.load(f) - expires = (datetime.now() + timedelta(days=30)).isoformat() - cache[imgHash] = {"uuid": imgUUID, "expires": expires} - with open(IMAGE_CACHE_FILE, "w") as f: - json.dump(cache, f, indent=2) - return True - except Exception as e: - return False - -def imageStoreGet(imgHash: str) -> str | bool: - try: - with open(IMAGE_CACHE_FILE, "r") as f: - cache = json.load(f) - if imgHash not in cache: - return False - entry = cache[imgHash] - expires = datetime.fromisoformat(entry["expires"]) - if datetime.now() > expires: - del cache[imgHash] - with open(IMAGE_CACHE_FILE, "w") as f: - json.dump(cache, f, indent=2) - return False - return entry["uuid"] - except Exception as e: - return False - -def convertTensor2IMG(tensorImage): - global ENABLE_IMAGES_CACHING, MIN_IMAGE_CACHE_SIZE - ENABLE_IMAGES_CACHING = getEnableImagesCaching() - MIN_IMAGE_CACHE_SIZE = int(os.getenv("RUNWARE_MIN_IMAGE_CACHE_SIZE")) - - imageNP = (tensorImage.squeeze().numpy() * 255).astype(np.uint8) - imgSig = hashlib.sha256(imageNP.tobytes()).hexdigest() - - if ENABLE_IMAGES_CACHING: - imgUUID = imageStoreGet(imgSig) - if imgUUID: - return imgUUID - - image = Image.fromarray(imageNP) - with io.BytesIO() as buffer: - image.save( - buffer, format="webp", quality=100, subsampling=0, method=6, exact=True - ) - imageRawData = buffer.getvalue() - imgBytes = len(imageRawData) - imgSize = int(imgBytes / 1024) - imgb64 = base64.b64encode(imageRawData).decode("utf-8") - imgDataUri = f"data:image/webp;base64,{imgb64}" - - if ENABLE_IMAGES_CACHING and imgSize >= MIN_IMAGE_CACHE_SIZE: - try: - loop = asyncio.get_running_loop() - loop.call_soon(lambda: asyncio.ensure_future(uploadAndCacheImage(imgSig, imgDataUri))) - except RuntimeError: - def run_coro(): - new_loop = asyncio.new_event_loop() - asyncio.set_event_loop(new_loop) - new_loop.run_until_complete(uploadAndCacheImage(imgSig, imgDataUri)) - new_loop.close() - threading.Thread(target=run_coro).start() - return imgDataUri - -def convertIMG2Tensor(b64img): - imgbytes = base64.b64decode(b64img) - image = Image.open(io.BytesIO(imgbytes)) - imageNP = np.array(image).astype(np.float32) / 255.0 - tensorImage = torch.from_numpy(imageNP).squeeze() - return tensorImage - -def convertImageB64List(imageDataObject): - images = () - for result in imageDataObject["data"]: - generatedImage = result.get( - "imageBase64Data", - result.get( - "maskImageBase64Data", result.get("guideImageBase64Data", False) - ), - ) - generatedImage = convertIMG2Tensor(generatedImage) - images += (generatedImage,) - images = torch.stack(images, dim=0) - return images +from comfy.model_management import InterruptProcessingException +from requests.adapters import HTTPAdapter +from datetime import datetime, timedelta +from server import PromptServer +from dotenv import load_dotenv +from pathlib import Path +from PIL import Image +import numpy as np +import requests +import hashlib +import asyncio +import random +import base64 +import torch +import uuid +import time +import json +import os +import io +import threading + +load_dotenv() + +BASEFOLDER = Path(__file__).parent.parent.parent +IMAGE_CACHE_FILE = BASEFOLDER / "imagesCache.json" + +if not IMAGE_CACHE_FILE.exists(): + with open(IMAGE_CACHE_FILE, "w") as f: + print("[Debugging] Initializing images cache...") + json.dump({}, f) + +RUNWARE_REMBG_OUTPUT_FORMATS = { + "outputFormat": ( + ["WEBP", "PNG"], + {"default": "WEBP", "tooltip": "Choose the output image format."}, + ) +} + +MAX_RETRIES = 4 +RETRY_COOLDOWNS = [1, 2, 5, 10] + +session = requests.Session() +adapter = HTTPAdapter(pool_connections=10, pool_maxsize=10) +session.mount("http://", adapter) +session.mount("https://", adapter) + +def generalRequestWrapper(recaller, *args, **kwargs): + for attempt in range(MAX_RETRIES + 1): + try: + return recaller(*args, **kwargs) + except (requests.exceptions.ConnectionError, requests.exceptions.SSLError) as e: + if attempt == MAX_RETRIES: + raise + else: + cooldown = RETRY_COOLDOWNS[attempt] + print(f"[Warning] Error API Request Failed! Retrying in {cooldown} seconds... (Attempt {attempt+1}/{MAX_RETRIES})") + time.sleep(cooldown) + continue + return False + +def getAPIKey(): + apiKey = os.getenv("RUNWARE_API_KEY") + if apiKey and isinstance(apiKey, str) and len(apiKey) > 24: + return apiKey + return False + +def getTimeout(): + timeout = os.getenv("RUNWARE_TIMEOUT") + if timeout and timeout.isdigit(): + return int(timeout) + else: + timeout = 90 + os.environ["RUNWARE_TIMEOUT"] = str(timeout) + return timeout + +def getOutputQuality(): + output_quality = os.getenv("RUNWARE_OUTPUT_QUALITY") + if output_quality and isinstance(output_quality, str) and output_quality.isdigit(): + return int(output_quality) + else: + output_quality = 95 + os.environ["RUNWARE_OUTPUT_QUALITY"] = str(output_quality) + return output_quality + +def getOutputFormat(): + output_format = os.getenv("RUNWARE_OUTPUT_FORMAT") + if output_format and isinstance(output_format, str): + return output_format + else: + output_format = "WEBP" + os.environ["RUNWARE_OUTPUT_FORMAT"] = output_format + return output_format + +def getEnableImagesCaching(): + enable_images_caching = os.getenv("RUNWARE_ENABLE_IMAGES_CACHING") + if enable_images_caching and enable_images_caching.lower() in ["true", "false"]: + return enable_images_caching.lower() == "true" + else: + enable_images_caching = True + os.environ["RUNWARE_ENABLE_IMAGES_CACHING"] = str(enable_images_caching) + return enable_images_caching + +def getMinImageCacheSize(): + min_image_cache_size = os.getenv("RUNWARE_MIN_IMAGE_CACHE_SIZE") + if min_image_cache_size and min_image_cache_size.isdigit(): + return int(min_image_cache_size) + else: + min_image_cache_size = 150 + os.environ["RUNWARE_MIN_IMAGE_CACHE_SIZE"] = str(min_image_cache_size) + return min_image_cache_size + +def getCustomEndpoint(): + custom_endpoint = os.getenv("RUNWARE_CUSTOM_ENDPOINT") + if custom_endpoint and isinstance(custom_endpoint, str): + return custom_endpoint + return "https://api.runware.ai/v1" + +SESSION_TIMEOUT = getTimeout() +RUNWARE_API_KEY = getAPIKey() +OUTPUT_FORMAT = getOutputFormat() +OUTPUT_QUALITY = getOutputQuality() +ENABLE_IMAGES_CACHING = getEnableImagesCaching() +MIN_IMAGE_CACHE_SIZE = getMinImageCacheSize() +RUNWARE_API_BASE_URL = getCustomEndpoint() + +def setEnvKey(keyName, keyValue): + comfyNodeRoot = Path(__file__).parent.parent.parent + envFilePath = comfyNodeRoot / ".env" + if not envFilePath.exists(): + envFilePath.touch() + with open(envFilePath, "r") as f: + lines = f.readlines() + key_exists = False + new_lines = [] + for line in lines: + if line.startswith(f"{keyName}="): + key_exists = True + new_lines.append(f"{keyName}={keyValue}\n") + else: + new_lines.append(line) + if not key_exists: + new_lines.append(f"{keyName}={keyValue}\n") + with open(envFilePath, "w") as f: + f.writelines(new_lines) + return True + +def setAPIKey(apiKey: str): + global RUNWARE_API_KEY + envSetRes = setEnvKey("RUNWARE_API_KEY", apiKey) + if envSetRes: + RUNWARE_API_KEY = apiKey + os.environ["RUNWARE_API_KEY"] = apiKey + return True + +def setTimeout(timeout: int): + envSetRes = setEnvKey("RUNWARE_TIMEOUT", str(timeout)) + if envSetRes: + global SESSION_TIMEOUT + SESSION_TIMEOUT = timeout + os.environ["RUNWARE_TIMEOUT"] = str(timeout) + return True + +def setOutputFormat(format: str): + envSetRes = setEnvKey("RUNWARE_OUTPUT_FORMAT", format) + if envSetRes: + global OUTPUT_FORMAT + OUTPUT_FORMAT = format + os.environ["RUNWARE_OUTPUT_FORMAT"] = format + return True + +def setOutputQuality(quality: int): + envSetRes = setEnvKey("RUNWARE_OUTPUT_QUALITY", str(quality)) + if envSetRes: + global OUTPUT_QUALITY + OUTPUT_QUALITY = quality + os.environ["RUNWARE_OUTPUT_QUALITY"] = str(quality) + return True + +def setEnableImagesCaching(enabled: bool): + envSetRes = setEnvKey("RUNWARE_ENABLE_IMAGES_CACHING", str(enabled)) + if envSetRes: + global ENABLE_IMAGES_CACHING + ENABLE_IMAGES_CACHING = enabled + os.environ["RUNWARE_ENABLE_IMAGES_CACHING"] = str(enabled) + return True + +def setMinImageCacheSize(size: int): + envSetRes = setEnvKey("RUNWARE_MIN_IMAGE_CACHE_SIZE", str(size)) + if envSetRes: + global MIN_IMAGE_CACHE_SIZE + MIN_IMAGE_CACHE_SIZE = size + os.environ["RUNWARE_MIN_IMAGE_CACHE_SIZE"] = str(size) + return True + +def genRandSeed(minSeed=1000, maxSeed=9223372036854776000): + return random.randint(minSeed, maxSeed) + +def genRandUUID(): + return str(uuid.uuid4()) + +def checkAPIKey(apiKey): + headers = { + "Accept": "application/json", + "Content-Type": "application/json", + "Accept-Encoding": "gzip, deflate, br, zstd", + } + + genConfig = [ + { + "taskType": "authentication", + "apiKey": apiKey, + } + ] + + try: + + def recaller(): + return session.post( + RUNWARE_API_BASE_URL, + headers=headers, + json=genConfig, + timeout=10, + allow_redirects=False, + stream=True, + ) + + genResult = generalRequestWrapper(recaller) + genResult = genResult.json() + if "errors" in genResult: + return str(genResult["errors"][0]["message"]) + else: + return True + except Exception as e: + return False + +def sendImageCaption(captionText, nodeID): + PromptServer.instance.send_sync( + "runwareImageCaption", + { + "success": True, + "captionText": captionText, + "nodeID": nodeID, + }, + ) + +def inferenecRequest(genConfig): + global RUNWARE_API_KEY, RUNWARE_API_BASE_URL, SESSION_TIMEOUT + RUNWARE_API_KEY = os.getenv("RUNWARE_API_KEY") + SESSION_TIMEOUT = int(os.getenv("RUNWARE_TIMEOUT")) + headers = { + "Authorization": f"Bearer {RUNWARE_API_KEY}", + "Content-Type": "application/json", + "Accept-Encoding": "gzip, deflate, br, zstd", + } + + try: + def recaller(): + return session.post( + RUNWARE_API_BASE_URL, + headers=headers, + json=genConfig, + timeout=SESSION_TIMEOUT, + allow_redirects=False, + stream=True, + ) + + genResult = generalRequestWrapper(recaller) + try: + genResult = genResult.json() + except json.JSONDecodeError as e: + print(f"[Debugging] Runware JSON Decode Error: {str(e)}") + print(f"[Debugging] Runware Response Status Code: {genResult.status_code}") + print(f"[Debugging] Runware Response Headers: {genResult.headers}") + print(f"[Debugging] Runware Raw Response Content: {genResult.content}") + raise Exception("Error: Invalid JSON response from API!") + if "errors" in genResult: + raise Exception(genResult["errors"][0]["message"]) + else: + return genResult + except requests.exceptions.Timeout: + raise Exception( + f"Error: Request Timed Out After {SESSION_TIMEOUT} Seconds - Please Try Again!" + ) + except requests.exceptions.RequestException: + raise Exception("Error: Runware Request Failed!") + except Exception as e: + if "invalid api key" in str(e).lower(): + PromptServer.instance.send_sync( + "runwareError", + { + "success": False, + "errorMessage": str(e), + "errorCode": 401, + }, + ) + raise InterruptProcessingException() + else: + raise Exception(f"Error: {e}") + return False + + +async def uploadImage(imageDataUri): + uploadTaskConfig = [ + {"taskType": "imageUpload", "taskUUID": genRandUUID(), "image": imageDataUri} + ] + + try: + uploadResult = inferenecRequest(uploadTaskConfig) + if ( + uploadResult + and "data" in uploadResult + and "imageUUID" in uploadResult["data"][0] + ): + imageUUID = uploadResult["data"][0]["imageUUID"] + return imageUUID + except Exception as e: + return False + + return False + +async def uploadAndCacheImage(imgSig: str, imgDataUri: str): + try: + imageUUID = await uploadImage(imgDataUri) + if imageUUID: + await imageStoreSet(imgSig, imageUUID) + except Exception as e: + return False + +async def imageStoreSet(imgHash: str, imgUUID: str) -> bool: + try: + with open(IMAGE_CACHE_FILE, "r") as f: + cache = json.load(f) + expires = (datetime.now() + timedelta(days=30)).isoformat() + cache[imgHash] = {"uuid": imgUUID, "expires": expires} + with open(IMAGE_CACHE_FILE, "w") as f: + json.dump(cache, f, indent=2) + return True + except Exception as e: + return False + +def imageStoreGet(imgHash: str) -> str | bool: + try: + with open(IMAGE_CACHE_FILE, "r") as f: + cache = json.load(f) + if imgHash not in cache: + return False + entry = cache[imgHash] + expires = datetime.fromisoformat(entry["expires"]) + if datetime.now() > expires: + del cache[imgHash] + with open(IMAGE_CACHE_FILE, "w") as f: + json.dump(cache, f, indent=2) + return False + return entry["uuid"] + except Exception as e: + return False + +def convertTensor2IMG(tensorImage): + global ENABLE_IMAGES_CACHING, MIN_IMAGE_CACHE_SIZE + ENABLE_IMAGES_CACHING = getEnableImagesCaching() + MIN_IMAGE_CACHE_SIZE = int(os.getenv("RUNWARE_MIN_IMAGE_CACHE_SIZE")) + + imageNP = (tensorImage.squeeze().numpy() * 255).astype(np.uint8) + imgSig = hashlib.sha256(imageNP.tobytes()).hexdigest() + + if ENABLE_IMAGES_CACHING: + imgUUID = imageStoreGet(imgSig) + if imgUUID: + return imgUUID + + image = Image.fromarray(imageNP) + with io.BytesIO() as buffer: + image.save( + buffer, format="webp", quality=100, subsampling=0, method=6, exact=True + ) + imageRawData = buffer.getvalue() + imgBytes = len(imageRawData) + imgSize = int(imgBytes / 1024) + imgb64 = base64.b64encode(imageRawData).decode("utf-8") + imgDataUri = f"data:image/webp;base64,{imgb64}" + + if ENABLE_IMAGES_CACHING and imgSize >= MIN_IMAGE_CACHE_SIZE: + try: + loop = asyncio.get_running_loop() + loop.call_soon(lambda: asyncio.ensure_future(uploadAndCacheImage(imgSig, imgDataUri))) + except RuntimeError: + def run_coro(): + new_loop = asyncio.new_event_loop() + asyncio.set_event_loop(new_loop) + new_loop.run_until_complete(uploadAndCacheImage(imgSig, imgDataUri)) + new_loop.close() + threading.Thread(target=run_coro).start() + return imgDataUri + + + +def convertTensor2IMGForVideo(tensorImage): + """Convert tensor to image and force upload to get UUID for video frame images""" + imageNP = (tensorImage.squeeze().numpy() * 255).astype(np.uint8) + imgSig = hashlib.sha256(imageNP.tobytes()).hexdigest() + + # Check if already cached + imgUUID = imageStoreGet(imgSig) + if imgUUID: + return imgUUID + + # Convert to data URI - use PNG for video frame images + image = Image.fromarray(imageNP) + with io.BytesIO() as buffer: + image.save(buffer, format="PNG") + imageRawData = buffer.getvalue() + imgb64 = base64.b64encode(imageRawData).decode("utf-8") + imgDataUri = f"data:image/png;base64,{imgb64}" + + # Force upload to get UUID - use synchronous approach to avoid event loop conflicts + try: + # Use synchronous upload instead of async + uploadTaskConfig = [ + {"taskType": "imageUpload", "taskUUID": genRandUUID(), "image": imgDataUri} + ] + + uploadResult = inferenecRequest(uploadTaskConfig) + if ( + uploadResult + and "data" in uploadResult + and "imageUUID" in uploadResult["data"][0] + ): + uploaded_uuid = uploadResult["data"][0]["imageUUID"] + + # Cache the UUID synchronously + try: + with open(IMAGE_CACHE_FILE, "r") as f: + cache = json.load(f) + expires = (datetime.now() + timedelta(days=30)).isoformat() + cache[imgSig] = {"uuid": uploaded_uuid, "expires": expires} + with open(IMAGE_CACHE_FILE, "w") as f: + json.dump(cache, f, indent=2) + except Exception as e: + print(f"[Warning] Error caching image: {e}") + + return uploaded_uuid + else: + print("[Warning] Failed to upload image, returning data URI") + return imgDataUri + except Exception as e: + print(f"[Warning] Error uploading image: {e}") + return imgDataUri + +def convertIMG2Tensor(b64img): + imgbytes = base64.b64decode(b64img) + image = Image.open(io.BytesIO(imgbytes)) + imageNP = np.array(image).astype(np.float32) / 255.0 + tensorImage = torch.from_numpy(imageNP).squeeze() + return tensorImage + +def convertImageB64List(imageDataObject): + images = () + for result in imageDataObject["data"]: + generatedImage = result.get( + "imageBase64Data", + result.get( + "maskImageBase64Data", result.get("guideImageBase64Data", False) + ), + ) + generatedImage = convertIMG2Tensor(generatedImage) + images += (generatedImage,) + images = torch.stack(images, dim=0) + return images + +class VideoObject: + def __init__(self, video_url, width=None, height=None): + self.video_url = video_url + # Use provided dimensions or default to 864x480 for Seedance Lite + self.width = width if width is not None else 864 + self.height = height if height is not None else 480 + + def get_dimensions(self): + return (self.width, self.height) + + def save_to(self, filename, **kwargs): + """Save video to file by downloading from URL with retry logic""" + + + while True: + try: + response = requests.get(self.video_url, stream=True, timeout=30) + print(f"[Debugging] Response: {response}") + + if response.status_code == 422: + + time.sleep(1) + continue + + response.raise_for_status() + + with open(filename, 'wb') as f: + for chunk in response.iter_content(chunk_size=8192): + f.write(chunk) + + return True + + except Exception as e: + + return False + + return False + + def __str__(self): + return f"VideoObject(url={self.video_url}, dimensions={self.width}x{self.height})" + +def convertVideoB64List(videoDataObject, width=None, height=None): + videos = () + for result in videoDataObject["data"]: + generatedVideo = result.get("videoBase64Data", False) + if generatedVideo: + # For base64 data, create a video object (would need proper decoding in full implementation) + video_obj = VideoObject(f"data:video/mp4;base64,{generatedVideo}", width, height) + videos += (video_obj,) + else: + # If no base64 data, try to get video URL + videoURL = result.get("videoURL", False) + if videoURL: + # Create a proper video object that ComfyUI can handle + video_obj = VideoObject(videoURL, width, height) + videos += (video_obj,) + return videos + +def pollVideoResult(taskUUID): + """Poll for video generation result using task UUID with getResponse""" + global RUNWARE_API_KEY, RUNWARE_API_BASE_URL, SESSION_TIMEOUT + + pollConfig = [ + { + "taskType": "getResponse", + "taskUUID": taskUUID, + } + ] + + headers = { + "Authorization": f"Bearer {RUNWARE_API_KEY}", + "Content-Type": "application/json", + "Accept-Encoding": "gzip, deflate, br, zstd", + } + + try: + def recaller(): + return session.post( + RUNWARE_API_BASE_URL, + headers=headers, + json=pollConfig, + timeout=30, # Shorter timeout for polling + allow_redirects=False, + stream=True, + ) + + pollResult = generalRequestWrapper(recaller) + try: + pollResult = pollResult.json() + except json.JSONDecodeError as e: + print(f"[Debugging] Runware Poll JSON Decode Error: {str(e)}") + return None + + if "errors" in pollResult: + print(f"[Debugging] Poll error: {pollResult['errors'][0]['message']}") + return None + else: + return pollResult + except Exception as e: + print(f"[Debugging] Poll request failed: {str(e)}") + return None diff --git a/modules/vaeSearch.py b/modules/vaeSearch.py index e214b87..8fb27c0 100644 --- a/modules/vaeSearch.py +++ b/modules/vaeSearch.py @@ -10,6 +10,7 @@ class vaeSearch: "All", "FLUX.1-Schnell", "FLUX.1-Dev", + "FLUX.1 Krea", "Pony", "SD 1.5", "SD 1.5 Hyper", diff --git a/modules/videoInference.py b/modules/videoInference.py new file mode 100644 index 0000000..f98f78e --- /dev/null +++ b/modules/videoInference.py @@ -0,0 +1,262 @@ +from .utils import runwareUtils as rwUtils +from .videoModelSearch import videoModelSearch + + + +class txt2vid: + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "Model": ("RUNWAREVIDEOMODEL", { + "tooltip": "Connect a Runware Video Model From Runware Video Model Search Node.", + }), + "positivePrompt": ("STRING", { + "multiline": True, + "placeholder": "Positive Prompt: a text instruction to guide the model on generating the video. It is usually a sentence or a paragraph that provides positive guidance for the task. This parameter is essential to shape the desired results.\n\nYou Can Press (Ctrl + Alt + E) To Enhance The Prompt!", + "tooltip": "Positive Prompt: a text instruction to guide the model on generating the video. You Can Also Press (Ctrl + Alt + E) To Enhance The Prompt!" + }), + "negativePrompt": ("STRING", { + "multiline": True, + "placeholder": "Negative Prompt: a text instruction to guide the model on generating the video. It is usually a sentence or a paragraph that provides negative guidance for the task. This parameter helps to avoid certain undesired results.", + "tooltip": "Negative Prompt: a text instruction to guide the model on generating the video." + }), + "Multi Inference Mode": ("BOOLEAN", { + "tooltip": "If Enabled the node will skip the video generation process and will only return the Runware Task Object to be used in the Multi Inference Node.", + "default": False, + "label_on": "Enabled", + "label_off": "Disabled", + }), + "Prompt Weighting": (["Disabled", "sdEmbeds", "Compel"], { + "default": "Disabled", + "tooltip": "Prompt weighting allows you to adjust how strongly different parts of your prompt influence the generated video.\n\nChoose between \"compel\" notation with advanced weighting operations or \"sdEmbeds\" for simple emphasis adjustments.\n\nCompel Example: \"small+ dog, pixar style\"\n\nsdEmbeds Example: \"(small:2.5) dog, pixar style\"", + }), + "useCustomDimensions": ("BOOLEAN", { + "tooltip": "Model Default: Uses optimal dimensions for selected model. Custom: Uses width/height values below.", + "default": False, + "label_on": "Custom", + "label_off": "Model Default", + }), + "width": ("INT", { + "tooltip": "Width in pixels. Only used when 'Custom' is selected above.", + "default": 1024, + "min": 256, + "max": 1920, + "step": 1, + }), + "height": ("INT", { + "tooltip": "Height in pixels. Only used when 'Custom' is selected above.", + "default": 576, + "min": 256, + "max": 1920, + "step": 1, + }), + "duration": ("INT", { + "tooltip": "The duration of the video in seconds.", + "default": 5, + "min": 1, + "max": 30, + }), + "fps": ("INT", { + "tooltip": "Frames per second for the generated video.", + "default": 24, + "min": 8, + "max": 60, + }), + "outputFormat": (["mp4", "webm", "mov"], { + "default": "mp4", + "tooltip": "Choose the output video format.", + }), + "batchSize": ("INT", { + "tooltip": "The number of videos to generate in a single request.", + "default": 1, + "min": 1, + "max": 4, + }), + "includeCost": ("BOOLEAN", { + "tooltip": "Include cost information in the response.", + "default": True, + "label_on": "Enabled", + "label_off": "Disabled", + }), + "seed": ("INT", { + "tooltip": "A value used to randomize the video generation. If you want to make videos reproducible (generate the same video multiple times), you can use the same seed value. Note: Only supported by Wan models.", + "default": rwUtils.genRandSeed(), + "min": 1, + "max": 9223372036854776000, + }), + }, + "optional": { + "firstImage": ("IMAGE", { + "tooltip": "Image to use as the first frame of the video.", + }), + "lastImage": ("IMAGE", { + "tooltip": "Image to use as the last frame of the video.", + }), + "providerSettings": ("DICT", { + "tooltip": "Provider-specific settings for video generation.", + }), + } + } + + @classmethod + def VALIDATE_INPUTS(cls, positivePrompt, negativePrompt): + if (positivePrompt is not None and (positivePrompt == "" or len(positivePrompt) < 3 or len(positivePrompt) > 2000)): + raise Exception( + "Positive Prompt Must Be Between 3 And 2000 characters!") + if (negativePrompt is not None and negativePrompt != "" and (len(negativePrompt) < 3 or len(negativePrompt) > 2000)): + raise Exception( + "Negative Prompt Must Be Between 3 And 2000 characters!") + return True + + DESCRIPTION = "Generates Videos Lightning Fast With Runware Video Inference Engine." + FUNCTION = "generateVideo" + RETURN_TYPES = ("VIDEO", "RUNWARETASK") + RETURN_NAMES = ("VIDEO", "RW-Task") + CATEGORY = "Runware" + + def generateVideo(self, **kwargs): + runwareVideoModel = kwargs.get("Model") + positivePrompt = kwargs.get("positivePrompt") + negativePrompt = kwargs.get("negativePrompt", None) + multiInferenceMode = kwargs.get("Multi Inference Mode", False) + promptWeighting = kwargs.get("Prompt Weighting", "Disabled") + providerSettings = kwargs.get("providerSettings", None) + firstImage = kwargs.get("firstImage", None) + lastImage = kwargs.get("lastImage", None) + useCustomDimensions = kwargs.get("useCustomDimensions", False) + customWidth = kwargs.get("width", 864) + customHeight = kwargs.get("height", 480) + duration = kwargs.get("duration", 5) + fps = kwargs.get("fps", 24) + outputFormat = kwargs.get("outputFormat", "mp4") + batchSize = kwargs.get("batchSize", 1) + includeCost = kwargs.get("includeCost", True) + seed = kwargs.get("seed", 1) + + # Handle model input - could be dict or string + if isinstance(runwareVideoModel, dict): + model = runwareVideoModel.get("model", "") + else: + model = runwareVideoModel + + # Determine dimensions based on custom setting + if useCustomDimensions: + width = customWidth + height = customHeight + else: + + + model_dimensions = videoModelSearch.MODEL_DIMENSIONS.get(model, {"width": 1024, "height": 576}) + width = model_dimensions["width"] + height = model_dimensions["height"] + + genConfig = [ + { + "taskType": "videoInference", + "taskUUID": rwUtils.genRandUUID(), + "positivePrompt": positivePrompt, + "height": height, + "width": width, + "model": model, + "fps": fps, + "outputFormat": outputFormat, + "numberResults": batchSize, + "includeCost": includeCost, + } + ] + + # Add duration parameter - unified for all models + genConfig[0]["duration"] = duration + + # Add seed parameter only for supported models + + if model in videoModelSearch.SEED_SUPPORTED_MODELS: + genConfig[0]["seed"] = seed + + if (negativePrompt is not None and negativePrompt != ""): + genConfig[0]["negativePrompt"] = negativePrompt + if (promptWeighting != "Disabled"): + if (promptWeighting == "sdEmbeds"): + genConfig[0]["promptWeighting"] = "sdEmbeds" + else: + genConfig[0]["promptWeighting"] = "compel" + # Build frameImages array from firstImage and lastImage parameters + frameImages = [] + if (firstImage is not None): + # Force upload to get UUID for video frame images + firstImageUUID = rwUtils.convertTensor2IMGForVideo(firstImage) + # Construct full URL with PNG extension + firstImageURL = f"https://im.runware.ai/image/ii/{firstImageUUID}.webp" + print(f"[Debugging] First image URL: {firstImageURL}") + frameImages.append({ + "inputImage": firstImageURL + }) + + if (lastImage is not None): + # Force upload to get UUID for video frame images + lastImageUUID = rwUtils.convertTensor2IMGForVideo(lastImage) + # Construct full URL with PNG extension + lastImageURL = f"https://im.runware.ai/image/ii/{lastImageUUID}.webp" + print(f"[Debugging] Last image URL: {lastImageURL}") + frameImages.append({ + "inputImage": lastImageURL + }) + + if frameImages: + genConfig[0]["frameImages"] = frameImages + print(f"[Debugging] Frame images array: {frameImages}") + if (providerSettings is not None): + genConfig[0]["providerSettings"] = providerSettings + + if (multiInferenceMode): + return (None, genConfig) + else: + try: + genResult = rwUtils.inferenecRequest(genConfig) + print(f"[Debugging] Generation config: {genConfig}") + except Exception as e: + # Check if it's a dimension error and provide helpful information + error_msg = str(e) + if ("unsupported width" in error_msg.lower() or + "unsupported height" in error_msg.lower() or + "invalid width" in error_msg.lower() or + "invalid height" in error_msg.lower() or + "dimension not supported" in error_msg.lower()): + # Get model default dimensions for comparison + model_dimensions = videoModelSearch.MODEL_DIMENSIONS.get(model, {"width": 1024, "height": 576}) + expected_width = model_dimensions["width"] + expected_height = model_dimensions["height"] + + raise Exception(f"Error: Unsupported width/height combination for this model architecture. You used {width}x{height}, but {model} expects {expected_width}x{expected_height}. Please use 'Model Default' or set custom dimensions to {expected_width}x{expected_height}.") + else: + # Re-raise the original error + raise e + + # Extract task UUID for polling + taskUUID = genConfig[0]["taskUUID"] + + # Poll for video completion + while True: + + # Poll for video result + pollResult = rwUtils.pollVideoResult(taskUUID) + print(f"[Debugging] Poll result: {pollResult}") + + if pollResult and "data" in pollResult and len(pollResult["data"]) > 0: + video_data = pollResult["data"][0] + + # Check status directly + if "status" in video_data: + status = video_data["status"] + + if status == "success": + if "videoURL" in video_data or "videoBase64Data" in video_data: + videos = rwUtils.convertVideoB64List(pollResult, width, height) + return videos + elif status != "processing": + raise Exception(f"Video generation failed: {video_data.get('error', 'Unknown error')}") + # If status is "processing", continue polling + + # Wait before next poll + rwUtils.time.sleep(1) \ No newline at end of file diff --git a/modules/videoModelSearch.py b/modules/videoModelSearch.py new file mode 100644 index 0000000..038bf08 --- /dev/null +++ b/modules/videoModelSearch.py @@ -0,0 +1,163 @@ +class videoModelSearch: + # Define the video models by architecture with their default dimensions + VIDEO_MODELS = { + "KlingAI": [ + "urn:air:video:klingai:1@2 (KlingAI V1.0 Pro)", + "urn:air:video:klingai:1@1 (KlingAI V1 Standard)", + "urn:air:video:klingai:2@2 (KlingAI V1.5 Pro)", + "urn:air:video:klingai:2@1 (KlingAI V1.5 Standard)", + "urn:air:video:klingai:3@1 (KlingAI V1.6 Standard)", + "urn:air:video:klingai:3@2 (KlingAI V1.6 Pro)", + "urn:air:video:klingai:4@3 (KlingAI V2.1 Master)", + "urn:air:video:klingai:5@1 (KlingAI V2.1 Standard (I2V))", + "urn:air:video:klingai:5@2 (KlingAI V2.1 Pro (I2V))", + "urn:air:video:klingai:5@3 (KlingAI V2.0 Master)", + ], + "Veo": [ + "urn:air:video:google:2@0 (Veo 2.0)", + "urn:air:video:google:3@0 (Veo 3.0)", + "urn:air:video:google:3@1 (Veo 3.0 Fast)", + ], + "Seedance": [ + "urn:air:video:bytedance:2@1 (Seedance 1.0 Pro)", + "urn:air:video:bytedance:1@1 (Seedance 1.0 Lite)", + ], + "MiniMax": [ + "urn:air:video:minimax:1@1 (MiniMax 01 Base)", + "urn:air:video:minimax:2@1 (MiniMax 01 Director)", + "urn:air:video:minimax:2@3 (MiniMax I2V 01 Live)", + "urn:air:video:minimax:3@1 (MiniMax 02 Hailuo)", + ], + "PixVerse": [ + "urn:air:video:pixverse:1@1 (PixVerse v3.5)", + "urn:air:video:pixverse:1@2 (PixVerse v4)", + "urn:air:video:pixverse:1@3 (PixVerse v4.5)", + ], + "Vidu": [ + "urn:air:video:vidu:1@0 (Vidu Q1 Classic)", + "urn:air:video:vidu:1@1 (Vidu Q1)", + "urn:air:video:vidu:1@5 (Vidu 1.5)", + "urn:air:video:vidu:2@0 (Vidu 2.0)", + ], + "Wan": [ + "urn:air:video:runware:200@1 (Wan 2.1 1.3B)", + "urn:air:video:runware:200@2 (Wan 2.1 14B)", + ], + } + + # Model dimensions mapping + MODEL_DIMENSIONS = { + # KlingAI Models + "urn:air:video:klingai:1@2": {"width": 1280, "height": 720}, # KlingAI V1.0 Pro + "urn:air:video:klingai:1@1": {"width": 1280, "height": 720}, # KlingAI V1 Standard + "urn:air:video:klingai:2@2": {"width": 1920, "height": 1080}, # KlingAI V1.5 Pro + "urn:air:video:klingai:2@1": {"width": 1280, "height": 720}, # KlingAI V1.5 Standard + "urn:air:video:klingai:3@1": {"width": 1280, "height": 720}, # KlingAI V1.6 Standard + "urn:air:video:klingai:3@2": {"width": 1920, "height": 1080}, # KlingAI V1.6 Pro + "urn:air:video:klingai:4@3": {"width": 1280, "height": 720}, # KlingAI V2.1 Master + "urn:air:video:klingai:5@1": {"width": 1280, "height": 720}, # KlingAI V2.1 Standard (I2V) + "urn:air:video:klingai:5@2": {"width": 1920, "height": 1080}, # KlingAI V2.1 Pro (I2V) + "urn:air:video:klingai:5@3": {"width": 1920, "height": 1080}, # KlingAI V2.0 Master + + # Veo Models + "urn:air:video:google:2@0": {"width": 1280, "height": 720}, # Veo 2.0 + "urn:air:video:google:3@0": {"width": 1280, "height": 720}, # Veo 3.0 + "urn:air:video:google:3@1": {"width": 1280, "height": 720}, # Veo 3.0 Fast + + # Seedance Models + "urn:air:video:bytedance:2@1": {"width": 864, "height": 480}, # Seedance 1.0 Pro + "urn:air:video:bytedance:1@1": {"width": 864, "height": 480}, # Seedance 1.0 Lite + + # MiniMax Models + "urn:air:video:minimax:1@1": {"width": 1366, "height": 768}, # MiniMax 01 Base + "urn:air:video:minimax:2@1": {"width": 1366, "height": 768}, # MiniMax 01 Director + "urn:air:video:minimax:2@3": {"width": 1366, "height": 768}, # MiniMax I2V 01 Live + "urn:air:video:minimax:3@1": {"width": 1366, "height": 768}, # MiniMax 02 Hailuo + + # PixVerse Models + "urn:air:video:pixverse:1@1": {"width": 640, "height": 360}, # PixVerse v3.5 + "urn:air:video:pixverse:1@2": {"width": 640, "height": 360}, # PixVerse v4 + "urn:air:video:pixverse:1@3": {"width": 640, "height": 360}, # PixVerse v4.5 + + # Vidu Models + "urn:air:video:vidu:1@0": {"width": 1920, "height": 1080}, # Vidu Q1 Classic + "urn:air:video:vidu:1@1": {"width": 1920, "height": 1080}, # Vidu Q1 + "urn:air:video:vidu:1@5": {"width": 1920, "height": 1080}, # Vidu 1.5 + "urn:air:video:vidu:2@0": {"width": 1920, "height": 1080}, # Vidu 2.0 + + # Wan Models + "urn:air:video:runware:200@1": {"width": 853, "height": 480}, # Wan 2.1 1.3B + "urn:air:video:runware:200@2": {"width": 853, "height": 480}, # Wan 2.1 14B + } + + # Models that support seed parameter + SEED_SUPPORTED_MODELS = [ + "urn:air:video:runware:200@1", # Wan 2.1 1.3B + "urn:air:video:runware:200@2", # Wan 2.1 14B + ] + + @classmethod + def INPUT_TYPES(cls): + # Get all models for "All" option + all_models = [] + for models in cls.VIDEO_MODELS.values(): + all_models.extend(models) + + return { + "required": { + "Model Search": ("STRING", { + "tooltip": "Search For Specific Video Model By Name Or Civit AIR Code (eg: KlingAI, Veo).", + }), + "Model Architecture": ([ + "All", + "KlingAI", + "Veo", + "Seedance", + "MiniMax", + "PixVerse", + "Vidu", + "Wan" + ], { + "tooltip": "Choose Video Model Architecture To Filter Results.", + "default": "KlingAI", + }), + "VideoList": (all_models, { + "tooltip": "Video Model Results Will Show UP Here So You Could Choose From.", + "default": "urn:air:video:klingai:5@3 (KlingAI 2.1)", + }), + "Use Search Value": ("BOOLEAN", { + "tooltip": "When Enabled, the value you've set in the search input will be used instead.\n\nThis is useful in case the model search API is down or you prefer to set the model manually.", + "default": False, + "label_on": "Enabled", + "label_off": "Disabled", + }), + }, + } + + DESCRIPTION = "Directly Search and Connect Video Models to Runware Video Inference Nodes In ComfyUI." + FUNCTION = "videoModelSearch" + RETURN_TYPES = ("RUNWAREVIDEOMODEL", "INT", "INT") + RETURN_NAMES = ("Runware Video Model", "Width", "Height") + CATEGORY = "Runware" + + @classmethod + def VALIDATE_INPUTS(cls, VideoList): + return True + + def videoModelSearch(self, **kwargs): + enableSearchValue = kwargs.get("Use Search Value", False) + searchInput = kwargs.get("Model Search") + + if enableSearchValue: + modelAIRCode = searchInput + else: + crModel = kwargs.get("VideoList") + # Extract the full AIR identifier (everything before the first space) + modelAIRCode = crModel.split(" (")[0] + + # Get dimensions for the selected model + dimensions = self.MODEL_DIMENSIONS.get(modelAIRCode, {"width": 1024, "height": 576}) + + return ({ + "model": modelAIRCode, + }, dimensions["width"], dimensions["height"]) \ No newline at end of file From 9864e456814a1b9446f2f8cea8549dee266cf047 Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Mon, 4 Aug 2025 22:36:43 -0400 Subject: [PATCH 2/6] Add video generation workflows and Krea Model --- workflows/Runware_Adetailer.json | 2 +- workflows/Runware_Basic_Background_Removal.json | 2 +- workflows/Runware_Basic_Image_Inference.json | 2 +- workflows/Runware_Basic_Image_Inference_IPAdapter.json | 2 +- workflows/Runware_Basic_Image_Inference_Lora.json | 2 +- workflows/Runware_Basic_Image_Upscaling.json | 2 +- workflows/Runware_ControlNet.json | 2 +- workflows/Runware_Image_Inference_Captioning.json | 2 +- workflows/Runware_Image_Inference_Embedding.json | 2 +- workflows/Runware_Image_Inference_VAE.json | 2 +- workflows/Runware_Image_to_Video.json | 1 + workflows/Runware_Outpainting.json | 2 +- workflows/Runware_PhotoMaker_v2.json | 2 +- workflows/Runware_Text_To_Video.json.json | 1 + 14 files changed, 14 insertions(+), 12 deletions(-) create mode 100644 workflows/Runware_Image_to_Video.json create mode 100644 workflows/Runware_Text_To_Video.json.json diff --git a/workflows/Runware_Adetailer.json b/workflows/Runware_Adetailer.json index 2a16489..7878770 100644 --- a/workflows/Runware_Adetailer.json +++ b/workflows/Runware_Adetailer.json @@ -1 +1 @@ -{"last_node_id":7,"last_link_id":8,"nodes":[{"id":4,"type":"Runware Image Masking","pos":[351.7330627441406,132.90028381347656],"size":[315,194],"flags":{},"order":4,"mode":0,"inputs":[{"name":"Image","type":"IMAGE","link":3}],"outputs":[{"name":"Image","type":"IMAGE","links":[4],"slot_index":0},{"name":"Mask Preview","type":"IMAGE","links":null},{"name":"Mask","type":"MASK","links":[5],"slot_index":2}],"properties":{"Node name for S&R":"Runware Image Masking"},"widgets_values":["face_yolov8n",0.25,6,4,4],"bgcolor":"#6c5ce7"},{"id":2,"type":"Runware Model Search","pos":[-75.49443817138672,-288.33795166015625],"size":[315,130],"flags":{"collapsed":true},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"Runware Model","type":"RUNWAREMODEL","links":[2],"slot_index":0}],"properties":{"Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","civitai:101055@128078 (SDXL v1.0 VAE fix)"],"bgcolor":"#6c5ce7"},{"id":6,"type":"PreviewImage","pos":[1151.2889404296875,-264.380859375],"size":[552.3806762695312,564.0267944335938],"flags":{},"order":6,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":7}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":1,"type":"PreviewImage","pos":[357.7220764160156,-258.3918762207031],"size":[307.82305908203125,331.447509765625],"flags":{},"order":3,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":1}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":7,"type":"Runware Model Search","pos":[691.1177978515625,-322.2765808105469],"size":[315,130],"flags":{"collapsed":true},"order":1,"mode":0,"inputs":[],"outputs":[{"name":"Runware Model","type":"RUNWAREMODEL","links":[8],"slot_index":0}],"properties":{"Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","runware:101@1 (Flux Dev)"],"bgcolor":"#6c5ce7"},{"id":3,"type":"Runware Image Inference","pos":[-77.49113464355469,-239.42645263671875],"size":[400,602],"flags":{},"order":2,"mode":0,"inputs":[{"name":"Model","type":"RUNWAREMODEL","link":2},{"name":"Lora","type":"RUNWARELORA","link":null,"shape":7},{"name":"ControlNet","type":"RUNWARECONTROLNET","link":null,"shape":7},{"name":"Refiner","type":"RUNWAREREFINER","link":null,"shape":7},{"name":"seedImage","type":"IMAGE","link":null,"shape":7},{"name":"maskImage","type":"MASK","link":null,"shape":7},{"name":"Embeddings","type":"RUNWAREEMBEDDING","link":null,"shape":7},{"name":"VAE","type":"RUNWAREVAE","link":null,"shape":7}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[1,3],"slot_index":0}],"properties":{"Node name for S&R":"Runware Image Inference"},"widgets_values":["a man standing in the woods and looking serious, wide screen, zoomed out, realistic, HD, details","","Disabled","Square HD (1024x1024)",1024,1024,20,"Default",4.5,502840077979554,"randomize",0,0.8,false,32,1],"bgcolor":"#6c5ce7"},{"id":5,"type":"Runware Image Inference","pos":[700.1026611328125,-276.35955810546875],"size":[421.96026611328125,602],"flags":{},"order":5,"mode":0,"inputs":[{"name":"Model","type":"RUNWAREMODEL","link":8},{"name":"Lora","type":"RUNWARELORA","link":null,"shape":7},{"name":"ControlNet","type":"RUNWARECONTROLNET","link":null,"shape":7},{"name":"Refiner","type":"RUNWAREREFINER","link":null,"shape":7},{"name":"seedImage","type":"IMAGE","link":4,"shape":7},{"name":"maskImage","type":"MASK","link":5,"shape":7},{"name":"Embeddings","type":"RUNWAREEMBEDDING","link":null,"shape":7},{"name":"VAE","type":"RUNWAREVAE","link":null,"shape":7}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[7],"slot_index":0}],"properties":{"Node name for S&R":"Runware Image Inference"},"widgets_values":["a man standing in the woods and looking serious, wide screen, zoomed out, realistic, HD, details","","Disabled","Square HD (1024x1024)",1024,1024,30,"Default",2,1108798832542204,"randomize",0,0.8,true,32,1],"bgcolor":"#6c5ce7"}],"links":[[1,3,0,1,0,"IMAGE"],[2,2,0,3,0,"RUNWAREMODEL"],[3,3,0,4,0,"IMAGE"],[4,4,0,5,4,"IMAGE"],[5,4,2,5,5,"MASK"],[7,5,0,6,0,"IMAGE"],[8,7,0,5,0,"RUNWAREMODEL"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.001808834538306,"offset":[518.6927968058118,348.6661916601252]}},"version":0.4} \ No newline at end of file +{"id":"20267fd1-b64b-42d6-ab23-7f608734a33c","revision":0,"last_node_id":10,"last_link_id":15,"nodes":[{"id":4,"type":"Runware Image Masking","pos":[351.7330627441406,132.90028381347656],"size":[315,194],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","type":"IMAGE","link":13},{"localized_name":"Detection Model","name":"Detection Model","type":"COMBO","widget":{"name":"Detection Model"},"link":null},{"localized_name":"Confidence","name":"Confidence","type":"FLOAT","widget":{"name":"Confidence"},"link":null},{"localized_name":"Max Detections","name":"Max Detections","type":"INT","widget":{"name":"Max Detections"},"link":null},{"localized_name":"Mask Padding","name":"Mask Padding","type":"INT","widget":{"name":"Mask Padding"},"link":null},{"localized_name":"Mask Blur","name":"Mask Blur","type":"INT","widget":{"name":"Mask Blur"},"link":null}],"outputs":[{"localized_name":"Image","name":"Image","type":"IMAGE","slot_index":0,"links":[10]},{"localized_name":"Mask Preview","name":"Mask Preview","type":"IMAGE","links":null},{"localized_name":"Mask","name":"Mask","type":"MASK","slot_index":2,"links":[9]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Masking"},"widgets_values":["face_yolov8n",0.25,6,4,4],"bgcolor":"#6c5ce7"},{"id":1,"type":"PreviewImage","pos":[357.7220764160156,-258.3918762207031],"size":[307.82305908203125,331.447509765625],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":14}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":9,"type":"Runware Image Inference","pos":[-90.6838607788086,-18.858673095703125],"size":[400,702],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":15},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":null},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[13,14]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Inference"},"widgets_values":["a man standing in the woods and looking serious, wide screen, zoomed out, realistic, HD, details","",false,"Disabled","Square (512x512)",512,512,4,"Default",6.5,978926131154186,"randomize",0,0.8,false,32,1],"bgcolor":"#5345bf"},{"id":2,"type":"Runware Model Search","pos":[-98.89546203613281,-274.89739990234375],"size":[315,146],"flags":{"collapsed":false},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","slot_index":0,"links":[15]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","runware:100@1 (Flux Schnell)",false],"bgcolor":"#6c5ce7"},{"id":6,"type":"PreviewImage","pos":[1151.2889404296875,-264.380859375],"size":[552.3806762695312,564.0267944335938],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":11}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":7,"type":"Runware Model Search","pos":[691.1177978515625,-322.2765808105469],"size":[315,154],"flags":{"collapsed":false},"order":1,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","slot_index":0,"links":[12]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","runware:5@1 (SD3)",false],"bgcolor":"#6c5ce7"},{"id":8,"type":"Runware Image Inference","pos":[707.689208984375,-79.01905822753906],"size":[400,702],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":12},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":null},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":10},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":9},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[11]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Inference"},"widgets_values":["_blank_","",false,"Disabled","Square (512x512)",512,512,4,"Default",6.5,266085310106644,"randomize",0,0.8,true,32,1],"bgcolor":"#5345bf"}],"links":[[9,4,2,8,8,"MASK"],[10,4,0,8,7,"IMAGE"],[11,8,0,6,0,"IMAGE"],[12,7,0,8,0,"RUNWAREMODEL"],[13,9,0,4,0,"IMAGE"],[14,9,0,1,0,"IMAGE"],[15,2,0,9,0,"RUNWAREMODEL"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.001808834538306,"offset":[297.7428493270482,318.5858364206063]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Basic_Background_Removal.json b/workflows/Runware_Basic_Background_Removal.json index 81bcb83..e0d7329 100644 --- a/workflows/Runware_Basic_Background_Removal.json +++ b/workflows/Runware_Basic_Background_Removal.json @@ -1 +1 @@ -{"last_node_id":5,"last_link_id":6,"nodes":[{"id":5,"type":"Runware Background Removal","pos":[481.94317626953125,-300.1940612792969],"size":[333.4461364746094,178],"flags":{},"order":1,"mode":0,"inputs":[{"name":"Image","type":"IMAGE","link":5}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[6],"slot_index":0}],"properties":{"Node name for S&R":"Runware Background Removal"},"widgets_values":[false,false,false,240,10,10],"bgcolor":"#6c5ce7"},{"id":2,"type":"PreviewImage","pos":[479.01971435546875,-74.14266204833984],"size":[343.48712158203125,246],"flags":{},"order":2,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":6}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"}},{"id":1,"type":"LoadImage","pos":[91.22550201416016,-285.5789794921875],"size":[363.7179260253906,459.1794128417969],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[5],"slot_index":0},{"name":"MASK","type":"MASK","links":null}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["r2rs1PrivateFLux.png","image"]}],"links":[[5,1,0,5,0,"IMAGE"],[6,5,0,2,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.0263162364614136,"offset":[464.15888590882696,406.82531520554556]}},"version":0.4} \ No newline at end of file +{"id":"1c4ca198-5330-4190-8be6-2c7eb8a0abcb","revision":0,"last_node_id":5,"last_link_id":6,"nodes":[{"id":2,"type":"PreviewImage","pos":[479.01971435546875,-74.14266204833984],"size":[343.48712158203125,246],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":6}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":1,"type":"LoadImage","pos":[91.22550201416016,-285.5789794921875],"size":[363.7179260253906,459.1794128417969],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","slot_index":0,"links":[5]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["bee-on-flower-1024x576.jpg","image"]},{"id":5,"type":"Runware Background Removal","pos":[481.94317626953125,-300.1940612792969],"size":[333.4461364746094,226],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","type":"IMAGE","link":5},{"localized_name":"Model","name":"Model","type":"COMBO","widget":{"name":"Model"},"link":null},{"localized_name":"Post Process Mask","name":"Post Process Mask","shape":7,"type":"BOOLEAN","widget":{"name":"Post Process Mask"},"link":null},{"localized_name":"Return Only Mask","name":"Return Only Mask","shape":7,"type":"BOOLEAN","widget":{"name":"Return Only Mask"},"link":null},{"localized_name":"Alpha Matting","name":"Alpha Matting","shape":7,"type":"BOOLEAN","widget":{"name":"Alpha Matting"},"link":null},{"localized_name":"Alpha Matting Foreground Threshold","name":"Alpha Matting Foreground Threshold","shape":7,"type":"INT","widget":{"name":"Alpha Matting Foreground Threshold"},"link":null},{"localized_name":"Alpha Matting Background Threshold","name":"Alpha Matting Background Threshold","shape":7,"type":"INT","widget":{"name":"Alpha Matting Background Threshold"},"link":null},{"localized_name":"Alpha Matting Erode Size","name":"Alpha Matting Erode Size","shape":7,"type":"INT","widget":{"name":"Alpha Matting Erode Size"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","shape":7,"type":"COMBO","widget":{"name":"outputFormat"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","slot_index":0,"links":[6]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Background Removal"},"widgets_values":["RemBG 1.4",false,false,240,10,10,10,"WEBP"],"bgcolor":"#6c5ce7"}],"links":[[5,1,0,5,0,"IMAGE"],[6,5,0,2,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.0263162364614136,"offset":[464.15888590882696,406.82531520554556]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Basic_Image_Inference.json b/workflows/Runware_Basic_Image_Inference.json index ffff184..f170630 100644 --- a/workflows/Runware_Basic_Image_Inference.json +++ b/workflows/Runware_Basic_Image_Inference.json @@ -1 +1 @@ -{"last_node_id":79,"last_link_id":52,"nodes":[{"id":76,"type":"PreviewImage","pos":[890.173095703125,-194.4432373046875],"size":[442.2727355957031,469.6363525390625],"flags":{},"order":3,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":51}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":78,"type":"Runware Model Search","pos":[5.445709228515625,-324.625],"size":[315,130],"flags":{"collapsed":false},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"Runware Model","type":"RUNWAREMODEL","links":[52],"slot_index":0}],"properties":{"Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","runware:100@1 (Flux Schnell)"],"bgcolor":"#6c5ce7"},{"id":77,"type":"Runware Image Inference","pos":[401.4457092285156,-337.6249694824219],"size":[462.1487731933594,735.272705078125],"flags":{},"order":2,"mode":0,"inputs":[{"name":"Model","type":"RUNWAREMODEL","link":52},{"name":"Lora","type":"RUNWARELORA","link":null,"shape":7},{"name":"ControlNet","type":"RUNWARECONTROLNET","link":null,"shape":7},{"name":"Refiner","type":"RUNWAREREFINER","link":null,"shape":7},{"name":"seedImage","type":"IMAGE","link":null,"shape":7},{"name":"maskImage","type":"MASK","link":null,"shape":7},{"name":"Embeddings","type":"RUNWAREEMBEDDING","link":null,"shape":7},{"name":"VAE","type":"RUNWAREVAE","link":null,"shape":7}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[51],"slot_index":0}],"properties":{"Node name for S&R":"Runware Image Inference"},"widgets_values":["abstract, 1girl, solo, 25 years old, perfect face, close view, dark purple hair, spiked hair, ear piercing, spiked collar, black hoodie, winter, blush, shy smile, portrait, face focus, depth of field, looking at viewer, cinematic lighting, studio quality, symmetrical centered symmetrical artwork, style of krenz cushart, Jordan Grimmer, donato giancola, wlop, artgerm, ultra delicate minimalism, ilya kuvshinov, rossdraws, Norman Rockwell,","","Disabled","Square (512x512)",512,512,4,"Default",6.5,1115161573669306,"randomize",2,0.8,false,32,1],"bgcolor":"#6c5ce7"},{"id":79,"type":"Note","pos":[-61.95427703857422,-118.02499389648438],"size":[432.87603759765625,351.79339599609375],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[],"properties":{},"widgets_values":["Hello there! ๐ŸŒŸ\n\nWelcome to the Runware Image Inference workflow. ๐ŸŽ‰\n\nHereโ€™s what you need to know to get started: \n\n- You will need to add your API Key just run the workflow and you will be prompted for that, if you don't have an account you can create a new account and you will get \"Free Credits\" to start :)\n\n- You can explore and search from a variety of models. ๐Ÿง โœจ\n \n- Remember to adjust the settings appropriately to achieve the desired results. โš™๏ธโœ…\n\n- Donโ€™t forget to tweak the \"steps\" for optimal performance. ๐Ÿ› ๏ธ๐Ÿ“ˆ\n\nThe best part? We support a wide range of models, so dive in and have fun experimenting! ๐Ÿš€โค๏ธ\n\ntip: Press \"Ctrl + Alt + E\" To Automatically Enhance Your Prompt\n\ntip: You can reset the model, lora search by clearing the search input and everything will get back to defaults."],"color":"#432","bgcolor":"#653"}],"links":[[51,77,0,76,0,"IMAGE"],[52,78,0,77,0,"RUNWAREMODEL"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.9090909090909091,"offset":[533.379187367039,448.4813355624458]}},"version":0.4} \ No newline at end of file +{"id":"0685c977-b8ed-4ce4-8b4c-d8463ed12b69","revision":0,"last_node_id":81,"last_link_id":54,"nodes":[{"id":79,"type":"Note","pos":[-61.95427703857422,-118.02499389648438],"size":[432.87603759765625,351.79339599609375],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[],"properties":{},"widgets_values":["Hello there! ๐ŸŒŸ\n\nWelcome to the Runware Image Inference workflow. ๐ŸŽ‰\n\nHereโ€™s what you need to know to get started: \n\n- You will need to add your API Key just run the workflow and you will be prompted for that, if you don't have an account you can create a new account and you will get \"Free Credits\" to start :)\n\n- You can explore and search from a variety of models. ๐Ÿง โœจ\n \n- Remember to adjust the settings appropriately to achieve the desired results. โš™๏ธโœ…\n\n- Donโ€™t forget to tweak the \"steps\" for optimal performance. ๐Ÿ› ๏ธ๐Ÿ“ˆ\n\nThe best part? We support a wide range of models, so dive in and have fun experimenting! ๐Ÿš€โค๏ธ\n\ntip: Press \"Ctrl + Alt + E\" To Automatically Enhance Your Prompt\n\ntip: You can reset the model, lora search by clearing the search input and everything will get back to defaults."],"color":"#432","bgcolor":"#653"},{"id":80,"type":"Runware Model Search","pos":[10.674552917480469,-324.2225646972656],"size":[270,154],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","links":[53]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","runware:100@1 (Flux Schnell)",false],"bgcolor":"#5345bf"},{"id":81,"type":"Runware Image Inference","pos":[417.9415283203125,-324.19512939453125],"size":[400,702],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":53},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":null},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[54]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Inference"},"widgets_values":["abstract, 1girl, solo, 25 years old, perfect face, close view, dark purple hair, spiked hair, ear piercing, spiked collar, black hoodie, winter, blush, shy smile, portrait, face focus, depth of field, looking at viewer, cinematic lighting, studio quality, symmetrical centered symmetrical artwork, style of krenz cushart, Jordan Grimmer, donato giancola, wlop, artgerm, ultra delicate minimalism, ilya kuvshinov, rossdraws, Norman Rockwell,","",false,"Disabled","Square (512x512)",512,512,4,"Default",6.5,1000872977079112,"randomize",0,0.8,false,32,1],"bgcolor":"#5345bf"},{"id":76,"type":"PreviewImage","pos":[898.580322265625,-254.4684295654297],"size":[442.2727355957031,469.6363525390625],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":54}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]}],"links":[[53,80,0,81,0,"RUNWAREMODEL"],[54,81,0,76,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.6830134553650705,"offset":[797.8148281873525,656.532978726509]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Basic_Image_Inference_IPAdapter.json b/workflows/Runware_Basic_Image_Inference_IPAdapter.json index 317f508..5b256a7 100644 --- a/workflows/Runware_Basic_Image_Inference_IPAdapter.json +++ b/workflows/Runware_Basic_Image_Inference_IPAdapter.json @@ -1 +1 @@ -{"last_node_id":5,"last_link_id":4,"nodes":[{"id":5,"type":"LoadImage","pos":[-748.4779663085938,-211.1426239013672],"size":[328.1999816894531,359.1000061035156],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"IMAGE","localized_name":"IMAGE","type":"IMAGE","links":[4]},{"name":"MASK","localized_name":"MASK","type":"MASK","links":null}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["ggasdw.jpg","image"]},{"id":1,"type":"PreviewImage","pos":[134.92190551757812,-558.04248046875],"size":[716.7999877929688,717.5],"flags":{},"order":4,"mode":0,"inputs":[{"name":"images","localized_name":"images","type":"IMAGE","link":1}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":3,"type":"Runware Model Search","pos":[-731.1779174804688,-549.74267578125],"size":[310.5999755859375,154],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[{"name":"Runware Model","localized_name":"Runware Model","type":"RUNWAREMODEL","links":[2]}],"properties":{"Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","civitai:101055@128078 (SDXL v1.0 VAE fix)",false],"bgcolor":"#5345bf"},{"id":4,"type":"Runware IPAdapter","pos":[-736.3779907226562,-344.2424011230469],"size":[317.4000244140625,82],"flags":{},"order":2,"mode":0,"inputs":[{"name":"Reference Image","localized_name":"Reference Image","type":"IMAGE","link":4}],"outputs":[{"name":"IPAdapter","localized_name":"IPAdapter","type":"RUNWAREIPAdapter","links":[3]}],"properties":{"Node name for S&R":"Runware IPAdapter"},"widgets_values":["IP Adapter SDXL",1],"bgcolor":"#5345bf"},{"id":2,"type":"Runware Image Inference","pos":[-375.5780334472656,-558.5426635742188],"size":[487,719],"flags":{},"order":3,"mode":0,"inputs":[{"name":"Model","localized_name":"Model","type":"RUNWAREMODEL","link":2},{"name":"Lora","localized_name":"Lora","type":"RUNWARELORA","shape":7,"link":null},{"name":"IPAdapters","localized_name":"IPAdapters","type":"RUNWAREIPAdapter","shape":7,"link":3},{"name":"ControlNet","localized_name":"ControlNet","type":"RUNWARECONTROLNET","shape":7,"link":null},{"name":"Refiner","localized_name":"Refiner","type":"RUNWAREREFINER","shape":7,"link":null},{"name":"seedImage","localized_name":"seedImage","type":"IMAGE","shape":7,"link":null},{"name":"maskImage","localized_name":"maskImage","type":"MASK","shape":7,"link":null},{"name":"Embeddings","localized_name":"Embeddings","type":"RUNWAREEMBEDDING","shape":7,"link":null},{"name":"VAE","localized_name":"VAE","type":"RUNWAREVAE","shape":7,"link":null}],"outputs":[{"name":"IMAGE","localized_name":"IMAGE","type":"IMAGE","links":[1]}],"properties":{"Node name for S&R":"Runware Image Inference"},"widgets_values":["A stylish young woman standing confidently in a vibrant urban setting, wearing a fitted black t-shirt with a bold white skull design, detailed with subtle cracks and shading, paired with ripped blue jeans and combat boots, her hair flowing naturally in the wind, cinematic lighting, highly detailed, photorealistic, 8k resolution, sharp focus, rich textures, dynamic composition, soft bokeh background, vivid colors, intricate details on the skull graphic","blurry, low resolution, distorted, overexposed, underexposed, grainy, artifacts, extra limbs, missing details, poorly drawn hands, unnatural poses, dull colors, oversaturated, flat background, text errors, watermark, crowded composition, deformed face","Disabled","Square HD (1024x1024)",1024,1024,50,"DPM++ 2M SDE",8,599278031163006,"randomize",0,0.8,false,32,4],"bgcolor":"#5345bf"}],"links":[[1,2,0,1,0,"IMAGE"],[2,3,0,2,0,"RUNWAREMODEL"],[3,4,0,2,2,"RUNWAREIPAdapter"],[4,5,0,4,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.9090909090909091,"offset":[1022.3779979367997,667.6425882124634]}},"version":0.4} \ No newline at end of file +{"id":"11fe9cb1-b192-41ba-a3fc-317ce3c4073a","revision":0,"last_node_id":10,"last_link_id":8,"nodes":[{"id":1,"type":"PreviewImage","pos":[119.37579345703125,235.99424743652344],"size":[716.7999877929688,717.5],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":5}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":10,"type":"Runware Model Search","pos":[-771.3780517578125,240.72744750976562],"size":[270,154],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","links":[8]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","SDXL 1.0","Base Model","civitai:101055@128078 (SD XL v1.0 VAE fix)",false],"bgcolor":"#5345bf"},{"id":9,"type":"LoadImage","pos":[-780.408203125,664.1911010742188],"size":[274.080078125,314],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[7]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["bee-on-flower-1024x576.jpg","image"]},{"id":7,"type":"Runware Image Inference","pos":[-358.8656311035156,239.78627014160156],"size":[400,702],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":8},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":6},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[5]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Inference"},"widgets_values":["a bee sitting on a sunflower","blurry, low resolution, distorted, overexposed, underexposed, grainy, artifacts, extra limbs, missing details, poorly drawn hands, unnatural poses, dull colors, oversaturated, flat background, text errors, watermark, crowded composition, deformed face",false,"Disabled","Square HD (1024x1024)",1024,1024,8,"Default",6.5,650347983151081,"randomize",0,0.8,false,32,1],"bgcolor":"#5345bf"},{"id":8,"type":"Runware IPAdapter","pos":[-770.7137451171875,459.3330383300781],"size":[270,82],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Reference Image","name":"Reference Image","type":"IMAGE","link":7},{"localized_name":"Model","name":"Model","type":"COMBO","widget":{"name":"Model"},"link":null},{"localized_name":"weight","name":"weight","type":"FLOAT","widget":{"name":"weight"},"link":null}],"outputs":[{"localized_name":"IPAdapter","name":"IPAdapter","type":"RUNWAREIPAdapter","links":[6]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware IPAdapter"},"widgets_values":["IP Adapter SDXL",1],"bgcolor":"#5345bf"}],"links":[[5,7,0,1,0,"IMAGE"],[6,8,0,7,4,"RUNWAREIPAdapter"],[7,9,0,8,0,"IMAGE"],[8,10,0,7,0,"RUNWAREMODEL"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.9090909090909091,"offset":[1465.1065135618003,727.8933694624607]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Basic_Image_Inference_Lora.json b/workflows/Runware_Basic_Image_Inference_Lora.json index c6e4e6c..f24c1be 100644 --- a/workflows/Runware_Basic_Image_Inference_Lora.json +++ b/workflows/Runware_Basic_Image_Inference_Lora.json @@ -1 +1 @@ -{"last_node_id":4,"last_link_id":3,"nodes":[{"id":3,"type":"Runware Model Search","pos":[-170.87696838378906,-336.2454528808594],"size":[315,130],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"Runware Model","type":"RUNWAREMODEL","links":[2],"slot_index":0}],"properties":{"Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","runware:100@1 (Flux Schnell)"],"bgcolor":"#6c5ce7"},{"id":4,"type":"Runware Lora Search","pos":[-162.10772705078125,-143.322265625],"size":[315,196],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[{"name":"Runware Lora","type":"RUNWARELORA","links":[3],"slot_index":0}],"properties":{"Node name for S&R":"Runware Lora Search"},"widgets_values":["niji","FLUX.1-Schnell","Lora","civitai:768440@859463 (Flux-Better-Art-With-Niji Schnell)",1,null],"bgcolor":"#6c5ce7"},{"id":1,"type":"PreviewImage","pos":[627.12255859375,-365.4764404296875],"size":[458.46142578125,484.9228515625],"flags":{},"order":3,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":1}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":2,"type":"Runware Image Inference","pos":[191.5845489501953,-370.3477478027344],"size":[411.69232177734375,628.3076782226562],"flags":{},"order":2,"mode":0,"inputs":[{"name":"Model","type":"RUNWAREMODEL","link":2},{"name":"Lora","type":"RUNWARELORA","link":3,"shape":7},{"name":"ControlNet","type":"RUNWARECONTROLNET","link":null,"shape":7},{"name":"Refiner","type":"RUNWAREREFINER","link":null,"shape":7},{"name":"seedImage","type":"IMAGE","link":null,"shape":7},{"name":"maskImage","type":"MASK","link":null,"shape":7},{"name":"Embeddings","type":"RUNWAREEMBEDDING","link":null,"shape":7},{"name":"VAE","type":"RUNWAREVAE","link":null,"shape":7}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[1],"slot_index":0}],"properties":{"Node name for S&R":"Runware Image Inference"},"widgets_values":["a guy wearing red glasses, anime, pixiv top monthly, trending on artstation, cinematic, danbooru, zerochan art, kyoto animation, niji","","Disabled","Square (512x512)",512,512,4,"Default",6.5,258656211183721,"randomize",0,0.8,false,32,1],"bgcolor":"#6c5ce7"}],"links":[[1,2,0,1,0,"IMAGE"],[2,3,0,2,0,"RUNWAREMODEL"],[3,4,0,2,1,"RUNWARELORA"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.0263162364614136,"offset":[606.4152342088262,463.3381111055449]}},"version":0.4} \ No newline at end of file +{"id":"59466c89-26f9-4dbc-b5ef-4e9fa3a8548d","revision":0,"last_node_id":5,"last_link_id":6,"nodes":[{"id":3,"type":"PreviewImage","pos":[1535.00341796875,318.8830261230469],"size":[458.46142578125,484.9228515625],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":6}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":1,"type":"Runware Model Search","pos":[737.00390625,348.114013671875],"size":[315,154],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","slot_index":0,"links":[5]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","runware:100@1 (Flux Schnell)",false],"bgcolor":"#6c5ce7"},{"id":2,"type":"Runware Lora Search","pos":[691.5504760742188,663.3223876953125],"size":[315,232],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Lora Search","name":"Lora Search","type":"STRING","widget":{"name":"Lora Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"LoraType","name":"LoraType","type":"COMBO","widget":{"name":"LoraType"},"link":null},{"localized_name":"LoraList","name":"LoraList","type":"COMBO","widget":{"name":"LoraList"},"link":null},{"localized_name":"weight","name":"weight","type":"FLOAT","widget":{"name":"weight"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Lora","name":"Runware Lora","type":"RUNWARELORA","slot_index":0,"links":[4]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Lora Search"},"widgets_values":["niji","FLUX.1-Schnell","Lora","civitai:768440@859463 (Flux-Better-Art-With-Niji Schnell)",1,null,""],"bgcolor":"#6c5ce7"},{"id":5,"type":"Runware Image Inference","pos":[1102.623046875,337.1484375],"size":[400,702],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":5},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":4},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":null},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[6]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Inference"},"widgets_values":["a person riding a racing car, anime, pixiv top monthly, trending on artstation, cinematic, danbooru, zerochan art, kyoto animation, niji","",false,"Disabled","Square (512x512)",512,512,4,"Default",6.5,161553185960308,"randomize",0,0.8,false,32,1],"bgcolor":"#5345bf"}],"links":[[4,2,0,5,2,"RUNWARELORA"],[5,1,0,5,0,"RUNWAREMODEL"],[6,5,0,3,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.0113031613501786,"offset":[-266.21279046474365,-171.81510416666663]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Basic_Image_Upscaling.json b/workflows/Runware_Basic_Image_Upscaling.json index c995eec..dc7b9ed 100644 --- a/workflows/Runware_Basic_Image_Upscaling.json +++ b/workflows/Runware_Basic_Image_Upscaling.json @@ -1 +1 @@ -{"last_node_id":5,"last_link_id":3,"nodes":[{"id":4,"type":"Runware Image Upscaler","pos":[139.44570922851562,-279.625],"size":[315,58],"flags":{},"order":1,"mode":0,"inputs":[{"name":"Image","type":"IMAGE","link":3}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[2],"slot_index":0}],"properties":{"Node name for S&R":"Runware Image Upscaler"},"widgets_values":[4],"bgcolor":"#6c5ce7"},{"id":1,"type":"PreviewImage","pos":[497.6885986328125,-288.6935729980469],"size":[593.5640869140625,614.8204345703125],"flags":{},"order":2,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":2}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":5,"type":"LoadImage","pos":[140.2388916015625,-145.11216735839844],"size":[320.84613037109375,411.43585205078125],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[3],"slot_index":0},{"name":"MASK","type":"MASK","links":null}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["qwd2s.jpg","image"]}],"links":[[2,4,0,1,0,"IMAGE"],[3,5,0,4,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.0263162364614136,"offset":[452.4665833088276,458.4663183555447]}},"version":0.4} \ No newline at end of file +{"id":"99bb8e7d-3e8e-42a4-90cc-c383ca9ecc3b","revision":0,"last_node_id":5,"last_link_id":3,"nodes":[{"id":4,"type":"Runware Image Upscaler","pos":[139.44570922851562,-279.625],"size":[315,58],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","type":"IMAGE","link":3},{"localized_name":"upscaleFactor","name":"upscaleFactor","type":"INT","widget":{"name":"upscaleFactor"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","slot_index":0,"links":[2]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Upscaler"},"widgets_values":[4],"bgcolor":"#6c5ce7"},{"id":1,"type":"PreviewImage","pos":[497.6885986328125,-288.6935729980469],"size":[593.5640869140625,614.8204345703125],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":2}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":5,"type":"LoadImage","pos":[140.2388916015625,-145.11216735839844],"size":[320.84613037109375,411.43585205078125],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","slot_index":0,"links":[3]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["bee-on-flower-1024x576.jpg","image"]}],"links":[[2,4,0,1,0,"IMAGE"],[3,5,0,4,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.0263162364614136,"offset":[452.4665833088276,458.4663183555447]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_ControlNet.json b/workflows/Runware_ControlNet.json index 5a1a6dd..4f4865d 100644 --- a/workflows/Runware_ControlNet.json +++ b/workflows/Runware_ControlNet.json @@ -1 +1 @@ -{"last_node_id":6,"last_link_id":6,"nodes":[{"id":4,"type":"LoadImage","pos":[0.36829668283462524,-416.1068420410156],"size":[401.6533203125,314],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[4],"slot_index":0},{"name":"MASK","type":"MASK","links":null}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["qwd2qdasf.jpg","image"]},{"id":6,"type":"Runware Model Search","pos":[426.5971374511719,-462.02398681640625],"size":[315,130],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[{"name":"Runware Model","type":"RUNWAREMODEL","links":[5],"slot_index":0}],"properties":{"Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","runware:101@1 (Flux Dev)"],"bgcolor":"#6c5ce7"},{"id":5,"type":"Runware ControlNet PreProcessor","pos":[-3.6244616508483887,-163.56333923339844],"size":[390.5999755859375,226],"flags":{},"order":2,"mode":0,"inputs":[{"name":"Image","type":"IMAGE","link":4}],"outputs":[{"name":"GUIDE IMAGE","type":"IMAGE","links":[6],"slot_index":0}],"properties":{"Node name for S&R":"Runware ControlNet PreProcessor"},"widgets_values":["OpenPose",true,100,200,false,"Square HD (1024x1024)",1024,1024],"bgcolor":"#6c5ce7"},{"id":1,"type":"PreviewImage","pos":[843.8425903320312,-253.40106201171875],"size":[593.306640625,620.9238891601562],"flags":{},"order":5,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":1}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":3,"type":"Runware ControlNet","pos":[4.361094951629639,107.9453125],"size":[380.4000244140625,274],"flags":{},"order":3,"mode":0,"inputs":[{"name":"Guide Image","type":"IMAGE","link":6}],"outputs":[{"name":"Runware ControlNet","type":"RUNWARECONTROLNET","links":[2],"slot_index":0}],"properties":{"Node name for S&R":"Runware ControlNet"},"widgets_values":["","FLUX.1-Dev","Open Pose","runware:29@1 (ControlNetFlux (CNFlux) instantx-union)",-1,0,-1,65,"balanced",0.8],"bgcolor":"#6c5ce7"},{"id":2,"type":"Runware Image Inference","pos":[415.61724853515625,-281.35052490234375],"size":[413.9747009277344,664.8140258789062],"flags":{},"order":4,"mode":0,"inputs":[{"name":"Model","type":"RUNWAREMODEL","link":5},{"name":"Lora","type":"RUNWARELORA","link":null,"shape":7},{"name":"ControlNet","type":"RUNWARECONTROLNET","link":2,"shape":7},{"name":"Refiner","type":"RUNWAREREFINER","link":null,"shape":7},{"name":"seedImage","type":"IMAGE","link":null,"shape":7},{"name":"maskImage","type":"MASK","link":null,"shape":7},{"name":"Embeddings","type":"RUNWAREEMBEDDING","link":null,"shape":7},{"name":"VAE","type":"RUNWAREVAE","link":null,"shape":7}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[1],"slot_index":0}],"properties":{"Node name for S&R":"Runware Image Inference"},"widgets_values":["a girl wearing a red dress, with curly hair, very anime!!! fine - face, pretty face, realistic shaded perfect face, fine details by stanley artgerm lau, wlop, rossdraws, james jean, andrei riabovitchev, marc simonetti, and sakimichan, trending on artstation","","Disabled","Square HD (1024x1024)",1024,1024,30,"Default",2.5,164154394413164,"randomize",0,0.8,false,32,1],"bgcolor":"#6c5ce7"}],"links":[[1,2,0,1,0,"IMAGE"],[2,3,0,2,2,"RUNWARECONTROLNET"],[4,4,0,5,0,"IMAGE"],[5,6,0,2,0,"RUNWAREMODEL"],[6,5,0,3,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.001808834538306,"offset":[326.04127153857115,393.5849410747678]}},"version":0.4} \ No newline at end of file +{"id":"300b3b0a-efd2-4ad4-8b1f-3eb86e9d6788","revision":0,"last_node_id":7,"last_link_id":9,"nodes":[{"id":5,"type":"Runware ControlNet PreProcessor","pos":[-3.6244616508483887,-163.56333923339844],"size":[390.5999755859375,226],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","type":"IMAGE","link":4},{"localized_name":"PreProcessor Type","name":"PreProcessor Type","type":"COMBO","widget":{"name":"PreProcessor Type"},"link":null},{"localized_name":"Include Hands And Faces [ OpenPose ]","name":"Include Hands And Faces [ OpenPose ]","type":"BOOLEAN","widget":{"name":"Include Hands And Faces [ OpenPose ]"},"link":null},{"localized_name":"Canny Low Threshold","name":"Canny Low Threshold","type":"INT","widget":{"name":"Canny Low Threshold"},"link":null},{"localized_name":"Canny High Threshold","name":"Canny High Threshold","type":"INT","widget":{"name":"Canny High Threshold"},"link":null},{"localized_name":"Image Resizing","name":"Image Resizing","type":"BOOLEAN","widget":{"name":"Image Resizing"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null}],"outputs":[{"localized_name":"GUIDE IMAGE","name":"GUIDE IMAGE","type":"IMAGE","slot_index":0,"links":[6]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware ControlNet PreProcessor"},"widgets_values":["OpenPose",true,100,200,false,"Square HD (1024x1024)",1024,1024],"bgcolor":"#6c5ce7"},{"id":1,"type":"PreviewImage","pos":[843.8425903320312,-253.40106201171875],"size":[593.306640625,620.9238891601562],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":8}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":3,"type":"Runware ControlNet","pos":[4.361094951629639,107.9453125],"size":[380.4000244140625,298],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"Guide Image","name":"Guide Image","type":"IMAGE","link":6},{"localized_name":"ControlNet Search","name":"ControlNet Search","type":"STRING","widget":{"name":"ControlNet Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ControlNetType","name":"ControlNetType","type":"COMBO","widget":{"name":"ControlNetType"},"link":null},{"localized_name":"ControlNetList","name":"ControlNetList","type":"COMBO","widget":{"name":"ControlNetList"},"link":null},{"localized_name":"startStep","name":"startStep","type":"INT","widget":{"name":"startStep"},"link":null},{"localized_name":"startStepPercentage","name":"startStepPercentage","type":"INT","widget":{"name":"startStepPercentage"},"link":null},{"localized_name":"endStep","name":"endStep","type":"INT","widget":{"name":"endStep"},"link":null},{"localized_name":"endStepPercentage","name":"endStepPercentage","type":"INT","widget":{"name":"endStepPercentage"},"link":null},{"localized_name":"Control Mode","name":"Control Mode","type":"COMBO","widget":{"name":"Control Mode"},"link":null},{"localized_name":"weight","name":"weight","type":"FLOAT","widget":{"name":"weight"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware ControlNet","name":"Runware ControlNet","type":"RUNWARECONTROLNET","slot_index":0,"links":[7]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware ControlNet"},"widgets_values":["","FLUX.1-Dev","Open Pose","runware:29@1 (ControlNetFlux (CNFlux) instantx-union)",-1,0,-1,65,"balanced",0.8,false],"bgcolor":"#6c5ce7"},{"id":4,"type":"LoadImage","pos":[-178.80958557128906,-539.5570068359375],"size":[401.6533203125,314],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","slot_index":0,"links":[4]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["ComfyUI_temp_ydflc_00001_.png","image"]},{"id":6,"type":"Runware Model Search","pos":[426.5971374511719,-462.02398681640625],"size":[315,154],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","slot_index":0,"links":[9]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","runware:101@1 (Flux Dev)",false],"bgcolor":"#6c5ce7"},{"id":7,"type":"Runware Image Inference","pos":[412.5996398925781,-202.7342987060547],"size":[400,702],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":9},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":null},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":7},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[8]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Inference"},"widgets_values":["a girl wearing a red dress, with curly hair, very anime!!! fine - face, pretty face, realistic shaded perfect face, fine details by stanley artgerm lau, wlop, rossdraws, james jean, andrei riabovitchev, marc simonetti, and sakimichan, trending on artstation","",false,"Disabled","Square (512x512)",512,512,4,"Default",6.5,689553616834499,"randomize",0,0.8,false,32,1],"bgcolor":"#5345bf"}],"links":[[4,4,0,5,0,"IMAGE"],[6,5,0,3,0,"IMAGE"],[7,3,0,7,5,"RUNWARECONTROLNET"],[8,7,0,1,0,"IMAGE"],[9,6,0,7,0,"RUNWAREMODEL"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.0113031613501786,"offset":[432.70426966627656,544.3060767631831]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Image_Inference_Captioning.json b/workflows/Runware_Image_Inference_Captioning.json index c89efde..6cb0989 100644 --- a/workflows/Runware_Image_Inference_Captioning.json +++ b/workflows/Runware_Image_Inference_Captioning.json @@ -1 +1 @@ -{"last_node_id":14,"last_link_id":13,"nodes":[{"id":11,"type":"Runware Image Inference","pos":[831.05029296875,183.88824462890625],"size":[400,602],"flags":{},"order":3,"mode":0,"inputs":[{"name":"Model","type":"RUNWAREMODEL","link":13},{"name":"Lora","type":"RUNWARELORA","link":null,"shape":7},{"name":"ControlNet","type":"RUNWARECONTROLNET","link":null,"shape":7},{"name":"Refiner","type":"RUNWAREREFINER","link":null,"shape":7},{"name":"seedImage","type":"IMAGE","link":null,"shape":7},{"name":"maskImage","type":"MASK","link":null,"shape":7},{"name":"Embeddings","type":"RUNWAREEMBEDDING","link":null,"shape":7},{"name":"VAE","type":"RUNWAREVAE","link":null,"shape":7},{"name":"positivePrompt","type":"STRING","link":11,"widget":{"name":"positivePrompt"}}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[10],"slot_index":0}],"properties":{"Node name for S&R":"Runware Image Inference"},"widgets_values":["","","Disabled","Square (512x512)",512,512,4,"Default",6.5,229459996454677,"randomize",0,0.9,false,32,1],"bgcolor":"#6c5ce7"},{"id":14,"type":"Runware Model Search","pos":[497.6798095703125,175.9790802001953],"size":[315,130],"flags":{"collapsed":false},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"Runware Model","type":"RUNWAREMODEL","links":[13],"slot_index":0}],"properties":{"Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","runware:100@1 (Flux Schnell)"],"bgcolor":"#6c5ce7"},{"id":10,"type":"LoadImage","pos":[241.08689880371094,350.3967590332031],"size":[236.30767822265625,325.9602966308594],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[12],"slot_index":0},{"name":"MASK","type":"MASK","links":null}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["qwd2s.jpg","image"]},{"id":13,"type":"Runware Image Caption","pos":[513.2827758789062,373.235595703125],"size":[278.0941162109375,190.92190551757812],"flags":{},"order":2,"mode":0,"inputs":[{"name":"Image","type":"IMAGE","link":12}],"outputs":[{"name":"IMAGE PROMPT","type":"STRING","links":[11],"slot_index":0}],"properties":{"Node name for S&R":"Runware Image Caption"},"widgets_values":[false,"cartoon girl with a skull on her and a city in the background, profile picture 1024px, ๐ŸŽ€ ๐ŸงŸ ๐Ÿ“ ๐Ÿงš, very short curly hair, comicbook art, icon for an ai app, dressed black hoodie, e-girl, anime colours"],"bgcolor":"#6c5ce7"},{"id":12,"type":"PreviewImage","pos":[1269.0423583984375,236.072021484375],"size":[515.3893432617188,538.380126953125],"flags":{},"order":4,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":10}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]}],"links":[[10,11,0,12,0,"IMAGE"],[11,13,0,11,8,"STRING"],[12,10,0,13,0,"IMAGE"],[13,14,0,11,0,"RUNWAREMODEL"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.026316236461414,"offset":[-218.03843002977476,-95.65528646365456]}},"version":0.4} \ No newline at end of file +{"id":"fd6e0d9a-f881-402b-90a5-8abe2c06994c","revision":0,"last_node_id":15,"last_link_id":16,"nodes":[{"id":12,"type":"PreviewImage","pos":[1269.0423583984375,236.072021484375],"size":[515.3893432617188,538.380126953125],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":16}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":13,"type":"Runware Image Caption","pos":[508.9840393066406,446.2952575683594],"size":[278.0941162109375,190.92190551757812],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","type":"IMAGE","link":12},{"localized_name":"Always Recaption","name":"Always Recaption","type":"BOOLEAN","widget":{"name":"Always Recaption"},"link":null},{"localized_name":"Image Description","name":"Image Description","shape":7,"type":"STRING","widget":{"name":"Image Description"},"link":null}],"outputs":[{"localized_name":"IMAGE PROMPT","name":"IMAGE PROMPT","type":"STRING","slot_index":0,"links":[14]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Caption"},"widgets_values":[true,"anime boy in a hoodie looking at the city, ios app icon, wearing black modern clothes, anime girl portrait profile, highly [ detailed ], cute girl with short pink hair, single panel, mysterious breath, extreme high detail, no mask, exploitable image, official artwork"],"bgcolor":"#6c5ce7"},{"id":10,"type":"LoadImage","pos":[241.08689880371094,350.3967590332031],"size":[236.30767822265625,325.9602966308594],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","slot_index":0,"links":[12]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["ComfyUI_temp_bnisp_00003_.png","image"]},{"id":14,"type":"Runware Model Search","pos":[497.6798095703125,175.9790802001953],"size":[315,154],"flags":{"collapsed":false},"order":1,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","slot_index":0,"links":[15]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","runware:100@1 (Flux Schnell)",false],"bgcolor":"#6c5ce7"},{"id":15,"type":"Runware Image Inference","pos":[840.4598999023438,195.86773681640625],"size":[400,702],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":15},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":null},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":14},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[16]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Inference"},"widgets_values":["","",false,"Disabled","Square (512x512)",512,512,4,"Default",6.5,908430489860419,"randomize",0,0.8,false,32,1],"bgcolor":"#5345bf"}],"links":[[12,10,0,13,0,"IMAGE"],[14,13,0,15,11,"STRING"],[15,14,0,15,0,"RUNWAREMODEL"],[16,15,0,12,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.026316236461414,"offset":[187.2756963297953,-115.72288589676005]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Image_Inference_Embedding.json b/workflows/Runware_Image_Inference_Embedding.json index 4007012..21d06db 100644 --- a/workflows/Runware_Image_Inference_Embedding.json +++ b/workflows/Runware_Image_Inference_Embedding.json @@ -1 +1 @@ -{"last_node_id":5,"last_link_id":4,"nodes":[{"id":1,"type":"Runware Model Search","pos":[438.6363220214844,72.83195495605469],"size":[315,130],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"Runware Model","type":"RUNWAREMODEL","links":[2],"slot_index":0}],"properties":{"Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","civitai:133005@288982 (SDXL Juggernaut XL V8)"],"bgcolor":"#6c5ce7"},{"id":3,"type":"PreviewImage","pos":[1289.6943359375,108.03620147705078],"size":[682.38671875,714.5171508789062],"flags":{},"order":3,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":1}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"}},{"id":4,"type":"Runware Image Inference","pos":[791.6922607421875,67.16986083984375],"size":[444.3775939941406,702.0932006835938],"flags":{},"order":2,"mode":0,"inputs":[{"name":"Model","type":"RUNWAREMODEL","link":2},{"name":"Lora","type":"RUNWARELORA","link":null,"shape":7},{"name":"ControlNet","type":"RUNWARECONTROLNET","link":null,"shape":7},{"name":"Refiner","type":"RUNWAREREFINER","link":null,"shape":7},{"name":"seedImage","type":"IMAGE","link":null,"shape":7},{"name":"maskImage","type":"MASK","link":null,"shape":7},{"name":"Embeddings","type":"RUNWAREEMBEDDING","link":4,"shape":7},{"name":"VAE","type":"RUNWAREVAE","link":null,"shape":7}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[1],"slot_index":0}],"properties":{"Node name for S&R":"Runware Image Inference"},"widgets_values":["analog film photo photograph of a majestic penguin breaking free from a intricately wrapped Christmas gift box, showcasing a delightful mix of festive and wildlife elements. Capture the penguin's exhilarating moment as it bursts forth from the box, its tuxedo-like feathers glistening with dew and holiday cheer.\nCompositionally, frame the scene from a low angle, placing the gift box at the top of the image, allowing the viewer's gaze to follow the penguin's trajectory upward. Employ a shallow depth of field, blurring the surrounding wrapping paper and gift embellishments to emphasize the penguin's heroic breakout. Soft, warm artificial lighting will add a cozy atmosphere, while also highlighting the festive colors and textures of the box.\nanalog film photo photograph of a majestic penguin breaking free from a intricately wrapped Christmas gift box, showcasing a delightful mix of festive and wildlife elements. Capture the penguin's exhilarating moment as it bursts forth from the box, its tuxedo-like feathers glistening with dew and holiday cheer. Compositionally, frame the scene from a low angle, placing the gift box at the top of the image, allowing the viewer's gaze to follow the penguin's trajectory upward. Employ a shallow depth of field, blurring the surrounding wrapping paper and gift embellishments to emphasize the penguin's heroic breakout.Artistically, draw inspiration from the whimsical world of children's illustrations and classic animated films, where penguins are often depicted in charming, expressive poses. The overall mood should be one of joyful abandon, capturing the magic and surprise of the moment when the penguin finally achieves its freedom.\nTechnical specifications: Resolution: 4096 x 3040 pixels; Aspect Ratio: 16:9; File Format: JPEG or PNG; Camera Angle: Low-angle shot with a slight tilt upwards","unaestheticXL2v10","Disabled","Square HD (1024x1024)",1024,1024,30,"DPM++ 2M SDE Karras",8,754029311997231,"fixed",0,0.8,false,32,1],"bgcolor":"#6c5ce7"},{"id":5,"type":"Runware Embedding Search","pos":[430.3169860839844,265.5909729003906],"size":[315,172],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[{"name":"Runware Embedding","type":"RUNWAREEMBEDDING","links":[4],"slot_index":0}],"properties":{"Node name for S&R":"Runware Embedding Search"},"widgets_values":["","SDXL 1.0","civitai:119032@302265 (unaestheticXL | Negative TI 2v10)",1,null],"bgcolor":"#6c5ce7"}],"links":[[1,4,0,3,0,"IMAGE"],[2,1,0,4,0,"RUNWAREMODEL"],[4,5,0,4,6,"RUNWAREEMBEDDING"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.7710865788590636,"offset":[212.93107457927547,155.16249707244557]}},"version":0.4} \ No newline at end of file +{"id":"82f5c161-b613-43b0-b926-eac388682be5","revision":0,"last_node_id":6,"last_link_id":7,"nodes":[{"id":3,"type":"PreviewImage","pos":[1289.6943359375,108.03620147705078],"size":[682.38671875,714.5171508789062],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":7}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":5,"type":"Runware Embedding Search","pos":[430.3169860839844,265.5909729003906],"size":[315,208],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Embedding Search","name":"Embedding Search","type":"STRING","widget":{"name":"Embedding Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"EmbeddingList","name":"EmbeddingList","type":"COMBO","widget":{"name":"EmbeddingList"},"link":null},{"localized_name":"weight","name":"weight","type":"FLOAT","widget":{"name":"weight"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Embedding","name":"Runware Embedding","type":"RUNWAREEMBEDDING","slot_index":0,"links":[5]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Embedding Search"},"widgets_values":["","SDXL 1.0","civitai:119032@302265 (unaestheticXL | Negative TI 2v10)",1,null,""],"bgcolor":"#6c5ce7"},{"id":1,"type":"Runware Model Search","pos":[438.6363220214844,72.83195495605469],"size":[315,154],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","slot_index":0,"links":[6]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","civitai:133005@288982 (SDXL Juggernaut XL V8)",false],"bgcolor":"#6c5ce7"},{"id":6,"type":"Runware Image Inference","pos":[813.2713623046875,92.08910369873047],"size":[400,702],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":6},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":null},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":5},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[7]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Inference"},"widgets_values":["analog film photo photograph of a majestic penguin breaking free from a intricately wrapped Christmas gift box, showcasing a delightful mix of festive and wildlife elements. Capture the penguin's exhilarating moment as it bursts forth from the box, its tuxedo-like feathers glistening with dew and holiday cheer.\nCompositionally, frame the scene from a low angle, placing the gift box at the top of the image, allowing the viewer's gaze to follow the penguin's trajectory upward. Employ a shallow depth of field, blurring the surrounding wrapping paper and gift embellishments to emphasize the penguin's heroic breakout. Soft, warm artificial lighting will add a cozy atmosphere, while also highlighting the festive colors and textures of the box.\nanalog film photo photograph of a majestic penguin breaking free from a intricately wrapped Christmas gift box, showcasing a delightful mix of festive and wildlife elements. Capture the penguin's exhilarating moment as it bursts forth from the box, its tuxedo-like feathers glistening with dew and holiday cheer. Compositionally, frame the scene from a low angle, placing the gift box at the top of the image, allowing the viewer's gaze to follow the penguin's trajectory upward. Employ a shallow depth of field, blurring the surrounding wrapping paper and gift embellishments to emphasize the penguin's heroic breakout.Artistically, draw inspiration from the whimsical world of children's illustrations and classic animated films, where penguins are often depicted in charming, expressive poses. The overall mood should be one of joyful abandon, capturing the magic and surprise of the moment when the penguin finally achieves its freedom.\nTechnical specifications: Resolution: 4096 x 3040 pixels; Aspect Ratio: 16:9; File Format: JPEG or PNG; Camera Angle: Low-angle shot with a slight tilt upwards","",false,"Disabled","Square (512x512)",512,512,4,"Default",6.5,1095800291650440,"randomize",0,0.8,false,32,1],"bgcolor":"#5345bf"}],"links":[[5,5,0,6,9,"RUNWAREEMBEDDING"],[6,1,0,6,0,"RUNWAREMODEL"],[7,6,0,3,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.7710865788590636,"offset":[237.68814372480028,39.94106077606969]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Image_Inference_VAE.json b/workflows/Runware_Image_Inference_VAE.json index cb00458..8673eee 100644 --- a/workflows/Runware_Image_Inference_VAE.json +++ b/workflows/Runware_Image_Inference_VAE.json @@ -1 +1 @@ -{"last_node_id":6,"last_link_id":3,"nodes":[{"id":4,"type":"Runware Model Search","pos":[201.85939025878906,-115.19313049316406],"size":[315,130],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"Runware Model","type":"RUNWAREMODEL","links":[2],"slot_index":0}],"properties":{"Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","civitai:133005@288982 (SDXL Juggernaut XL V8)"],"bgcolor":"#6c5ce7"},{"id":5,"type":"Runware VAE Search","pos":[197.4307403564453,76.13542938232422],"size":[315,106],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[{"name":"Runware VAE","type":"RUNWAREVAE","links":[3],"slot_index":0}],"properties":{"Node name for S&R":"Runware VAE Search"},"widgets_values":["","SDXL 1.0","civitai:357506@399618 (Grey VAE For SDXL v1)"],"bgcolor":"#6c5ce7"},{"id":3,"type":"PreviewImage","pos":[1052.9173583984375,-79.98888397216797],"size":[682.38671875,714.5171508789062],"flags":{},"order":3,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":1}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"}},{"id":2,"type":"Runware Image Inference","pos":[554.9153442382812,-120.855224609375],"size":[444.3775939941406,702.0932006835938],"flags":{},"order":2,"mode":0,"inputs":[{"name":"Model","type":"RUNWAREMODEL","link":2},{"name":"Lora","type":"RUNWARELORA","link":null,"shape":7},{"name":"ControlNet","type":"RUNWARECONTROLNET","link":null,"shape":7},{"name":"Refiner","type":"RUNWAREREFINER","link":null,"shape":7},{"name":"seedImage","type":"IMAGE","link":null,"shape":7},{"name":"maskImage","type":"MASK","link":null,"shape":7},{"name":"Embeddings","type":"RUNWAREEMBEDDING","link":null,"shape":7},{"name":"VAE","type":"RUNWAREVAE","link":3,"shape":7}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[1],"slot_index":0}],"properties":{"Node name for S&R":"Runware Image Inference"},"widgets_values":["analog film photo photograph of a majestic penguin breaking free from a intricately wrapped Christmas gift box, showcasing a delightful mix of festive and wildlife elements. Capture the penguin's exhilarating moment as it bursts forth from the box, its tuxedo-like feathers glistening with dew and holiday cheer.\nCompositionally, frame the scene from a low angle, placing the gift box at the top of the image, allowing the viewer's gaze to follow the penguin's trajectory upward. Employ a shallow depth of field, blurring the surrounding wrapping paper and gift embellishments to emphasize the penguin's heroic breakout. Soft, warm artificial lighting will add a cozy atmosphere, while also highlighting the festive colors and textures of the box.\nanalog film photo photograph of a majestic penguin breaking free from a intricately wrapped Christmas gift box, showcasing a delightful mix of festive and wildlife elements. Capture the penguin's exhilarating moment as it bursts forth from the box, its tuxedo-like feathers glistening with dew and holiday cheer. Compositionally, frame the scene from a low angle, placing the gift box at the top of the image, allowing the viewer's gaze to follow the penguin's trajectory upward. Employ a shallow depth of field, blurring the surrounding wrapping paper and gift embellishments to emphasize the penguin's heroic breakout.Artistically, draw inspiration from the whimsical world of children's illustrations and classic animated films, where penguins are often depicted in charming, expressive poses. The overall mood should be one of joyful abandon, capturing the magic and surprise of the moment when the penguin finally achieves its freedom.\nTechnical specifications: Resolution: 4096 x 3040 pixels; Aspect Ratio: 16:9; File Format: JPEG or PNG; Camera Angle: Low-angle shot with a slight tilt upwards","","Disabled","Square HD (1024x1024)",1024,1024,30,"DPM++ 2M SDE Karras",8,754029311997231,"fixed",0,0.8,false,32,1],"bgcolor":"#6c5ce7"}],"links":[[1,2,0,3,0,"IMAGE"],[2,4,0,2,0,"RUNWAREMODEL"],[3,5,0,2,7,"RUNWAREVAE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.7710865788590636,"offset":[520.2895561011256,319.8651432887956]}},"version":0.4} \ No newline at end of file +{"id":"b4cb7172-9146-4726-bd3d-3c4146fe3a46","revision":0,"last_node_id":7,"last_link_id":6,"nodes":[{"id":4,"type":"Runware Model Search","pos":[201.85939025878906,-115.19313049316406],"size":[315,154],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","slot_index":0,"links":[5]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","civitai:133005@288982 (SDXL Juggernaut XL V8)",false],"bgcolor":"#6c5ce7"},{"id":5,"type":"Runware VAE Search","pos":[197.4307403564453,76.13542938232422],"size":[315,130],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"VAE Search","name":"VAE Search","type":"STRING","widget":{"name":"VAE Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VAEList","name":"VAEList","type":"COMBO","widget":{"name":"VAEList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware VAE","name":"Runware VAE","type":"RUNWAREVAE","slot_index":0,"links":[4]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware VAE Search"},"widgets_values":["","SDXL 1.0","civitai:357506@399618 (Grey VAE For SDXL v1)",false],"bgcolor":"#6c5ce7"},{"id":3,"type":"PreviewImage","pos":[1052.9173583984375,-79.98888397216797],"size":[682.38671875,714.5171508789062],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":6}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":7,"type":"Runware Image Inference","pos":[591.83349609375,-97.21100616455078],"size":[400,702],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":5},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":null},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":4},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[6]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Inference"},"widgets_values":["analog film photo photograph of a majestic penguin breaking free from a intricately wrapped Christmas gift box, showcasing a delightful mix of festive and wildlife elements. Capture the penguin's exhilarating moment as it bursts forth from the box, its tuxedo-like feathers glistening with dew and holiday cheer.\nCompositionally, frame the scene from a low angle, placing the gift box at the top of the image, allowing the viewer's gaze to follow the penguin's trajectory upward. Employ a shallow depth of field, blurring the surrounding wrapping paper and gift embellishments to emphasize the penguin's heroic breakout. Soft, warm artificial lighting will add a cozy atmosphere, while also highlighting the festive colors and textures of the box.\nanalog film photo photograph of a majestic penguin breaking free from a intricately wrapped Christmas gift box, showcasing a delightful mix of festive and wildlife elements. Capture the penguin's exhilarating moment as it bursts forth from the box, its tuxedo-like feathers glistening with dew and holiday cheer. Compositionally, frame the scene from a low angle, placing the gift box at the top of the image, allowing the viewer's gaze to follow the penguin's trajectory upward. Employ a shallow depth of field, blurring the surrounding wrapping paper and gift embellishments to emphasize the penguin's heroic breakout.Artistically, draw inspiration from the whimsical world of children's illustrations and classic animated films, where penguins are often depicted in charming, expressive poses. The overall mood should be one of joyful abandon, capturing the magic and surprise of the moment when the penguin finally achieves its freedom.\nTechnical specifications: Resolution: 4096 x 3040 pixels; Aspect Ratio: 16:9; File Format: JPEG or PNG; Camera Angle: Low-angle shot with a slight tilt upwards","",false,"Disabled","Square (512x512)",512,512,4,"Default",6.5,953496337938783,"randomize",0,0.8,false,32,1],"bgcolor":"#5345bf"}],"links":[[4,5,0,7,10,"RUNWAREVAE"],[5,4,0,7,0,"RUNWAREMODEL"],[6,7,0,3,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.7710865788590636,"offset":[519.8032293898569,319.8651432887956]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Image_to_Video.json b/workflows/Runware_Image_to_Video.json new file mode 100644 index 0000000..0825d15 --- /dev/null +++ b/workflows/Runware_Image_to_Video.json @@ -0,0 +1 @@ +{"id":"5cf854c6-824e-4e51-995c-a2c146c44890","revision":0,"last_node_id":4,"last_link_id":3,"nodes":[{"id":1,"type":"SaveVideo","pos":[899.7476806640625,376.3740539550781],"size":[270,368],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":1},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":2,"type":"Runware Video Model Search","pos":[92.353759765625,376.9104309082031],"size":[270,170],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[2]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","KlingAI","urn:air:video:klingai:2@2 (KlingAI V1.5 Pro)",false],"bgcolor":"#5345bf"},{"id":3,"type":"Runware Video Inference","pos":[442.46539306640625,371.56787109375],"size":[400,490],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":2},{"localized_name":"firstImage","name":"firstImage","shape":7,"type":"IMAGE","link":3},{"localized_name":"lastImage","name":"lastImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"DICT","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"includeCost","name":"includeCost","type":"BOOLEAN","widget":{"name":"includeCost"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[1]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Video Inference"},"widgets_values":["Fish swimming in the ocean.","",false,"Disabled",false,1024,576,5,24,"mp4",1,true,912757191070980,"randomize"],"bgcolor":"#5345bf"},{"id":4,"type":"LoadImage","pos":[98.24242401123047,606.15234375],"size":[274.080078125,314],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[3]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["fish.webp","image"]}],"links":[[1,3,0,1,0,"VIDEO"],[2,2,0,3,0,"RUNWAREVIDEOMODEL"],[3,4,0,3,1,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8690867073308224,"offset":[229.4903040722438,-225.59848018737068]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Outpainting.json b/workflows/Runware_Outpainting.json index a00ef28..8120e83 100644 --- a/workflows/Runware_Outpainting.json +++ b/workflows/Runware_Outpainting.json @@ -1 +1 @@ -{"id":"64d5095f-01d6-48a2-b4b2-a936b07f976e","revision":0,"last_node_id":8,"last_link_id":4,"nodes":[{"id":1,"type":"LoadImage","pos":[-307.6441955566406,-225.01039123535156],"size":[334.1299743652344,422.8999938964844],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[3]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["21sdfgas.jpg","image"]},{"id":2,"type":"Runware Image Inference","pos":[67.45526885986328,-502.1003112792969],"size":[400,702],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":1},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":2},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":null},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":3},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[4]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"Node name for S&R":"Runware Image Inference"},"widgets_values":["__blank__","",false,"Disabled","Custom",1536,1536,30,"Default",3,779910374698910,"randomize",0,0.8,false,32,1],"bgcolor":"#5345bf"},{"id":7,"type":"PreviewImage","pos":[500.6356201171875,-499.6804504394531],"size":[696.1900024414062,697.1900634765625],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":4}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":4,"type":"Runware Outpaint","pos":[-299.12445068359375,-431.9206848144531],"size":[315,154],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Top","name":"Top","type":"INT","widget":{"name":"Top"},"link":null},{"localized_name":"Right","name":"Right","type":"INT","widget":{"name":"Right"},"link":null},{"localized_name":"Bottom","name":"Bottom","type":"INT","widget":{"name":"Bottom"},"link":null},{"localized_name":"Left","name":"Left","type":"INT","widget":{"name":"Left"},"link":null},{"localized_name":"Blur","name":"Blur","type":"INT","widget":{"name":"Blur"},"link":null}],"outputs":[{"localized_name":"Outpaint Settings","name":"Outpaint Settings","type":"RUNWAREOUTPAINT","links":[2]}],"properties":{"Node name for S&R":"Runware Outpaint"},"widgets_values":[256,256,256,256,0],"bgcolor":"#5345bf"},{"id":5,"type":"Runware Model Search","pos":[-289.864501953125,-477.9004211425781],"size":[342.6799621582031,154],"flags":{"collapsed":true},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","links":[1]}],"properties":{"Node name for S&R":"Runware Model Search"},"widgets_values":["","FLUX.1-Dev","Inpainting Model","runware:102@1 (FLUX Dev Fill 1)",false],"bgcolor":"#5345bf"}],"links":[[1,5,0,2,0,"RUNWAREMODEL"],[2,4,0,2,3,"RUNWAREOUTPAINT"],[3,1,0,2,7,"IMAGE"],[4,2,0,7,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":1,"offset":[512.6044598246152,589.6904716404363]},"frontendVersion":"1.17.11"},"version":0.4} \ No newline at end of file +{"id":"64d5095f-01d6-48a2-b4b2-a936b07f976e","revision":0,"last_node_id":9,"last_link_id":8,"nodes":[{"id":7,"type":"PreviewImage","pos":[500.6356201171875,-499.6804504394531],"size":[696.1900024414062,697.1900634765625],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":7}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":4,"type":"Runware Outpaint","pos":[-299.12445068359375,-431.9206848144531],"size":[315,154],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Top","name":"Top","type":"INT","widget":{"name":"Top"},"link":null},{"localized_name":"Right","name":"Right","type":"INT","widget":{"name":"Right"},"link":null},{"localized_name":"Bottom","name":"Bottom","type":"INT","widget":{"name":"Bottom"},"link":null},{"localized_name":"Left","name":"Left","type":"INT","widget":{"name":"Left"},"link":null},{"localized_name":"Blur","name":"Blur","type":"INT","widget":{"name":"Blur"},"link":null}],"outputs":[{"localized_name":"Outpaint Settings","name":"Outpaint Settings","type":"RUNWAREOUTPAINT","links":[6]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Outpaint"},"widgets_values":[256,256,256,256,0],"bgcolor":"#5345bf"},{"id":5,"type":"Runware Model Search","pos":[-289.864501953125,-477.9004211425781],"size":[342.6799621582031,154],"flags":{"collapsed":true},"order":1,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","links":[8]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","FLUX.1-Dev","Inpainting Model","runware:102@1 (FLUX Dev Fill 1)",false],"bgcolor":"#5345bf"},{"id":9,"type":"Runware Image Inference","pos":[62.334991455078125,-479.0713195800781],"size":[400,702],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":8},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":6},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":null},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":5},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[7]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Inference"},"widgets_values":["__blank__","",false,"Disabled","Square (512x512)",512,512,4,"Default",6.5,442831902334417,"randomize",0,0.8,false,32,1],"bgcolor":"#5345bf"},{"id":1,"type":"LoadImage","pos":[-307.6441955566406,-225.01039123535156],"size":[334.1299743652344,422.8999938964844],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[5]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["bee-on-flower-1024x576.jpg","image"]}],"links":[[5,1,0,9,7,"IMAGE"],[6,4,0,9,3,"RUNWAREOUTPAINT"],[7,9,0,7,0,"IMAGE"],[8,5,0,9,0,"RUNWAREMODEL"]],"groups":[],"config":{},"extra":{"ds":{"scale":1,"offset":[781.7548504496152,526.4736747654363]},"frontendVersion":"1.17.11"},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_PhotoMaker_v2.json b/workflows/Runware_PhotoMaker_v2.json index 2503548..6d50a4a 100644 --- a/workflows/Runware_PhotoMaker_v2.json +++ b/workflows/Runware_PhotoMaker_v2.json @@ -1 +1 @@ -{"last_node_id":15,"last_link_id":19,"nodes":[{"id":10,"type":"LoadImage","pos":[-11.610055923461914,-225.45167541503906],"size":[324.9819641113281,419.80859375],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[15],"slot_index":0},{"name":"MASK","type":"MASK","links":null}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["ggasdw.jpg","image"]},{"id":11,"type":"LoadImage","pos":[28.317718505859375,-268.37384033203125],"size":[315,314],"flags":{"collapsed":true},"order":1,"mode":0,"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[17],"slot_index":0},{"name":"MASK","type":"MASK","links":null}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["qwd2qdasf.jpg","image"]},{"id":12,"type":"LoadImage","pos":[172.05775451660156,-269.3723449707031],"size":[315,314],"flags":{"collapsed":true},"order":2,"mode":0,"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[16]},{"name":"MASK","type":"MASK","links":null}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["qwd2s.jpg","image"]},{"id":13,"type":"Runware Model Search","pos":[108.17327117919922,-327.2672424316406],"size":[315,130],"flags":{"collapsed":true},"order":3,"mode":0,"inputs":[],"outputs":[{"name":"Runware Model","type":"RUNWAREMODEL","links":[18],"slot_index":0}],"properties":{"Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","civitai:133005@288982 (SDXL Juggernaut XL V8)"],"bgcolor":"#6c5ce7"},{"id":7,"type":"PreviewImage","pos":[797.9251098632812,-290.334716796875],"size":[528.4240112304688,550.0520629882812],"flags":{},"order":5,"mode":0,"inputs":[{"name":"images","type":"IMAGE","link":19}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":15,"type":"Runware PhotoMaker V2","pos":[343.7464599609375,-301.3145751953125],"size":[400,569.9061279296875],"flags":{},"order":4,"mode":0,"inputs":[{"name":"Model","type":"RUNWAREMODEL","link":18},{"name":"Image 1","type":"IMAGE","link":15},{"name":"Image 2","type":"IMAGE","link":16,"shape":7},{"name":"Image 3","type":"IMAGE","link":17,"shape":7},{"name":"Image 4","type":"IMAGE","link":null,"shape":7}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[19],"slot_index":0}],"properties":{"Node name for S&R":"Runware PhotoMaker V2"},"widgets_values":["img of a girl, solo, perfect face, close view, dark purple hair, spiked hair, ear piercing, spiked collar, black hoodie, winter, blush, shy smile, portrait, face focus, depth of field, looking at viewer, blushy white studio, by Makoto Shinkai, Stanley Artgerm Lau, WLOP, Rossdraws, James Jean, Andrei Riabovitchev, Marc Simonetti, krenz cushart, Sakimichan, D&D trending on ArtStation, digital art","nsfw, bad quality, deformed, out of frame, watermark, text","Disabled","Fantasy art","Square HD (1024x1024)",1024,1024,25,"Default",6.5,15,0,722752061398001,"randomize",1],"bgcolor":"#6c5ce7"}],"links":[[15,10,0,15,1,"IMAGE"],[16,12,0,15,2,"IMAGE"],[17,11,0,15,3,"IMAGE"],[18,13,0,15,0,"RUNWAREMODEL"],[19,15,0,7,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.001808834538306,"offset":[394.91668730768725,442.4964682151535]}},"version":0.4} \ No newline at end of file +{"id":"f3c0860a-c5f6-493f-aefa-441d4f9fe72c","revision":0,"last_node_id":15,"last_link_id":19,"nodes":[{"id":13,"type":"Runware Model Search","pos":[108.17327117919922,-327.2672424316406],"size":[315,130],"flags":{"collapsed":true},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","slot_index":0,"links":[18]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","civitai:133005@288982 (SDXL Juggernaut XL V8)",false],"bgcolor":"#6c5ce7"},{"id":7,"type":"PreviewImage","pos":[797.9251098632812,-290.334716796875],"size":[528.4240112304688,550.0520629882812],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":19}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":15,"type":"Runware PhotoMaker V2","pos":[343.7464599609375,-301.3145751953125],"size":[400,569.9061279296875],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":18},{"localized_name":"Image 1","name":"Image 1","type":"IMAGE","link":15},{"localized_name":"Image 2","name":"Image 2","shape":7,"type":"IMAGE","link":16},{"localized_name":"Image 3","name":"Image 3","shape":7,"type":"IMAGE","link":17},{"localized_name":"Image 4","name":"Image 4","shape":7,"type":"IMAGE","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"style","name":"style","type":"COMBO","widget":{"name":"style"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"strength","name":"strength","type":"INT","widget":{"name":"strength"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","slot_index":0,"links":[19]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware PhotoMaker V2"},"widgets_values":["img of a girl, solo, perfect face, close view, dark purple hair, spiked hair, ear piercing, spiked collar, black hoodie, winter, blush, shy smile, portrait, face focus, depth of field, looking at viewer, blushy white studio, by Makoto Shinkai, Stanley Artgerm Lau, WLOP, Rossdraws, James Jean, Andrei Riabovitchev, Marc Simonetti, krenz cushart, Sakimichan, D&D trending on ArtStation, digital art","nsfw, bad quality, deformed, out of frame, watermark, text","Disabled","Fantasy art","Square HD (1024x1024)",1024,1024,25,"Default",6.5,15,0,722752061398001,"randomize",1],"bgcolor":"#6c5ce7"},{"id":11,"type":"LoadImage","pos":[3.653348684310913,-194.65565490722656],"size":[315,314],"flags":{"collapsed":true},"order":3,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","slot_index":0,"links":[17]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["2.jpeg","image"]},{"id":12,"type":"LoadImage","pos":[47.969730377197266,-254.5281219482422],"size":[315,314],"flags":{"collapsed":true},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[16]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["1.jpeg","image"]},{"id":10,"type":"LoadImage","pos":[-17.844871520996094,48.39480209350586],"size":[324.9819641113281,419.80859375],"flags":{"collapsed":true},"order":2,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","slot_index":0,"links":[15]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["ggasdw.jpg","image"]}],"links":[[15,10,0,15,1,"IMAGE"],[16,12,0,15,2,"IMAGE"],[17,11,0,15,3,"IMAGE"],[18,13,0,15,0,"RUNWAREMODEL"],[19,15,0,7,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.001808834538306,"offset":[394.5423643958986,442.4964682151535]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Text_To_Video.json.json b/workflows/Runware_Text_To_Video.json.json new file mode 100644 index 0000000..f2554aa --- /dev/null +++ b/workflows/Runware_Text_To_Video.json.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","revision":0,"last_node_id":22,"last_link_id":22,"nodes":[{"id":6,"type":"SaveVideo","pos":[462.1513671875,86.5411376953125],"size":[270,249.80087280273438],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":21},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":12,"type":"Runware Video Model Search","pos":[-456.0134582519531,87.07750701904297],"size":[270,170],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[22]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","Seedance","urn:air:video:bytedance:2@1 (Seedance 1.0 Pro)",false],"bgcolor":"#5345bf"},{"id":19,"type":"Runware Video Inference","pos":[4.869094371795654,81.73494720458984],"size":[400,490],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":22},{"localized_name":"firstImage","name":"firstImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"lastImage","name":"lastImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"DICT","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"includeCost","name":"includeCost","type":"BOOLEAN","widget":{"name":"includeCost"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[21]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Video Inference"},"widgets_values":["Ant on a leaf.","",false,"Disabled",false,1024,576,5,24,"mp4",1,true,282988745551878,"randomize"],"bgcolor":"#5345bf"}],"links":[[21,19,0,6,0,"VIDEO"],[22,12,0,19,0,"RUNWAREVIDEOMODEL"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8690867155630664,"offset":[667.374262491862,64.52210987635999]}},"version":0.4} \ No newline at end of file From 087ff66c498a1bfc0ef3b14b7441dd5e631e4e51 Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Mon, 4 Aug 2025 22:44:24 -0400 Subject: [PATCH 3/6] Fix README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6726bd5..2fba480 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ Hereโ€™s a breakdown of the amazing nodes included in this integration: - **Runware IPAdapter**: Use reference images to guide the style and content of generated images. ๐Ÿ–Œ๏ธ - **Runware IPAdapters Combine**: Combine multiple IP-Adapter inputs for sophisticated image conditioning. ๐Ÿ”— - +๐ŸŽฌ - **Runware Text to Video**: Generate videos from text prompts using advanced AI models. ๐ŸŽฅ - **Runware Image to Video**: Create videos from reference images with optional text guidance. ๐Ÿ–ผ๏ธโžก๏ธ๐ŸŽฅ From 4d74f59820ad59af31176536118380f7e9f0374c Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Wed, 6 Aug 2025 11:03:24 -0400 Subject: [PATCH 4/6] Fix model mapping for FLux Krea --- clientlibs/types.js | 2 +- modules/modelSearch.py | 2 +- modules/utils/runwareUtils.py | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/clientlibs/types.js b/clientlibs/types.js index 1ac924b..16f4a0a 100644 --- a/clientlibs/types.js +++ b/clientlibs/types.js @@ -13,7 +13,7 @@ const DEFAULT_MODELS_ARCH_LIST = { "All": "all", "FLUX.1-Schnell": "flux1s", "FLUX.1-Dev": "flux1d", - "FLUX.1 Krea": "flux1k", + "FLUX.1-Krea": "flux1d", "Pony": "pony", "SD 1.5": "sd1x", "SD 1.5 Hyper": "sdhyper", diff --git a/modules/modelSearch.py b/modules/modelSearch.py index dc4ff5e..c2066a5 100644 --- a/modules/modelSearch.py +++ b/modules/modelSearch.py @@ -10,7 +10,7 @@ class modelSearch: "All", "FLUX.1-Schnell", "FLUX.1-Dev", - "FLUX.1 Krea", + "FLUX.1-Krea", "Pony", "SD 1.5", "SD 1.5 Hyper", diff --git a/modules/utils/runwareUtils.py b/modules/utils/runwareUtils.py index a538e6a..d7d5186 100644 --- a/modules/utils/runwareUtils.py +++ b/modules/utils/runwareUtils.py @@ -26,7 +26,7 @@ IMAGE_CACHE_FILE = BASEFOLDER / "imagesCache.json" if not IMAGE_CACHE_FILE.exists(): with open(IMAGE_CACHE_FILE, "w") as f: - print("[Debugging] Initializing images cache...") + print("[Runware] Initializing images cache...") json.dump({}, f) RUNWARE_REMBG_OUTPUT_FORMATS = { @@ -53,7 +53,7 @@ def generalRequestWrapper(recaller, *args, **kwargs): raise else: cooldown = RETRY_COOLDOWNS[attempt] - print(f"[Warning] Error API Request Failed! Retrying in {cooldown} seconds... (Attempt {attempt+1}/{MAX_RETRIES})") + print(f"[Runware] Error API Request Failed! Retrying in {cooldown} seconds... (Attempt {attempt+1}/{MAX_RETRIES})") time.sleep(cooldown) continue return False @@ -484,7 +484,7 @@ class VideoObject: while True: try: response = requests.get(self.video_url, stream=True, timeout=30) - print(f"[Debugging] Response: {response}") + print(response) if response.status_code == 422: From 655118a9a1cddbf1a3de1d9d7dfa51311df49fe5 Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Mon, 1 Sep 2025 13:40:10 -0400 Subject: [PATCH 5/6] Remove prefixes bug from video model identifiers --- modules/videoModelSearch.py | 118 +++++++++--------- ...nware_Basic_Image_Inference_IPAdapter.json | 2 +- workflows/Runware_Image_to_Video.json | 2 +- workflows/Runware_Text_To_Video.json.json | 2 +- 4 files changed, 62 insertions(+), 62 deletions(-) diff --git a/modules/videoModelSearch.py b/modules/videoModelSearch.py index 038bf08..1934319 100644 --- a/modules/videoModelSearch.py +++ b/modules/videoModelSearch.py @@ -2,98 +2,98 @@ class videoModelSearch: # Define the video models by architecture with their default dimensions VIDEO_MODELS = { "KlingAI": [ - "urn:air:video:klingai:1@2 (KlingAI V1.0 Pro)", - "urn:air:video:klingai:1@1 (KlingAI V1 Standard)", - "urn:air:video:klingai:2@2 (KlingAI V1.5 Pro)", - "urn:air:video:klingai:2@1 (KlingAI V1.5 Standard)", - "urn:air:video:klingai:3@1 (KlingAI V1.6 Standard)", - "urn:air:video:klingai:3@2 (KlingAI V1.6 Pro)", - "urn:air:video:klingai:4@3 (KlingAI V2.1 Master)", - "urn:air:video:klingai:5@1 (KlingAI V2.1 Standard (I2V))", - "urn:air:video:klingai:5@2 (KlingAI V2.1 Pro (I2V))", - "urn:air:video:klingai:5@3 (KlingAI V2.0 Master)", + "klingai:1@2 (KlingAI V1.0 Pro)", + "klingai:1@1 (KlingAI V1 Standard)", + "klingai:2@2 (KlingAI V1.5 Pro)", + "klingai:2@1 (KlingAI V1.5 Standard)", + "klingai:3@1 (KlingAI V1.6 Standard)", + "klingai:3@2 (KlingAI V1.6 Pro)", + "klingai:4@3 (KlingAI V2.1 Master)", + "klingai:5@1 (KlingAI V2.1 Standard (I2V))", + "klingai:5@2 (KlingAI V2.1 Pro (I2V))", + "klingai:5@3 (KlingAI V2.0 Master)", ], "Veo": [ - "urn:air:video:google:2@0 (Veo 2.0)", - "urn:air:video:google:3@0 (Veo 3.0)", - "urn:air:video:google:3@1 (Veo 3.0 Fast)", + "google:2@0 (Veo 2.0)", + "google:3@0 (Veo 3.0)", + "google:3@1 (Veo 3.0 Fast)", ], "Seedance": [ - "urn:air:video:bytedance:2@1 (Seedance 1.0 Pro)", - "urn:air:video:bytedance:1@1 (Seedance 1.0 Lite)", + "bytedance:2@1 (Seedance 1.0 Pro)", + "bytedance:1@1 (Seedance 1.0 Lite)", ], "MiniMax": [ - "urn:air:video:minimax:1@1 (MiniMax 01 Base)", - "urn:air:video:minimax:2@1 (MiniMax 01 Director)", - "urn:air:video:minimax:2@3 (MiniMax I2V 01 Live)", - "urn:air:video:minimax:3@1 (MiniMax 02 Hailuo)", + "minimax:1@1 (MiniMax 01 Base)", + "minimax:2@1 (MiniMax 01 Director)", + "minimax:2@3 (MiniMax I2V 01 Live)", + "minimax:3@1 (MiniMax 02 Hailuo)", ], "PixVerse": [ - "urn:air:video:pixverse:1@1 (PixVerse v3.5)", - "urn:air:video:pixverse:1@2 (PixVerse v4)", - "urn:air:video:pixverse:1@3 (PixVerse v4.5)", + "pixverse:1@1 (PixVerse v3.5)", + "pixverse:1@2 (PixVerse v4)", + "pixverse:1@3 (PixVerse v4.5)", ], "Vidu": [ - "urn:air:video:vidu:1@0 (Vidu Q1 Classic)", - "urn:air:video:vidu:1@1 (Vidu Q1)", - "urn:air:video:vidu:1@5 (Vidu 1.5)", - "urn:air:video:vidu:2@0 (Vidu 2.0)", + "vidu:1@0 (Vidu Q1 Classic)", + "vidu:1@1 (Vidu Q1)", + "vidu:1@5 (Vidu 1.5)", + "vidu:2@0 (Vidu 2.0)", ], "Wan": [ - "urn:air:video:runware:200@1 (Wan 2.1 1.3B)", - "urn:air:video:runware:200@2 (Wan 2.1 14B)", + "runware:200@1 (Wan 2.1 1.3B)", + "runware:200@2 (Wan 2.1 14B)", ], } # Model dimensions mapping MODEL_DIMENSIONS = { # KlingAI Models - "urn:air:video:klingai:1@2": {"width": 1280, "height": 720}, # KlingAI V1.0 Pro - "urn:air:video:klingai:1@1": {"width": 1280, "height": 720}, # KlingAI V1 Standard - "urn:air:video:klingai:2@2": {"width": 1920, "height": 1080}, # KlingAI V1.5 Pro - "urn:air:video:klingai:2@1": {"width": 1280, "height": 720}, # KlingAI V1.5 Standard - "urn:air:video:klingai:3@1": {"width": 1280, "height": 720}, # KlingAI V1.6 Standard - "urn:air:video:klingai:3@2": {"width": 1920, "height": 1080}, # KlingAI V1.6 Pro - "urn:air:video:klingai:4@3": {"width": 1280, "height": 720}, # KlingAI V2.1 Master - "urn:air:video:klingai:5@1": {"width": 1280, "height": 720}, # KlingAI V2.1 Standard (I2V) - "urn:air:video:klingai:5@2": {"width": 1920, "height": 1080}, # KlingAI V2.1 Pro (I2V) - "urn:air:video:klingai:5@3": {"width": 1920, "height": 1080}, # KlingAI V2.0 Master + "klingai:1@2": {"width": 1280, "height": 720}, # KlingAI V1.0 Pro + "klingai:1@1": {"width": 1280, "height": 720}, # KlingAI V1 Standard + "klingai:2@2": {"width": 1920, "height": 1080}, # KlingAI V1.5 Pro + "klingai:2@1": {"width": 1280, "height": 720}, # KlingAI V1.5 Standard + "klingai:3@1": {"width": 1280, "height": 720}, # KlingAI V1.6 Standard + "klingai:3@2": {"width": 1920, "height": 1080}, # KlingAI V1.6 Pro + "klingai:4@3": {"width": 1280, "height": 720}, # KlingAI V2.1 Master + "klingai:5@1": {"width": 1280, "height": 720}, # KlingAI V2.1 Standard (I2V) + "klingai:5@2": {"width": 1920, "height": 1080}, # KlingAI V2.1 Pro (I2V) + "klingai:5@3": {"width": 1920, "height": 1080}, # KlingAI V2.0 Master # Veo Models - "urn:air:video:google:2@0": {"width": 1280, "height": 720}, # Veo 2.0 - "urn:air:video:google:3@0": {"width": 1280, "height": 720}, # Veo 3.0 - "urn:air:video:google:3@1": {"width": 1280, "height": 720}, # Veo 3.0 Fast + "google:2@0": {"width": 1280, "height": 720}, # Veo 2.0 + "google:3@0": {"width": 1280, "height": 720}, # Veo 3.0 + "google:3@1": {"width": 1280, "height": 720}, # Veo 3.0 Fast # Seedance Models - "urn:air:video:bytedance:2@1": {"width": 864, "height": 480}, # Seedance 1.0 Pro - "urn:air:video:bytedance:1@1": {"width": 864, "height": 480}, # Seedance 1.0 Lite + "bytedance:2@1": {"width": 864, "height": 480}, # Seedance 1.0 Pro + "bytedance:1@1": {"width": 864, "height": 480}, # Seedance 1.0 Lite # MiniMax Models - "urn:air:video:minimax:1@1": {"width": 1366, "height": 768}, # MiniMax 01 Base - "urn:air:video:minimax:2@1": {"width": 1366, "height": 768}, # MiniMax 01 Director - "urn:air:video:minimax:2@3": {"width": 1366, "height": 768}, # MiniMax I2V 01 Live - "urn:air:video:minimax:3@1": {"width": 1366, "height": 768}, # MiniMax 02 Hailuo + "minimax:1@1": {"width": 1366, "height": 768}, # MiniMax 01 Base + "minimax:2@1": {"width": 1366, "height": 768}, # MiniMax 01 Director + "minimax:2@3": {"width": 1366, "height": 768}, # MiniMax I2V 01 Live + "minimax:3@1": {"width": 1366, "height": 768}, # MiniMax 02 Hailuo # PixVerse Models - "urn:air:video:pixverse:1@1": {"width": 640, "height": 360}, # PixVerse v3.5 - "urn:air:video:pixverse:1@2": {"width": 640, "height": 360}, # PixVerse v4 - "urn:air:video:pixverse:1@3": {"width": 640, "height": 360}, # PixVerse v4.5 + "pixverse:1@1": {"width": 640, "height": 360}, # PixVerse v3.5 + "pixverse:1@2": {"width": 640, "height": 360}, # PixVerse v4 + "pixverse:1@3": {"width": 640, "height": 360}, # PixVerse v4.5 # Vidu Models - "urn:air:video:vidu:1@0": {"width": 1920, "height": 1080}, # Vidu Q1 Classic - "urn:air:video:vidu:1@1": {"width": 1920, "height": 1080}, # Vidu Q1 - "urn:air:video:vidu:1@5": {"width": 1920, "height": 1080}, # Vidu 1.5 - "urn:air:video:vidu:2@0": {"width": 1920, "height": 1080}, # Vidu 2.0 + "vidu:1@0": {"width": 1920, "height": 1080}, # Vidu Q1 Classic + "vidu:1@1": {"width": 1920, "height": 1080}, # Vidu Q1 + "vidu:1@5": {"width": 1920, "height": 1080}, # Vidu 1.5 + "vidu:2@0": {"width": 1920, "height": 1080}, # Vidu 2.0 # Wan Models - "urn:air:video:runware:200@1": {"width": 853, "height": 480}, # Wan 2.1 1.3B - "urn:air:video:runware:200@2": {"width": 853, "height": 480}, # Wan 2.1 14B + "runware:200@1": {"width": 853, "height": 480}, # Wan 2.1 1.3B + "runware:200@2": {"width": 853, "height": 480}, # Wan 2.1 14B } # Models that support seed parameter SEED_SUPPORTED_MODELS = [ - "urn:air:video:runware:200@1", # Wan 2.1 1.3B - "urn:air:video:runware:200@2", # Wan 2.1 14B + "runware:200@1", # Wan 2.1 1.3B + "runware:200@2", # Wan 2.1 14B ] @classmethod @@ -123,7 +123,7 @@ class videoModelSearch: }), "VideoList": (all_models, { "tooltip": "Video Model Results Will Show UP Here So You Could Choose From.", - "default": "urn:air:video:klingai:5@3 (KlingAI 2.1)", + "default": "klingai:5@3 (KlingAI V2.0 Master)", }), "Use Search Value": ("BOOLEAN", { "tooltip": "When Enabled, the value you've set in the search input will be used instead.\n\nThis is useful in case the model search API is down or you prefer to set the model manually.", diff --git a/workflows/Runware_Basic_Image_Inference_IPAdapter.json b/workflows/Runware_Basic_Image_Inference_IPAdapter.json index 5b256a7..d160569 100644 --- a/workflows/Runware_Basic_Image_Inference_IPAdapter.json +++ b/workflows/Runware_Basic_Image_Inference_IPAdapter.json @@ -1 +1 @@ -{"id":"11fe9cb1-b192-41ba-a3fc-317ce3c4073a","revision":0,"last_node_id":10,"last_link_id":8,"nodes":[{"id":1,"type":"PreviewImage","pos":[119.37579345703125,235.99424743652344],"size":[716.7999877929688,717.5],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":5}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":10,"type":"Runware Model Search","pos":[-771.3780517578125,240.72744750976562],"size":[270,154],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","links":[8]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","SDXL 1.0","Base Model","civitai:101055@128078 (SD XL v1.0 VAE fix)",false],"bgcolor":"#5345bf"},{"id":9,"type":"LoadImage","pos":[-780.408203125,664.1911010742188],"size":[274.080078125,314],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[7]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["bee-on-flower-1024x576.jpg","image"]},{"id":7,"type":"Runware Image Inference","pos":[-358.8656311035156,239.78627014160156],"size":[400,702],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":8},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":6},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[5]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Inference"},"widgets_values":["a bee sitting on a sunflower","blurry, low resolution, distorted, overexposed, underexposed, grainy, artifacts, extra limbs, missing details, poorly drawn hands, unnatural poses, dull colors, oversaturated, flat background, text errors, watermark, crowded composition, deformed face",false,"Disabled","Square HD (1024x1024)",1024,1024,8,"Default",6.5,650347983151081,"randomize",0,0.8,false,32,1],"bgcolor":"#5345bf"},{"id":8,"type":"Runware IPAdapter","pos":[-770.7137451171875,459.3330383300781],"size":[270,82],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Reference Image","name":"Reference Image","type":"IMAGE","link":7},{"localized_name":"Model","name":"Model","type":"COMBO","widget":{"name":"Model"},"link":null},{"localized_name":"weight","name":"weight","type":"FLOAT","widget":{"name":"weight"},"link":null}],"outputs":[{"localized_name":"IPAdapter","name":"IPAdapter","type":"RUNWAREIPAdapter","links":[6]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware IPAdapter"},"widgets_values":["IP Adapter SDXL",1],"bgcolor":"#5345bf"}],"links":[[5,7,0,1,0,"IMAGE"],[6,8,0,7,4,"RUNWAREIPAdapter"],[7,9,0,8,0,"IMAGE"],[8,10,0,7,0,"RUNWAREMODEL"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.9090909090909091,"offset":[1465.1065135618003,727.8933694624607]}},"version":0.4} \ No newline at end of file +{"id":"11fe9cb1-b192-41ba-a3fc-317ce3c4073a","revision":0,"last_node_id":15,"last_link_id":12,"nodes":[{"id":1,"type":"PreviewImage","pos":[119.37579345703125,235.99424743652344],"size":[716.7999877929688,717.5],"flags":{},"order":9,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":5}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":10,"type":"Runware Model Search","pos":[-771.3780517578125,240.72744750976562],"size":[270,154],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","links":[8]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","SDXL 1.0","Base Model","civitai:101055@128078 (SD XL v1.0 VAE fix)",false],"bgcolor":"#5345bf"},{"id":9,"type":"LoadImage","pos":[-780.408203125,664.1911010742188],"size":[274.080078125,314],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[7]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["bee-on-flower-1024x576.jpg","image"]},{"id":7,"type":"Runware Image Inference","pos":[-358.8656311035156,239.78627014160156],"size":[400,702],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":8},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":6},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[5]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Inference"},"widgets_values":["a bee sitting on a sunflower","blurry, low resolution, distorted, overexposed, underexposed, grainy, artifacts, extra limbs, missing details, poorly drawn hands, unnatural poses, dull colors, oversaturated, flat background, text errors, watermark, crowded composition, deformed face",false,"Disabled","Square HD (1024x1024)",1024,1024,8,"Default",6.5,650347983151081,"randomize",0,0.8,false,32,1],"bgcolor":"#5345bf"},{"id":8,"type":"Runware IPAdapter","pos":[-770.7137451171875,459.3330383300781],"size":[270,82],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"Reference Image","name":"Reference Image","type":"IMAGE","link":7},{"localized_name":"Model","name":"Model","type":"COMBO","widget":{"name":"Model"},"link":null},{"localized_name":"weight","name":"weight","type":"FLOAT","widget":{"name":"weight"},"link":null}],"outputs":[{"localized_name":"IPAdapter","name":"IPAdapter","type":"RUNWAREIPAdapter","links":[6]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware IPAdapter"},"widgets_values":["IP Adapter SDXL",1],"bgcolor":"#5345bf"},{"id":11,"type":"PreviewImage","pos":[70.47748565673828,-402.5640869140625],"size":[716.7999877929688,717.5],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":9}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"}},{"id":12,"type":"Runware Model Search","pos":[-820.2763671875,-397.83087158203125],"size":[270,154],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","links":[10]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","SDXL 1.0","Base Model","civitai:101055@128078 (SD XL v1.0 VAE fix)",false],"bgcolor":"#5345bf"},{"id":13,"type":"LoadImage","pos":[-829.3065185546875,25.632781982421875],"size":[274.080078125,314],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[12]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["bee-on-flower-1024x576.jpg","image"]},{"id":14,"type":"Runware Image Inference","pos":[-407.7639465332031,-398.7720642089844],"size":[400,702],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":10},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":11},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[9]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Image Inference"},"widgets_values":["a bee sitting on a sunflower","blurry, low resolution, distorted, overexposed, underexposed, grainy, artifacts, extra limbs, missing details, poorly drawn hands, unnatural poses, dull colors, oversaturated, flat background, text errors, watermark, crowded composition, deformed face",false,"Disabled","Square HD (1024x1024)",1024,1024,8,"Default",6.5,650347983151081,"randomize",0,0.8,false,32,1],"bgcolor":"#5345bf"},{"id":15,"type":"Runware IPAdapter","pos":[-819.612060546875,-179.22528076171875],"size":[270,82],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"Reference Image","name":"Reference Image","type":"IMAGE","link":12},{"localized_name":"Model","name":"Model","type":"COMBO","widget":{"name":"Model"},"link":null},{"localized_name":"weight","name":"weight","type":"FLOAT","widget":{"name":"weight"},"link":null}],"outputs":[{"localized_name":"IPAdapter","name":"IPAdapter","type":"RUNWAREIPAdapter","links":[11]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware IPAdapter"},"widgets_values":["IP Adapter SDXL",1],"bgcolor":"#5345bf"}],"links":[[5,7,0,1,0,"IMAGE"],[6,8,0,7,4,"RUNWAREIPAdapter"],[7,9,0,8,0,"IMAGE"],[8,10,0,7,0,"RUNWAREMODEL"],[9,14,0,11,0,"IMAGE"],[10,12,0,14,0,"RUNWAREMODEL"],[11,15,0,14,4,"RUNWAREIPAdapter"],[12,13,0,15,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.9090909090909091,"offset":[1465.1065135618003,728.1640725874606]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Image_to_Video.json b/workflows/Runware_Image_to_Video.json index 0825d15..8ff39d1 100644 --- a/workflows/Runware_Image_to_Video.json +++ b/workflows/Runware_Image_to_Video.json @@ -1 +1 @@ -{"id":"5cf854c6-824e-4e51-995c-a2c146c44890","revision":0,"last_node_id":4,"last_link_id":3,"nodes":[{"id":1,"type":"SaveVideo","pos":[899.7476806640625,376.3740539550781],"size":[270,368],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":1},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":2,"type":"Runware Video Model Search","pos":[92.353759765625,376.9104309082031],"size":[270,170],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[2]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","KlingAI","urn:air:video:klingai:2@2 (KlingAI V1.5 Pro)",false],"bgcolor":"#5345bf"},{"id":3,"type":"Runware Video Inference","pos":[442.46539306640625,371.56787109375],"size":[400,490],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":2},{"localized_name":"firstImage","name":"firstImage","shape":7,"type":"IMAGE","link":3},{"localized_name":"lastImage","name":"lastImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"DICT","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"includeCost","name":"includeCost","type":"BOOLEAN","widget":{"name":"includeCost"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[1]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Video Inference"},"widgets_values":["Fish swimming in the ocean.","",false,"Disabled",false,1024,576,5,24,"mp4",1,true,912757191070980,"randomize"],"bgcolor":"#5345bf"},{"id":4,"type":"LoadImage","pos":[98.24242401123047,606.15234375],"size":[274.080078125,314],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[3]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["fish.webp","image"]}],"links":[[1,3,0,1,0,"VIDEO"],[2,2,0,3,0,"RUNWAREVIDEOMODEL"],[3,4,0,3,1,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8690867073308224,"offset":[229.4903040722438,-225.59848018737068]}},"version":0.4} \ No newline at end of file +{"id":"5cf854c6-824e-4e51-995c-a2c146c44890","revision":0,"last_node_id":5,"last_link_id":4,"nodes":[{"id":1,"type":"SaveVideo","pos":[899.7476806640625,376.3740539550781],"size":[270,368],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":1},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":4,"type":"LoadImage","pos":[98.24242401123047,606.15234375],"size":[274.080078125,314],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[3]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["fish.webp","image"]},{"id":3,"type":"Runware Video Inference","pos":[442.46539306640625,371.56787109375],"size":[400,490],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":4},{"localized_name":"firstImage","name":"firstImage","shape":7,"type":"IMAGE","link":3},{"localized_name":"lastImage","name":"lastImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"DICT","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"includeCost","name":"includeCost","type":"BOOLEAN","widget":{"name":"includeCost"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[1]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Video Inference"},"widgets_values":["Fish swimming in the ocean.","",false,"Disabled",false,1024,576,5,24,"mp4",1,true,908927187411176,"randomize"],"bgcolor":"#5345bf"},{"id":5,"type":"Runware Video Model Search","pos":[110.46113586425781,356.1772766113281],"size":[270,170],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[4]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"4d74f59820ad59af31176536118380f7e9f0374c","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","KlingAI","klingai:3@1 (KlingAI V1.6 Standard)",false],"bgcolor":"#5345bf"}],"links":[[1,3,0,1,0,"VIDEO"],[3,4,0,3,1,"IMAGE"],[4,5,0,3,0,"RUNWAREVIDEOMODEL"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8690867073308224,"offset":[231.6477412809644,-225.1737347369038]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Text_To_Video.json.json b/workflows/Runware_Text_To_Video.json.json index f2554aa..38442dc 100644 --- a/workflows/Runware_Text_To_Video.json.json +++ b/workflows/Runware_Text_To_Video.json.json @@ -1 +1 @@ -{"id":"00000000-0000-0000-0000-000000000000","revision":0,"last_node_id":22,"last_link_id":22,"nodes":[{"id":6,"type":"SaveVideo","pos":[462.1513671875,86.5411376953125],"size":[270,249.80087280273438],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":21},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":12,"type":"Runware Video Model Search","pos":[-456.0134582519531,87.07750701904297],"size":[270,170],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[22]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","Seedance","urn:air:video:bytedance:2@1 (Seedance 1.0 Pro)",false],"bgcolor":"#5345bf"},{"id":19,"type":"Runware Video Inference","pos":[4.869094371795654,81.73494720458984],"size":[400,490],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":22},{"localized_name":"firstImage","name":"firstImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"lastImage","name":"lastImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"DICT","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"includeCost","name":"includeCost","type":"BOOLEAN","widget":{"name":"includeCost"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[21]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Video Inference"},"widgets_values":["Ant on a leaf.","",false,"Disabled",false,1024,576,5,24,"mp4",1,true,282988745551878,"randomize"],"bgcolor":"#5345bf"}],"links":[[21,19,0,6,0,"VIDEO"],[22,12,0,19,0,"RUNWAREVIDEOMODEL"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8690867155630664,"offset":[667.374262491862,64.52210987635999]}},"version":0.4} \ No newline at end of file +{"id":"00000000-0000-0000-0000-000000000000","revision":0,"last_node_id":23,"last_link_id":23,"nodes":[{"id":6,"type":"SaveVideo","pos":[462.1513671875,86.5411376953125],"size":[270,249.80087280273438],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":21},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":19,"type":"Runware Video Inference","pos":[4.869094371795654,81.73494720458984],"size":[400,490],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":23},{"localized_name":"firstImage","name":"firstImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"lastImage","name":"lastImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"DICT","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"includeCost","name":"includeCost","type":"BOOLEAN","widget":{"name":"includeCost"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[21]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Video Inference"},"widgets_values":["Ant on a leaf.","",false,"Disabled",false,1024,576,5,24,"mp4",1,true,134877469080789,"randomize"],"bgcolor":"#5345bf"},{"id":23,"type":"Runware Video Model Search","pos":[-388.9165344238281,94.34619140625],"size":[270,170],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[23]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"4d74f59820ad59af31176536118380f7e9f0374c","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","Seedance","bytedance:2@1 (Seedance 1.0 Pro)",false],"bgcolor":"#5345bf"}],"links":[[21,19,0,6,0,"VIDEO"],[23,23,0,19,0,"RUNWAREVIDEOMODEL"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8690867155630664,"offset":[668.2237533847492,64.94685532280354]}},"version":0.4} \ No newline at end of file From 1fbb853e863a41fadf3d9305ad6198d634a40d29 Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Wed, 3 Sep 2025 14:20:18 -0400 Subject: [PATCH 6/6] feat: Add video inference features and improvements - Add Runware Video Inference node with frame images and reference images support - Add conditional parameter support for steps and CFG scale in image inference - Add useFps parameter for video inference with enable/disabled options for Vidu support --- .DS_Store | Bin 0 -> 6148 bytes README.md | 11 +- __init__.py | 4 +- modules/apiManager.py | 124 ++++++------ modules/frameImages.py | 87 +++++++++ modules/imageInference.py | 26 ++- modules/multiInference.py | 3 +- modules/utils/runwareUtils.py | 31 ++- modules/videoInference.py | 176 +++++++++++++----- workflows/.DS_Store | Bin 0 -> 6148 bytes workflows/Runware_Adetailer.json | 2 +- workflows/Runware_Basic_Image_Inference.json | 2 +- ...nware_Basic_Image_Inference_IPAdapter.json | 2 +- .../Runware_Basic_Image_Inference_Lora.json | 2 +- workflows/Runware_ControlNet.json | 2 +- .../Runware_Image_Inference_Captioning.json | 2 +- .../Runware_Image_Inference_Embedding.json | 2 +- workflows/Runware_Image_to_Video.json | 2 +- workflows/Runware_Inpainting.json | 2 +- workflows/Runware_PhotoMaker_v2.json | 2 +- workflows/Runware_Text_To_Video.json.json | 2 +- 21 files changed, 340 insertions(+), 144 deletions(-) create mode 100644 .DS_Store create mode 100644 modules/frameImages.py create mode 100644 workflows/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d2717f3b9c773dd92ce2308d309dc65953a6ab8d GIT binary patch literal 6148 zcmeHK%}T>S5T0$TO(;SR3OxqA7OZV4h?h|73mDOZN^MBh(3q8`HHT8jSzpK}@p+ut z-H4?XJc-yDnEhtwC(C{t_6Gn&Zx$W`H~?Uw5|(Ui)(FK(SEOV-ghGAe4q}jyK^kN$ z+3fg>4A9!yxMC6}ForMdmp%ot3^4i@JjGEuZ8qOUsa)CGu3A;AX5IJ?GV`ay=`8IH zCs))vmog3tdl+0qqio>pp2%c6jFQnr6-40(Q?4(gB$QcC&XO=ywZ0Bmwq*~T`h4E% zHXClc(_S>(`B4k)PP@BU*w)_u!SUH(96u)VMbjzp&r`Bvuz*)I*39hLpCqwN?lD?a z78Q)l05iZ0YzhNr|FdeFGGU%4Gr$b|m;u@!TvS5OV6IVZ9oW$Ik>V9X613?pLFgLv z4CWd!f+BP&qAnHYi6L}3`dyRf8O$~6au8}{{Eit}m=}srqodzd=^#9f+%f~qz%m16 z-F4{vKmGpwzg)yUW`G&^R}6?s-|zQuO6F``nH-(9F6u2R3FYM)KTFV1M=|EoQCvq= Zf_|3_M9*NZ5j`k;5l}R6!wmc?10P3+P0|1W literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 2fba480..df37ff9 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Welcome to **ComfyUI-Runware**! ๐ŸŒŸ This is the official integration for **[Run ## ๐ŸŒŸ What is ComfyUI-Runware? -Imagine creating stunning images, refining details, or even removing backgroundsโ€”all without needing a powerful GPU. With **Runware**, all the heavy lifting happens on our servers. No GPU? No problem! ๐Ÿ–ฅ๏ธ๐Ÿ’จ +Imagine creating stunning images or videos, refining details, or even removing backgroundsโ€”all without needing a powerful GPU. With **Runware**, all the heavy lifting happens on our servers. No GPU? No problem! ๐Ÿ–ฅ๏ธ๐Ÿ’จ This integration adds a suite of custom nodes to ComfyUI, allowing you to: - Perform advanced image inference tasks, including image generation and editing with powerful models. @@ -100,10 +100,10 @@ Inside the `ComfyUI-Runware` custom node folder, youโ€™ll find a `workflows` fol ## ๐Ÿงฉ Node Features -Hereโ€™s a breakdown of the amazing nodes included in this integration: +Here's a breakdown of the amazing nodes included in this integration: - **Runware API Manager**: Set or change your API keys, adjust the max connection timeout, adjust the image output quality and format, and enable or disable image caching directly in ComfyUIโ€”no need to edit config files manually! ๐Ÿ”‘ -- **Runware Image Inference**: Perform advanced tasks like inpainting, outpainting, and more. ๐ŸŽจ +- **Runware Image Inference**: Perform advanced tasks like inpainting, outpainting, and more ๐ŸŽจ - **Runware PhotoMakerV2**: Create consistent identities with our photomaker pipeline. ๐Ÿ–ผ๏ธ - **Runware Image Upscale**: Upscale your images up to 4x. ๐Ÿ” - **Runware Background Removal**: Effortlessly remove image backgrounds. ๐Ÿงน @@ -121,10 +121,7 @@ Hereโ€™s a breakdown of the amazing nodes included in this integration: - **Runware Image Caption**: Generate descriptive text from images for further workflow integration. ๐Ÿ–ผ๏ธ - **Runware IPAdapter**: Use reference images to guide the style and content of generated images. ๐Ÿ–Œ๏ธ - **Runware IPAdapters Combine**: Combine multiple IP-Adapter inputs for sophisticated image conditioning. ๐Ÿ”— - -๐ŸŽฌ -- **Runware Text to Video**: Generate videos from text prompts using advanced AI models. ๐ŸŽฅ -- **Runware Image to Video**: Create videos from reference images with optional text guidance. ๐Ÿ–ผ๏ธโžก๏ธ๐ŸŽฅ +- **Runware Video Inference**: Generate videos from text prompts using advanced AI models with support for frame images and reference images. ๐ŸŽฌ --- diff --git a/__init__.py b/__init__.py index 561e95b..1b997b1 100644 --- a/__init__.py +++ b/__init__.py @@ -27,8 +27,9 @@ from .modules.vaeSearch import vaeSearch from .modules.referenceImages import referenceImages from .modules.videoInference import txt2vid from .modules.videoModelSearch import videoModelSearch +from .modules.frameImages import RunwareFrameImages -RUNWARE_COMFYUI_VERSION = "1.2.0 Beta" +RUNWARE_COMFYUI_VERSION = "1.3.0 Beta" RESET_COLOR = "\033[0m" BLUE_COLOR = "\033[94m" @@ -68,6 +69,7 @@ NODE_CLASS_MAPPINGS = { "Runware Reference Images": referenceImages, "Runware Video Inference": txt2vid, "Runware Video Model Search": videoModelSearch, + "Runware Frame Images": RunwareFrameImages, } NODE_DISPLAY_NAME_MAPPINGS = { diff --git a/modules/apiManager.py b/modules/apiManager.py index 924cf3e..5a0d3d5 100644 --- a/modules/apiManager.py +++ b/modules/apiManager.py @@ -1,63 +1,63 @@ -from .utils import runwareUtils as rwUtils - -class apiManager: - @classmethod - def INPUT_TYPES(cls): - return { - "required": { - "API Key": ( - "STRING", - { - "tooltip": "Define Or Change Your Runware API Key To Start Using Runware Image Inference Services.\n\n(e.g; BcVr1JVQM8FGzrRwb3GsbCq5ww1QwabV)\n\nIf You Don't Have One, You Can Get It From: https://my.runware.ai/keys", - }, - ), - "Max Timeout": ( - "INT", - { - "tooltip": "Change Runware API Request Timeout In Seconds.\n\n(e.g; 90 Seconds).", - "min": 5, - "max": 99, - "default": int(rwUtils.getTimeout()), - }, - ), - "Image Output Quality": ( - "INT", - { - "tooltip": "Sets the compression quality of the output image. Higher values preserve more quality but increase file size, lower values reduce file size but decrease quality.", - "min": 20, - "max": 99, - "default": int(rwUtils.getOutputQuality()), - }, - ), - "Image Output Format": ( - ["WEBP", "PNG", "JPEG"], - { - "tooltip": "Change the Default Image Output Format.", - "default": rwUtils.getOutputFormat(), - }, - ), - "Enable Images Caching": ( - "BOOLEAN", - { - "label_on": "Enabled", - "label_off": "Disabled", - "tooltip": "Enable or disable image caching functionality.\n\nWhen enabled, images will be cached to improve performance and reduce redundant processing.", - "default": rwUtils.getEnableImagesCaching(), - }, - ), - "Min Image Cache Size": ( - "INT", - { - "tooltip": "Set the minimum size (in KB) for images to be cached.", - "min": 30, - "max": 4096, - "step": 1, - "default": int(rwUtils.getMinImageCacheSize()), - }, - ), - }, - } - - DESCRIPTION = "API Managers is a Runware Utility That helps you define or change your API Key, Session Timeout, Image Output Format & Quality, and Image Caching settings From The ComfyUI Interface Without having to adjust the env file locally." - CATEGORY = "Runware" +from .utils import runwareUtils as rwUtils + +class apiManager: + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "API Key": ( + "STRING", + { + "tooltip": "Define Or Change Your Runware API Key To Start Using Runware Image Inference Services.\n\n(e.g; BcVr1JVQM8FGzrRwb3GsbCq5ww1QwabV)\n\nIf You Don't Have One, You Can Get It From: https://my.runware.ai/keys", + }, + ), + "Max Timeout": ( + "INT", + { + "tooltip": "Change Runware API Request Timeout In Seconds.\n\n(e.g; 90 Seconds).", + "min": 5, + "max": 99, + "default": int(rwUtils.getTimeout()), + }, + ), + "Image Output Quality": ( + "INT", + { + "tooltip": "Sets the compression quality of the output image. Higher values preserve more quality but increase file size, lower values reduce file size but decrease quality.", + "min": 20, + "max": 99, + "default": int(rwUtils.getOutputQuality()), + }, + ), + "Image Output Format": ( + ["WEBP", "PNG", "JPEG"], + { + "tooltip": "Change the Default Image Output Format.", + "default": rwUtils.getOutputFormat(), + }, + ), + "Enable Images Caching": ( + "BOOLEAN", + { + "label_on": "Enabled", + "label_off": "Disabled", + "tooltip": "Enable or disable image caching functionality.\n\nWhen enabled, images will be cached to improve performance and reduce redundant processing.", + "default": rwUtils.getEnableImagesCaching(), + }, + ), + "Min Image Cache Size": ( + "INT", + { + "tooltip": "Set the minimum size (in KB) for images to be cached.", + "min": 30, + "max": 4096, + "step": 1, + "default": int(rwUtils.getMinImageCacheSize()), + }, + ), + }, + } + + DESCRIPTION = "API Managers is a Runware Utility That helps you define or change your API Key, Session Timeout, Image Output Format & Quality, and Image Caching settings From The ComfyUI Interface Without having to adjust the env file locally." + CATEGORY = "Runware" RETURN_TYPES = () \ No newline at end of file diff --git a/modules/frameImages.py b/modules/frameImages.py new file mode 100644 index 0000000..1ec0fd0 --- /dev/null +++ b/modules/frameImages.py @@ -0,0 +1,87 @@ +from .utils import runwareUtils as rwUtils + + +class RunwareFrameImages: + @classmethod + def INPUT_TYPES(cls): + return { + "required": {}, + "optional": { + "image1": ("IMAGE", { + "tooltip": "Frame image that will constrain video content at a specific timeline position. Used for keyframe control.", + }), + "frame1_position": (["auto", "first", "last", "0", "12", "24", "36", "48", "60", "72", "84", "96", "108", "120"], { + "default": "auto", + "tooltip": "Frame position: 'auto' (automatic distribution), 'first' (beginning), 'last' (end), or specific frame number (0-120).", + }), + "image2": ("IMAGE", { + "tooltip": "Frame image that will constrain video content at a specific timeline position. Used for keyframe control.", + }), + "frame2_position": (["auto", "first", "last", "0", "12", "24", "36", "48", "60", "72", "84", "96", "108", "120"], { + "default": "auto", + "tooltip": "Frame position: 'auto' (automatic distribution), 'first' (beginning), 'last' (end), or specific frame number (0-120).", + }), + "image3": ("IMAGE", { + "tooltip": "Frame image that will constrain video content at a specific timeline position. Used for keyframe control.", + }), + "frame3_position": (["auto", "first", "last", "0", "12", "24", "36", "48", "60", "72", "84", "96", "108", "120"], { + "default": "auto", + "tooltip": "Frame position: 'auto' (automatic distribution), 'first' (beginning), 'last' (end), or specific frame number (0-120).", + }), + "image4": ("IMAGE", { + "tooltip": "Frame image that will constrain video content at a specific timeline position. Used for keyframe control.", + }), + "frame4_position": (["auto", "first", "last", "0", "12", "24", "36", "48", "60", "72", "84", "96", "108", "120"], { + "default": "auto", + "tooltip": "Frame position: 'auto' (automatic distribution), 'first' (beginning), 'last' (end), or specific frame number (0-120).", + }), + } + } + + DESCRIPTION = "Define keyframes that constrain specific frames within the video timeline. Different from reference images - these control WHEN specific visual content appears, not overall style consistency." + FUNCTION = "create_frame_images" + RETURN_TYPES = ("RUNWAREFRAMEIMAGES",) + RETURN_NAMES = ("Frame Images",) + CATEGORY = "Runware" + + def create_frame_images(self, **kwargs): + frame_images = [] + + # Process each image input + for i in range(1, 5): # Support up to 4 images + image_key = f"image{i}" + position_key = f"frame{i}_position" + + image = kwargs.get(image_key) + position = kwargs.get(position_key, "auto") + + if image is not None: + # Upload image and get UUID + image_uuid = rwUtils.convertTensor2IMGForVideo(image) + image_url = f"https://im.runware.ai/image/ii/{image_uuid}.webp" + + frame_data = { + "inputImage": image_url + } + + # Only add frame position if not auto + if position != "auto": + # Convert string numbers to integers for API + if position.isdigit(): + frame_data["frame"] = int(position) + else: + frame_data["frame"] = position # "first" or "last" + + frame_images.append(frame_data) + + return (frame_images,) + + +# Node class mappings for ComfyUI registration +NODE_CLASS_MAPPINGS = { + "RunwareFrameImages": RunwareFrameImages, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "RunwareFrameImages": "Runware Frame Images", +} diff --git a/modules/imageInference.py b/modules/imageInference.py index 86d6d14..1e3ecf4 100644 --- a/modules/imageInference.py +++ b/modules/imageInference.py @@ -52,21 +52,29 @@ class txt2img: "step": 64, }), "steps": ("INT", { - "tooltip": "The number of steps is the number of iterations the model will perform to generate the image. The higher the number of steps, the more detailed the image will be. However, increasing the number of steps will also increase the time it takes to generate the image and may not always result in a better image.", + "tooltip": "The number of steps is the number of iterations the model will perform to generate the image. Only used when 'Use Steps' is enabled.", "default": 4, "min": 1, "max": 100, }), + "useSteps": (["enable", "disabled"], { + "tooltip": "Enable to include steps parameter in API request. Disable if your model doesn't support steps (like nano banana).", + "default": "enable", + }), "scheduler": (['Default', 'DDIM', 'DDIMScheduler', 'DDPMScheduler', 'DEISMultistepScheduler', 'DPMSolverSinglestepScheduler', 'DPMSolverMultistepScheduler', 'DPMSolverMultistepInverse', 'DPM++', 'DPM++ Karras', 'DPM++ 2M', 'DPM++ 2M Karras', 'DPM++ 2M SDE Karras', 'DPM++ 2M SDE', 'DPM++ 3M', 'DPM++ 3M Karras', 'DPM++ SDE Karras', 'DPM++ SDE', 'EDMEulerScheduler', 'EDMDPMSolverMultistepScheduler', 'Euler', 'EulerDiscreteScheduler', 'Euler Karras', 'Euler a', 'EulerAncestralDiscreteScheduler', 'FlowMatchEulerDiscreteScheduler', 'Heun', 'HeunDiscreteScheduler', 'Heun Karras', 'IPNDMScheduler', 'KDPM2DiscreteScheduler', 'KDPM2AncestralDiscreteScheduler', 'LCM', 'LCMScheduler', 'LMS', 'LMSDiscreteScheduler', 'LMS Karras', 'PNDMScheduler', 'TCDScheduler', 'UniPC', 'UniPCMultistepScheduler', 'UniPC Karras', 'UniPC 2M', 'UniPC 2M Karras', 'UniPC 3M', 'UniPC 3M Karras'], { "tooltip": "An scheduler is a component that manages the inference process. Different schedulers can be used to achieve different results like more detailed images, faster inference, or more accurate results.", "default": "Default", }), "cfgScale": ("FLOAT", { - "tooltip": "Guidance scale represents how closely the images will resemble the prompt or how much freedom the AI model has. Higher values are closer to the prompt. Low values may reduce the quality of the results.", + "tooltip": "Guidance scale represents how closely the images will resemble the prompt or how much freedom the AI model has. Only used when 'Use CFG Scale' is enabled.", "default": 6.5, "min": 1.0, - "max": 30.0, - "step": 0.1, + "max": 50.0, + "step": 0.5, + }), + "useCFGScale": (["enable", "disabled"], { + "tooltip": "Enable to include CFG scale parameter in API request. Disable if your model doesn't support CFG scale (like nano banana).", + "default": "enable", }), "seed": ("INT", { "tooltip": "A value used to randomize the image generation. If you want to make images reproducible (generate the same image multiple times), you can use the same seed value.", @@ -179,8 +187,10 @@ class txt2img: height = kwargs.get("height", 512) width = kwargs.get("width", 512) steps = kwargs.get("steps", 4) + useSteps = kwargs.get("useSteps", "enable") scheduler = kwargs.get("scheduler", "Default") cfgScale = kwargs.get("cfgScale", 6.5) + useCFGScale = kwargs.get("useCFGScale", "enable") seed = kwargs.get("seed") batchSize = kwargs.get("batchSize", 1) @@ -195,8 +205,6 @@ class txt2img: "height": height, "width": width, "model": runwareModel, - "steps": steps, - "CFGScale": cfgScale, "scheduler": scheduler, "clipSkip": clipSkip, "seed": seed, @@ -210,6 +218,12 @@ class txt2img: # For Debugging Purposes Only print(f"[Debugging] Task UUID: {genConfig[0]['taskUUID']}") + # Add steps and CFGScale only if enabled + if useSteps == "enable": + genConfig[0]["steps"] = steps + if useCFGScale == "enable": + genConfig[0]["CFGScale"] = cfgScale + if (negativePrompt is not None and negativePrompt != ""): genConfig[0]["negativePrompt"] = negativePrompt if (promptWeighting != "Disabled"): diff --git a/modules/multiInference.py b/modules/multiInference.py index a154031..192bff2 100644 --- a/modules/multiInference.py +++ b/modules/multiInference.py @@ -46,7 +46,8 @@ class multiInference: def multiInference(self, **kwargs): tasksData = [kwargs.get(f"Task {i}", None) for i in range(1, 5)] validTasks = [task for task in tasksData if task is not None] - + + if not validTasks: raise Exception("Error: No valid tasks provided for Multi Inference!") diff --git a/modules/utils/runwareUtils.py b/modules/utils/runwareUtils.py index d7d5186..534c094 100644 --- a/modules/utils/runwareUtils.py +++ b/modules/utils/runwareUtils.py @@ -479,16 +479,22 @@ class VideoObject: def save_to(self, filename, **kwargs): """Save video to file by downloading from URL with retry logic""" + max_retries = 10 + retry_delays = [2, 5, 10, 15, 20] # Longer delays for video server issues - - while True: + for attempt in range(max_retries): try: response = requests.get(self.video_url, stream=True, timeout=30) - print(response) + print(f"[Video Download] Attempt {attempt + 1}: {response}") if response.status_code == 422: - - time.sleep(1) + print(f"[Video Download] Server still processing, waiting...") + time.sleep(retry_delays[min(attempt, len(retry_delays) - 1)]) + continue + + if response.status_code == 502: + print(f"[Video Download] Server error (502), retrying in {retry_delays[min(attempt, len(retry_delays) - 1)]} seconds...") + time.sleep(retry_delays[min(attempt, len(retry_delays) - 1)]) continue response.raise_for_status() @@ -497,10 +503,19 @@ class VideoObject: for chunk in response.iter_content(chunk_size=8192): f.write(chunk) + print(f"[Video Download] Successfully downloaded video to {filename}") return True + except requests.exceptions.RequestException as e: + print(f"[Video Download] Attempt {attempt + 1} failed: {e}") + if attempt < max_retries - 1: + time.sleep(retry_delays[min(attempt, len(retry_delays) - 1)]) + continue + else: + print(f"[Video Download] All {max_retries} attempts failed. Video URL: {self.video_url}") + return False except Exception as e: - + print(f"[Video Download] Unexpected error: {e}") return False return False @@ -561,8 +576,8 @@ def pollVideoResult(taskUUID): return None if "errors" in pollResult: - print(f"[Debugging] Poll error: {pollResult['errors'][0]['message']}") - return None + print(f"[Debugging] Poll error: {pollResult}") + return pollResult else: return pollResult except Exception as e: diff --git a/modules/videoInference.py b/modules/videoInference.py index f98f78e..c5b5c09 100644 --- a/modules/videoInference.py +++ b/modules/videoInference.py @@ -2,6 +2,77 @@ from .utils import runwareUtils as rwUtils from .videoModelSearch import videoModelSearch +class RunwareFrameImages: + @classmethod + def INPUT_TYPES(cls): + return { + "required": {}, + "optional": { + "image1": ("IMAGE", { + "tooltip": "First frame image. When only one image is provided, it becomes the first frame automatically.", + }), + "frame1_position": (["auto", "first", "last"], { + "default": "auto", + "tooltip": "Position for the first image. 'auto' uses automatic distribution rules.", + }), + "image2": ("IMAGE", { + "tooltip": "Second frame image. With two images, they become first and last frames automatically.", + }), + "frame2_position": (["auto", "first", "last"], { + "default": "auto", + "tooltip": "Position for the second image. 'auto' uses automatic distribution rules.", + }), + "image3": ("IMAGE", { + "tooltip": "Third frame image. Will be distributed between first and last frames.", + }), + "frame3_position": (["auto", "first", "last"], { + "default": "auto", + "tooltip": "Position for the third image. 'auto' uses automatic distribution rules.", + }), + "image4": ("IMAGE", { + "tooltip": "Fourth frame image. Will be distributed between first and last frames.", + }), + "frame4_position": (["auto", "first", "last"], { + "default": "auto", + "tooltip": "Position for the fourth image. 'auto' uses automatic distribution rules.", + }), + } + } + + DESCRIPTION = "Configure frame images for video generation with precise positioning control. Supports automatic distribution or manual positioning." + FUNCTION = "create_frame_images" + RETURN_TYPES = ("RUNWAREFRAMEIMAGES",) + RETURN_NAMES = ("Frame Images",) + CATEGORY = "Runware" + + def create_frame_images(self, **kwargs): + frame_images = [] + + # Process each image input + for i in range(1, 5): # Support up to 4 images + image_key = f"image{i}" + position_key = f"frame{i}_position" + + image = kwargs.get(image_key) + position = kwargs.get(position_key, "auto") + + if image is not None: + # Upload image and get UUID + image_uuid = rwUtils.convertTensor2IMGForVideo(image) + image_url = f"https://im.runware.ai/image/ii/{image_uuid}.webp" + + frame_data = { + "inputImage": image_url + } + + # Only add frame position if not auto + if position != "auto": + frame_data["frame"] = position + + frame_images.append(frame_data) + + return (frame_images,) + class txt2vid: @classmethod @@ -58,40 +129,38 @@ class txt2vid: "max": 30, }), "fps": ("INT", { - "tooltip": "Frames per second for the generated video.", + "tooltip": "Frames per second for the generated video. Only used when 'Use FPS' is enabled.", "default": 24, "min": 8, "max": 60, }), + "useFps": (["enable", "disabled"], { + "tooltip": "Enable to include fps parameter in API request. Disable if your model doesn't support fps.", + "default": "enable", + }), "outputFormat": (["mp4", "webm", "mov"], { "default": "mp4", "tooltip": "Choose the output video format.", }), - "batchSize": ("INT", { - "tooltip": "The number of videos to generate in a single request.", - "default": 1, - "min": 1, - "max": 4, - }), - "includeCost": ("BOOLEAN", { - "tooltip": "Include cost information in the response.", - "default": True, - "label_on": "Enabled", - "label_off": "Disabled", - }), "seed": ("INT", { "tooltip": "A value used to randomize the video generation. If you want to make videos reproducible (generate the same video multiple times), you can use the same seed value. Note: Only supported by Wan models.", "default": rwUtils.genRandSeed(), "min": 1, "max": 9223372036854776000, }), + "batchSize": ("INT", { + "tooltip": "The number of videos to generate in a single request.", + "default": 1, + "min": 1, + "max": 4, + }), }, "optional": { - "firstImage": ("IMAGE", { - "tooltip": "Image to use as the first frame of the video.", + "frameImages": ("RUNWAREFRAMEIMAGES", { + "tooltip": "Frame images configuration from Runware Frame Images node. Allows precise control over frame positioning.", }), - "lastImage": ("IMAGE", { - "tooltip": "Image to use as the last frame of the video.", + "referenceImages": ("RUNWAREREFERENCEIMAGES", { + "tooltip": "Connect a Runware Reference Images node to provide reference images for the subject. These reference images help the AI maintain identity consistency during the video generation process.", }), "providerSettings": ("DICT", { "tooltip": "Provider-specific settings for video generation.", @@ -122,16 +191,16 @@ class txt2vid: multiInferenceMode = kwargs.get("Multi Inference Mode", False) promptWeighting = kwargs.get("Prompt Weighting", "Disabled") providerSettings = kwargs.get("providerSettings", None) - firstImage = kwargs.get("firstImage", None) - lastImage = kwargs.get("lastImage", None) + frameImages = kwargs.get("frameImages", None) + referenceImages = kwargs.get("referenceImages", None) useCustomDimensions = kwargs.get("useCustomDimensions", False) customWidth = kwargs.get("width", 864) customHeight = kwargs.get("height", 480) duration = kwargs.get("duration", 5) fps = kwargs.get("fps", 24) + useFps = kwargs.get("useFps", "enable") outputFormat = kwargs.get("outputFormat", "mp4") batchSize = kwargs.get("batchSize", 1) - includeCost = kwargs.get("includeCost", True) seed = kwargs.get("seed", 1) # Handle model input - could be dict or string @@ -159,13 +228,16 @@ class txt2vid: "height": height, "width": width, "model": model, - "fps": fps, "outputFormat": outputFormat, "numberResults": batchSize, - "includeCost": includeCost, + "includeCost": True, } ] + # Add fps parameter only if enabled + if useFps == "enable": + genConfig[0]["fps"] = fps + # Add duration parameter - unified for all models genConfig[0]["duration"] = duration @@ -181,31 +253,14 @@ class txt2vid: genConfig[0]["promptWeighting"] = "sdEmbeds" else: genConfig[0]["promptWeighting"] = "compel" - # Build frameImages array from firstImage and lastImage parameters - frameImages = [] - if (firstImage is not None): - # Force upload to get UUID for video frame images - firstImageUUID = rwUtils.convertTensor2IMGForVideo(firstImage) - # Construct full URL with PNG extension - firstImageURL = f"https://im.runware.ai/image/ii/{firstImageUUID}.webp" - print(f"[Debugging] First image URL: {firstImageURL}") - frameImages.append({ - "inputImage": firstImageURL - }) - - if (lastImage is not None): - # Force upload to get UUID for video frame images - lastImageUUID = rwUtils.convertTensor2IMGForVideo(lastImage) - # Construct full URL with PNG extension - lastImageURL = f"https://im.runware.ai/image/ii/{lastImageUUID}.webp" - print(f"[Debugging] Last image URL: {lastImageURL}") - frameImages.append({ - "inputImage": lastImageURL - }) - - if frameImages: + # Add frameImages if provided from Runware Frame Images node + if frameImages is not None and len(frameImages) > 0: genConfig[0]["frameImages"] = frameImages print(f"[Debugging] Frame images array: {frameImages}") + # Add referenceImages if provided from Runware Reference Images node + if referenceImages is not None and len(referenceImages) > 0: + genConfig[0]["referenceImages"] = referenceImages + print(f"[Debugging] Reference images array: {referenceImages}") if (providerSettings is not None): genConfig[0]["providerSettings"] = providerSettings @@ -243,6 +298,20 @@ class txt2vid: pollResult = rwUtils.pollVideoResult(taskUUID) print(f"[Debugging] Poll result: {pollResult}") + # Check for errors first + if pollResult and "errors" in pollResult and len(pollResult["errors"]) > 0: + error_info = pollResult["errors"][0] + error_message = error_info.get("message", "Unknown error") + + # Extract more detailed error info if available + if "responseContent" in error_info: + response_content = error_info["responseContent"] + detailed_message = response_content.get("message", "") + if detailed_message: + error_message = f"{error_message}\nProvider Error: {detailed_message}" + + raise Exception(f"Video generation failed: {error_message}") + if pollResult and "data" in pollResult and len(pollResult["data"]) > 0: video_data = pollResult["data"][0] @@ -254,9 +323,20 @@ class txt2vid: if "videoURL" in video_data or "videoBase64Data" in video_data: videos = rwUtils.convertVideoB64List(pollResult, width, height) return videos - elif status != "processing": - raise Exception(f"Video generation failed: {video_data.get('error', 'Unknown error')}") + # If status is "processing", continue polling # Wait before next poll - rwUtils.time.sleep(1) \ No newline at end of file + rwUtils.time.sleep(1) + + +# Node class mappings for ComfyUI registration +NODE_CLASS_MAPPINGS = { + "RunwareFrameImages": RunwareFrameImages, + "txt2vid": txt2vid, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "RunwareFrameImages": "Runware Frame Images", + "txt2vid": "Runware Video Inference", +} \ No newline at end of file diff --git a/workflows/.DS_Store b/workflows/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0