105 lines
3.5 KiB
Python
105 lines
3.5 KiB
Python
"""
|
|
Runware Sync Segment Node
|
|
Creates a sync segment configuration for sync provider settings
|
|
"""
|
|
|
|
from typing import Dict, Any
|
|
|
|
|
|
class RunwareSyncSegment:
|
|
"""Runware Sync Segment Node"""
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"startTime": ("FLOAT", {
|
|
"tooltip": "Start time of the segment in seconds",
|
|
"default": 0.0,
|
|
"min": 0.0,
|
|
"step": 0.1,
|
|
}),
|
|
"endTime": ("FLOAT", {
|
|
"tooltip": "End time of the segment in seconds",
|
|
"default": 1.0,
|
|
"min": 0.0,
|
|
"step": 0.1,
|
|
}),
|
|
"ref": ("STRING", {
|
|
"tooltip": "Reference identifier for the audio track (e.g., 'audio-track-1', 'speech-track-1')",
|
|
"default": "audio-track-1",
|
|
}),
|
|
},
|
|
"optional": {
|
|
"useAudioStartTime": ("BOOLEAN", {
|
|
"tooltip": "Enable to include audioStartTime parameter",
|
|
"default": False,
|
|
}),
|
|
"audioStartTime": ("FLOAT", {
|
|
"tooltip": "Start time in the audio track in seconds. Only used when 'Use Audio Start Time' is enabled.",
|
|
"default": 0.0,
|
|
"min": 0.0,
|
|
"step": 0.1,
|
|
}),
|
|
"useAudioEndTime": ("BOOLEAN", {
|
|
"tooltip": "Enable to include audioEndTime parameter",
|
|
"default": False,
|
|
}),
|
|
"audioEndTime": ("FLOAT", {
|
|
"tooltip": "End time in the audio track in seconds. Only used when 'Use Audio End Time' is enabled.",
|
|
"default": 1.0,
|
|
"min": 0.0,
|
|
"step": 0.1,
|
|
}),
|
|
}
|
|
}
|
|
|
|
RETURN_TYPES = ("RUNWARESYNCSEGMENT",)
|
|
RETURN_NAMES = ("Sync Segment",)
|
|
FUNCTION = "createSyncSegment"
|
|
CATEGORY = "Runware/Provider Settings"
|
|
DESCRIPTION = "Create a sync segment configuration for sync provider settings."
|
|
|
|
def createSyncSegment(self, **kwargs) -> tuple[Dict[str, Any]]:
|
|
"""Create sync segment configuration"""
|
|
|
|
# Get required parameters
|
|
startTime = kwargs.get("startTime", 0.0)
|
|
endTime = kwargs.get("endTime", 1.0)
|
|
ref = kwargs.get("ref", "audio-track-1")
|
|
|
|
# Get optional parameters
|
|
useAudioStartTime = kwargs.get("useAudioStartTime", False)
|
|
audioStartTime = kwargs.get("audioStartTime", 0.0)
|
|
useAudioEndTime = kwargs.get("useAudioEndTime", False)
|
|
audioEndTime = kwargs.get("audioEndTime", 1.0)
|
|
|
|
# Build segment dictionary
|
|
segment: Dict[str, Any] = {
|
|
"startTime": float(startTime),
|
|
"endTime": float(endTime),
|
|
"ref": str(ref),
|
|
}
|
|
|
|
# Add optional audio timing parameters
|
|
if useAudioStartTime:
|
|
segment["audioStartTime"] = float(audioStartTime)
|
|
if useAudioEndTime:
|
|
segment["audioEndTime"] = float(audioEndTime)
|
|
|
|
# Clean up None values
|
|
segment = {k: v for k, v in segment.items() if v is not None}
|
|
|
|
return (segment,)
|
|
|
|
|
|
# Node class mappings
|
|
NODE_CLASS_MAPPINGS = {
|
|
"RunwareSyncSegment": RunwareSyncSegment,
|
|
}
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"RunwareSyncSegment": "Runware Sync Segment",
|
|
}
|
|
|