diff --git a/clientlibs/utils.js b/clientlibs/utils.js index 4fc3010..bde3407 100644 --- a/clientlibs/utils.js +++ b/clientlibs/utils.js @@ -4246,12 +4246,14 @@ export { function googleProviderSettingsToggleHandler(googleNode) { // Find all "use" parameter widgets for Google Provider Settings - const useGenerateAudioWidget = googleNode.widgets.find(w => w.name === "useGenerateAudio"); - const generateAudioWidget = googleNode.widgets.find(w => w.name === "generateAudio"); - const useEnhancePromptWidget = googleNode.widgets.find(w => w.name === "useEnhancePrompt"); - const enhancePromptWidget = googleNode.widgets.find(w => w.name === "enhancePrompt"); - const useSearchWidget = googleNode.widgets.find(w => w.name === "useSearch"); - const searchWidget = googleNode.widgets.find(w => w.name === "search"); + const useGenerateAudioWidget = googleNode.widgets.find(w => w && w.name === "useGenerateAudio"); + const generateAudioWidget = googleNode.widgets.find(w => w && w.name === "generateAudio"); + const useEnhancePromptWidget = googleNode.widgets.find(w => w && w.name === "useEnhancePrompt"); + const enhancePromptWidget = googleNode.widgets.find(w => w && w.name === "enhancePrompt"); + const useSearchWidget = googleNode.widgets.find(w => w && w.name === "useSearch"); + const searchWidget = googleNode.widgets.find(w => w && w.name === "search"); + const useResizeModeWidget = googleNode.widgets.find(w => w && w.name === "useResizeMode"); + const resizeModeWidget = googleNode.widgets.find(w => w && w.name === "resizeMode"); // Helper function to toggle widget enabled state function toggleWidgetState(useWidget, paramWidget, paramName) { @@ -4305,6 +4307,9 @@ function googleProviderSettingsToggleHandler(googleNode) { if (useSearchWidget && searchWidget) { toggleWidgetState(useSearchWidget, searchWidget, "search"); } + if (useResizeModeWidget && resizeModeWidget) { + toggleWidgetState(useResizeModeWidget, resizeModeWidget, "resizeMode"); + } } function settingsToggleHandler(settingsNode) { diff --git a/modules/providerSettings/googleProviderSettings.py b/modules/providerSettings/googleProviderSettings.py index 6af71c5..b8b4d73 100644 --- a/modules/providerSettings/googleProviderSettings.py +++ b/modules/providerSettings/googleProviderSettings.py @@ -44,6 +44,14 @@ class RunwareGoogleProviderSettings: "label_on": "Enabled", "label_off": "Disabled", }), + "useResizeMode": ("BOOLEAN", { + "tooltip": "Enable to include resizeMode in providerSettings.google (image resize behavior).", + "default": False, + }), + "resizeMode": (["crop", "pad"], { + "tooltip": "Value for providerSettings.google.resizeMode. Must be 'crop' or 'pad'. Only used when 'Use Resize Mode' is enabled.", + "default": "crop", + }), } } @@ -51,7 +59,7 @@ class RunwareGoogleProviderSettings: RETURN_NAMES = ("Provider Settings",) FUNCTION = "createProviderSettings" CATEGORY = "Runware/Provider Settings" - DESCRIPTION = "Configure Google-specific provider settings for image/video generation including audio generation, prompt enhancement, and search." + DESCRIPTION = "Configure Google-specific provider settings for image/video generation including audio generation, prompt enhancement, search, and resizeMode (crop/pad)." def createProviderSettings(self, **kwargs) -> tuple[Dict[str, Any]]: """Create Google provider settings""" @@ -60,11 +68,13 @@ class RunwareGoogleProviderSettings: useGenerateAudio = kwargs.get("useGenerateAudio", False) useEnhancePrompt = kwargs.get("useEnhancePrompt", False) useSearch = kwargs.get("useSearch", False) + useResizeMode = kwargs.get("useResizeMode", False) # Get value parameters generateAudio = kwargs.get("generateAudio", False) enhancePrompt = kwargs.get("enhancePrompt", False) search = kwargs.get("search", False) + resizeMode = kwargs.get("resizeMode", "crop") # Build settings dictionary - only include what is enabled googleSettings: Dict[str, Any] = {} @@ -76,6 +86,9 @@ class RunwareGoogleProviderSettings: googleSettings["enhancePrompt"] = enhancePrompt if useSearch: googleSettings["search"] = search + if useResizeMode: + mode = str(resizeMode).strip().lower() if resizeMode is not None else "crop" + googleSettings["resizeMode"] = mode if mode in ("crop", "pad") else "crop" # Clean up None values googleSettings = {k: v for k, v in googleSettings.items() if v is not None} diff --git a/workflows/Runware_Video_Inference_Google_ProviderSettings_resize.json b/workflows/Runware_Video_Inference_Google_ProviderSettings_resize.json new file mode 100644 index 0000000..952b1d3 --- /dev/null +++ b/workflows/Runware_Video_Inference_Google_ProviderSettings_resize.json @@ -0,0 +1 @@ +{"id":"a5166766-6ca8-4622-8dcb-d20fb15a3c70","revision":0,"last_node_id":7,"last_link_id":5,"nodes":[{"id":2,"type":"SaveVideo","pos":[965.4191284179688,543.7517700195312],"size":[270,249.875],"flags":{},"order":5,"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":"Runware Video Model Search","pos":[65.66668701171875,521.18408203125],"size":[287.380859375,250],"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},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"COMBO","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":"useResolution","name":"useResolution","type":"BOOLEAN","widget":{"name":"useResolution"},"link":null},{"localized_name":"resolution","name":"resolution","type":"COMBO","widget":{"name":"resolution"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[3]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"95101db010b7891ce2751a9e36fd5232c3be28fc","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","Veo","google:3@3 (Veo 3.1 Fast)",false,"Model Default",1280,720,false,"1080p"],"bgcolor":"#5345bf"},{"id":7,"type":"LoadImage","pos":[-219.50685119628906,634.5602416992188],"size":[274.080078125,314.00006103515625],"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":[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":["0c5b1d6a-84ab-4276-80cc-65ccfb2b54a9.png","image"]},{"id":6,"type":"Runware Frame Images","pos":[116.00657653808594,886.4141235351562],"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":"95101db010b7891ce2751a9e36fd5232c3be28fc","Node name for S&R":"Runware Frame Images"},"widgets_values":["first","auto","auto","auto"],"bgcolor":"#5345bf"},{"id":1,"type":"Runware Video Inference","pos":[429.79864501953125,492.94287109375],"size":[400,818],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":3},{"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":"speech","name":"speech","shape":7,"type":"RUNWAREVIDEOINFERENCESPEECHINPUT","link":null},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREVIDEOINFERENCEINPUTS","link":null},{"localized_name":"safetyInputs","name":"safetyInputs","shape":7,"type":"RUNWARESAFETYINPUTS","link":null},{"localized_name":"videoAdvancedFeatureInputs","name":"videoAdvancedFeatureInputs","shape":7,"type":"RUNWAREVIDEOADVANCEDFEATUREINPUTS","link":null},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"settings","name":"settings","shape":7,"type":"RUNWAREVIDEOSETTINGS","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":"useDuration","name":"useDuration","type":"BOOLEAN","widget":{"name":"useDuration"},"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":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"useBatchSize","name":"useBatchSize","type":"BOOLEAN","widget":{"name":"useBatchSize"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"useSchedulers","name":"useSchedulers","type":"BOOLEAN","widget":{"name":"useSchedulers"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"useCFGScale","name":"useCFGScale","type":"BOOLEAN","widget":{"name":"useCFGScale"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"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}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[1]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null},{"localized_name":"OUTPUT","name":"OUTPUT","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"95101db010b7891ce2751a9e36fd5232c3be28fc","Node name for S&R":"Runware Video Inference"},"widgets_values":[false,"Disabled",true,4,false,24,"mp4",true,631022578,"randomize",false,20,false,1,false,"euler",false,5,"none","Time-lapse of sunset over city skyline",""],"bgcolor":"#5345bf"},{"id":3,"type":"Runware Google Provider Settings","pos":[939.0076904296875,939.4933471679688],"size":[315.4576110839844,226],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"useGenerateAudio","name":"useGenerateAudio","shape":7,"type":"BOOLEAN","widget":{"name":"useGenerateAudio"},"link":null},{"localized_name":"generateAudio","name":"generateAudio","shape":7,"type":"BOOLEAN","widget":{"name":"generateAudio"},"link":null},{"localized_name":"useEnhancePrompt","name":"useEnhancePrompt","shape":7,"type":"BOOLEAN","widget":{"name":"useEnhancePrompt"},"link":null},{"localized_name":"enhancePrompt","name":"enhancePrompt","shape":7,"type":"BOOLEAN","widget":{"name":"enhancePrompt"},"link":null},{"localized_name":"useSearch","name":"useSearch","shape":7,"type":"BOOLEAN","widget":{"name":"useSearch"},"link":null},{"localized_name":"search","name":"search","shape":7,"type":"BOOLEAN","widget":{"name":"search"},"link":null},{"localized_name":"useResizeMode","name":"useResizeMode","shape":7,"type":"BOOLEAN","widget":{"name":"useResizeMode"},"link":null},{"localized_name":"resizeMode","name":"resizeMode","shape":7,"type":"COMBO","widget":{"name":"resizeMode"},"link":null}],"outputs":[{"localized_name":"Provider Settings","name":"Provider Settings","type":"RUNWAREPROVIDERSETTINGS","links":[2]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"95101db010b7891ce2751a9e36fd5232c3be28fc","Node name for S&R":"Runware Google Provider Settings"},"widgets_values":[false,false,false,false,false,false,true,"crop"],"bgcolor":"#5345bf"}],"links":[[1,1,0,2,0,"VIDEO"],[2,3,0,1,3,"RUNWAREPROVIDERSETTINGS"],[3,4,0,1,0,"RUNWAREVIDEOMODEL"],[4,6,0,1,1,"RUNWAREFRAMEIMAGES"],[5,7,0,6,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.6830134553650705,"offset":[305.81435735430057,-431.6794784213532]}},"version":0.4} \ No newline at end of file