Files
Runware-ComfyUI-Runware/modules/providerSettings/pixverseProviderSettings.py
T

149 lines
7.0 KiB
Python

class RunwarePixverseProviderSettings:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"useEffect": ("BOOLEAN", {
"tooltip": "Enable to include effect parameter in API request.",
"default": False,
}),
"effect": (["none", "boom drop", "zoom in", "zoom out", "pan left", "pan right", "tilt up", "tilt down"], {
"default": "none",
"tooltip": "Camera effect for Pixverse videos. Only used when 'Use Effect' is enabled.",
}),
"useCameraMovement": ("BOOLEAN", {
"tooltip": "Enable to include cameraMovement parameter in API request.",
"default": False,
}),
"cameraMovement": (["none", "static", "dynamic", "smooth"], {
"default": "none",
"tooltip": "Camera movement style for Pixverse videos. Only used when 'Use Camera Movement' is enabled.",
}),
"useStyle": ("BOOLEAN", {
"tooltip": "Enable to include style parameter in API request.",
"default": False,
}),
"style": (["anime", "realistic", "cinematic", "artistic", "vintage", "modern"], {
"default": "realistic",
"tooltip": "Visual style for Pixverse videos. Only used when 'Use Style' is enabled.",
}),
"useMotionMode": ("BOOLEAN", {
"tooltip": "Enable to include motionMode parameter in API request.",
"default": False,
}),
"motionMode": (["normal", "slow", "fast", "smooth", "dynamic"], {
"default": "normal",
"tooltip": "Motion mode for Pixverse videos. Only used when 'Use Motion Mode' is enabled.",
}),
"useSoundEffectSwitch": ("BOOLEAN", {
"tooltip": "Enable to include soundEffectSwitch parameter in API request.",
"default": False,
}),
"soundEffectSwitch": ("BOOLEAN", {
"default": False,
"tooltip": "Enable or disable sound effects for Pixverse videos. Only used when 'Use Sound Effect Switch' is enabled.",
"label_on": "Enabled",
"label_off": "Disabled",
}),
"useSoundEffectContent": ("BOOLEAN", {
"tooltip": "Enable to include soundEffectContent parameter in API request.",
"default": False,
}),
"soundEffectContent": ("STRING", {
"multiline": True,
"placeholder": "Sound effect description or content",
"tooltip": "Sound effect content for Pixverse videos. Only used when 'Use Sound Effect Content' is enabled.",
}),
"useAudio": ("BOOLEAN", {
"tooltip": "Enable to include audio parameter in API request.",
"default": False,
}),
"audio": ("BOOLEAN", {
"tooltip": "Controls audio generation for Pixverse videos. Only used when 'Use Audio' is enabled.",
"default": False,
}),
"useMultiClip": ("BOOLEAN", {
"tooltip": "Enable to include multiClip parameter in API request.",
"default": False,
}),
"multiClip": ("BOOLEAN", {
"tooltip": "Multi-clip (Multi-shot) for Pixverse videos. Only used when 'Use Multi Clip' is enabled.",
"default": False,
}),
"useThinking": ("BOOLEAN", {
"tooltip": "Enable to include thinking parameter in API request.",
"default": False,
}),
"thinking": (["enabled", "disabled", "auto"], {
"tooltip": "Thinking option for Pixverse videos. Only used when 'Use Thinking' is enabled.",
"default": "auto",
}),
}
}
DESCRIPTION = "Configure Pixverse-specific settings for video generation with effect, style, motion, and sound options."
FUNCTION = "create_pixverse_settings"
RETURN_TYPES = ("RUNWAREPROVIDERSETTINGS",)
RETURN_NAMES = ("Provider Settings",)
CATEGORY = "Runware"
def create_pixverse_settings(self, **kwargs):
useEffect = kwargs.get("useEffect", False)
effect = kwargs.get("effect", "none")
useCameraMovement = kwargs.get("useCameraMovement", False)
cameraMovement = kwargs.get("cameraMovement", "none")
useStyle = kwargs.get("useStyle", False)
style = kwargs.get("style", "realistic")
useMotionMode = kwargs.get("useMotionMode", False)
motionMode = kwargs.get("motionMode", "normal")
useSoundEffectSwitch = kwargs.get("useSoundEffectSwitch", False)
soundEffectSwitch = kwargs.get("soundEffectSwitch", False)
useSoundEffectContent = kwargs.get("useSoundEffectContent", False)
soundEffectContent = kwargs.get("soundEffectContent", "")
useAudio = kwargs.get("useAudio", False)
audio = kwargs.get("audio", False)
useMultiClip = kwargs.get("useMultiClip", False)
multiClip = kwargs.get("multiClip", False)
useThinking = kwargs.get("useThinking", False)
thinking = kwargs.get("thinking", "auto")
# Create Pixverse settings dictionary - only include parameters if their use flags are enabled
pixverse_settings = {}
if useEffect:
pixverse_settings["effect"] = effect
if useCameraMovement:
pixverse_settings["cameraMovement"] = cameraMovement
if useStyle:
pixverse_settings["style"] = style
if useMotionMode:
pixverse_settings["motionMode"] = motionMode
if useSoundEffectSwitch:
pixverse_settings["soundEffectSwitch"] = soundEffectSwitch
if useSoundEffectContent and soundEffectContent and soundEffectContent.strip():
pixverse_settings["soundEffectContent"] = soundEffectContent
if useAudio:
pixverse_settings["audio"] = audio
if useMultiClip:
pixverse_settings["multiClip"] = multiClip
if useThinking:
pixverse_settings["thinking"] = thinking
# Remove "none" values to keep the settings clean
pixverse_settings = {k: v for k, v in pixverse_settings.items() if v != "none" and v is not None}
print(f"[Pixverse Provider Settings] Created settings: {pixverse_settings}")
return (pixverse_settings,)
# Node class mappings for ComfyUI registration
NODE_CLASS_MAPPINGS = {
"RunwarePixverseProviderSettings": RunwarePixverseProviderSettings,
}
NODE_DISPLAY_NAME_MAPPINGS = {
"RunwarePixverseProviderSettings": "Runware Pixverse Provider Settings",
}