diff --git a/__init__.py b/__init__.py index 9c08db2..8387ec3 100644 --- a/__init__.py +++ b/__init__.py @@ -45,6 +45,7 @@ from .modules.inputAudios import inputAudios from .modules.referenceVideos import referenceVideos from .modules.videoInferenceInputs import videoInferenceInputs from .modules.lightricksProviderSettings import RunwareLightricksProviderSettings +from .modules.minimaxProviderSettings import RunwareMiniMaxProviderSettings from .modules.vectorize import vectorize from .modules.videoBgRemoval import videoBgRemoval from .modules.videoUpscaler import videoUpscaler @@ -108,6 +109,7 @@ NODE_CLASS_MAPPINGS = { "Runware Reference Videos": referenceVideos, "Runware Video Inference Inputs": videoInferenceInputs, "Runware Lightricks Provider Settings": RunwareLightricksProviderSettings, + "Runware MiniMax Provider Settings": RunwareMiniMaxProviderSettings, "Runware Vectorize": vectorize, "Runware Video Background Removal": videoBgRemoval, "Runware Video Upscaler": videoUpscaler, diff --git a/modules/minimaxProviderSettings.py b/modules/minimaxProviderSettings.py new file mode 100644 index 0000000..07b48fd --- /dev/null +++ b/modules/minimaxProviderSettings.py @@ -0,0 +1,50 @@ +""" +Runware MiniMax Provider Settings Node +Provides MiniMax-specific settings for video generation +""" + +from typing import Optional, Dict, Any + +class RunwareMiniMaxProviderSettings: + """Runware MiniMax Provider Settings Node""" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": {}, + "optional": { + "promptOptimizer": ("BOOLEAN", { + "tooltip": "Enable/disable prompt optimization.", + "default": False, + }), + } + } + + RETURN_TYPES = ("RUNWAREPROVIDERSETTINGS",) + RETURN_NAMES = ("providerSettings",) + FUNCTION = "create_provider_settings" + CATEGORY = "Runware/Provider Settings" + + def create_provider_settings(self, **kwargs) -> tuple[Dict[str, Any]]: + """Create MiniMax provider settings""" + + # Get value parameters + promptOptimizer = kwargs.get("promptOptimizer", False) + + # Build settings dictionary + # Always include promptOptimizer to ensure it's explicitly set + settings = { + "promptOptimizer": promptOptimizer + } + + return (settings,) + +# Node class mappings +NODE_CLASS_MAPPINGS = { + "RunwareMiniMaxProviderSettings": RunwareMiniMaxProviderSettings, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "RunwareMiniMaxProviderSettings": "Runware MiniMax Provider Settings", +} + diff --git a/modules/videoInference.py b/modules/videoInference.py index b0219d4..31b56e5 100644 --- a/modules/videoInference.py +++ b/modules/videoInference.py @@ -1,6 +1,5 @@ from .utils import runwareUtils as rwUtils from .videoModelSearch import videoModelSearch -from .frameImages import RunwareFrameImages import json import comfy.model_management diff --git a/modules/videoModelSearch.py b/modules/videoModelSearch.py index 75c2898..646ac1d 100644 --- a/modules/videoModelSearch.py +++ b/modules/videoModelSearch.py @@ -31,6 +31,8 @@ class videoModelSearch: "minimax:2@1 (MiniMax 01 Director)", "minimax:2@3 (MiniMax I2V 01 Live)", "minimax:3@1 (MiniMax 02 Hailuo)", + "minimax:4@1 (MiniMax Hailuo 2.3)", + "minimax:4@2 (MiniMax Hailuo 2.3 Fast)", ], "PixVerse": [ "pixverse:1@1 (PixVerse v3.5)", @@ -90,6 +92,8 @@ class videoModelSearch: "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 + "minimax:4@1": {"width": 1366, "height": 768}, # MiniMax Hailuo 2.3 + "minimax:4@2": {"width": 1366, "height": 768}, # MiniMax Hailuo 2.3 Fast # PixVerse Models "pixverse:1@1": {"width": 640, "height": 360}, # PixVerse v3.5 diff --git a/workflows/Runware_Video_Inference_Minimax_Provider_Settings.json b/workflows/Runware_Video_Inference_Minimax_Provider_Settings.json new file mode 100644 index 0000000..f766cb5 --- /dev/null +++ b/workflows/Runware_Video_Inference_Minimax_Provider_Settings.json @@ -0,0 +1 @@ +{"id":"839ae638-e137-4a05-bdcd-71b3d5f7132f","revision":0,"last_node_id":6,"last_link_id":5,"nodes":[{"id":4,"type":"SaveVideo","pos":[149.36660766601562,254.38951110839844],"size":[270,106],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":3},{"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":1,"type":"Runware Video Inference","pos":[-323.2123718261719,206.55152893066406],"size":[400,652],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":1},{"localized_name":"frameImages","name":"frameImages","shape":7,"type":"RUNWAREFRAMEIMAGES","link":4},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":2},{"localized_name":"inputAudios","name":"inputAudios","shape":7,"type":"RUNWAREINPUTAUDIOS","link":null},{"localized_name":"referenceVideos","name":"referenceVideos","shape":7,"type":"RUNWAREREFERENCEVIDEOS","link":null},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREVIDEOINFERENCEINPUTS","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":"useFps","name":"useFps","type":"BOOLEAN","widget":{"name":"useFps"},"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":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"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},{"localized_name":"positivePrompt","name":"positivePrompt","shape":7,"type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","shape":7,"type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"speechVoice","name":"speechVoice","shape":7,"type":"STRING","widget":{"name":"speechVoice"},"link":null},{"localized_name":"speechText","name":"speechText","shape":7,"type":"STRING","widget":{"name":"speechText"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[3]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"adeaf95d4599b3395b2ba4463177416f5e9deb8b","Node name for S&R":"Runware Video Inference"},"widgets_values":[false,"Disabled",false,1024,576,6,true,24,"mp4",false,966247810183739,"randomize",1,"Create a high-quality, realistic video of a woman with vibrant red hair walking along a sunny beach. Use the provided reference photo of the woman to accurately capture her facial features, red hair color, and overall appearance. She is walking barefoot on the sandy shore, with gentle waves lapping at her feet. The scene is set during golden hour, with warm sunlight casting a soft glow on her and the surroundings. Her hair flows naturally in the light ocean breeze, and she's wearing a casual, flowy summer dress. The background includes a clear blue sky, distant waves, and a few seagulls flying. The video should be smooth, with natural movements, and last for 10-15 seconds, focusing on her graceful walk along the beach.","","",""],"bgcolor":"#5345bf"},{"id":3,"type":"Runware Video Model Search","pos":[-661.7725830078125,204.88392639160156],"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":[1]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"adeaf95d4599b3395b2ba4463177416f5e9deb8b","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","MiniMax","minimax:4@2 (MiniMax Hailuo 2.3 Fast)",false],"bgcolor":"#5345bf"},{"id":5,"type":"Runware Frame Images","pos":[-657.7850341796875,433.94122314453125],"size":[270,190],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"image1","name":"image1","shape":7,"type":"IMAGE","link":5},{"localized_name":"image2","name":"image2","shape":7,"type":"IMAGE","link":null},{"localized_name":"image3","name":"image3","shape":7,"type":"IMAGE","link":null},{"localized_name":"image4","name":"image4","shape":7,"type":"IMAGE","link":null},{"localized_name":"frame1_position","name":"frame1_position","shape":7,"type":"COMBO","widget":{"name":"frame1_position"},"link":null},{"localized_name":"frame2_position","name":"frame2_position","shape":7,"type":"COMBO","widget":{"name":"frame2_position"},"link":null},{"localized_name":"frame3_position","name":"frame3_position","shape":7,"type":"COMBO","widget":{"name":"frame3_position"},"link":null},{"localized_name":"frame4_position","name":"frame4_position","shape":7,"type":"COMBO","widget":{"name":"frame4_position"},"link":null}],"outputs":[{"localized_name":"Frame Images","name":"Frame Images","type":"RUNWAREFRAMEIMAGES","links":[4]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"adeaf95d4599b3395b2ba4463177416f5e9deb8b","Node name for S&R":"Runware Frame Images"},"widgets_values":["auto","auto","auto","auto"],"bgcolor":"#5345bf"},{"id":2,"type":"Runware MiniMax Provider Settings","pos":[-711.0993041992188,709.1382446289062],"size":[322.4302673339844,58],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"promptOptimizer","name":"promptOptimizer","shape":7,"type":"BOOLEAN","widget":{"name":"promptOptimizer"},"link":null}],"outputs":[{"localized_name":"providerSettings","name":"providerSettings","type":"RUNWAREPROVIDERSETTINGS","links":[2]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"adeaf95d4599b3395b2ba4463177416f5e9deb8b","Node name for S&R":"Runware MiniMax Provider Settings"},"widgets_values":[true]},{"id":6,"type":"LoadImage","pos":[-975.0689697265625,224.47061157226562],"size":[274.080078125,314],"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":["human6.jpg","image"]}],"links":[[1,3,0,1,0,"RUNWAREVIDEOMODEL"],[2,2,0,1,3,"RUNWAREPROVIDERSETTINGS"],[3,1,0,4,0,"VIDEO"],[4,5,0,1,1,"RUNWAREFRAMEIMAGES"],[5,6,0,5,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.0288461455473215,"offset":[1193.6353140461606,-49.55153147379559]}},"version":0.4} \ No newline at end of file