Merge c116d3396fda5b6b94293e240add0c54a8a3ba69 into f37df472dfb325f1f72c90e2df56e72f40f850f0

This commit is contained in:
VM8gkAs 2025-11-28 23:23:14 -03:00 committed by GitHub
commit 0763ac774e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3902,29 +3902,34 @@ class ImagePadKJ:
class LoadVideosFromFolder:
@classmethod
def __init__(cls):
cls.vhs_nodes = None
vhs_pkg_name = "ComfyUI-VideoHelperSuite"
vhs_pkg_name_lower = vhs_pkg_name.lower()
vhs_pkg_name_suffix = vhs_pkg_name_lower.split("-")[-1]
vhs_submodule_name = "videohelpersuite"
try:
cls.vhs_nodes = importlib.import_module("ComfyUI-VideoHelperSuite.videohelpersuite")
cls.vhs_nodes = importlib.import_module(vhs_pkg_name+"."+vhs_submodule_name)
except ImportError:
try:
cls.vhs_nodes = importlib.import_module("comfyui-videohelpersuite.videohelpersuite")
cls.vhs_nodes = importlib.import_module(vhs_pkg_name_lower+"."+vhs_submodule_name)
except ImportError:
# Fallback to sys.modules search for Windows compatibility
import sys
vhs_module = None
for module_name in sys.modules:
if 'videohelpersuite' in module_name and 'videohelpersuite' in sys.modules[module_name].__dict__:
if vhs_pkg_name_lower in module_name and vhs_submodule_name in sys.modules[module_name].__dict__:
vhs_module = sys.modules[module_name]
break
if vhs_module is None:
# Try direct access to the videohelpersuite submodule
for module_name in sys.modules:
if module_name.endswith('videohelpersuite'):
if module_name.endswith(vhs_pkg_name_suffix):
vhs_module = sys.modules[module_name]
break
if vhs_module is not None:
cls.vhs_nodes = vhs_module
cls.vhs_nodes = importlib.import_module(f"{vhs_module.__name__}.{vhs_submodule_name}")
else:
raise ImportError("This node requires ComfyUI-VideoHelperSuite to be installed.")
@ -3960,16 +3965,26 @@ class LoadVideosFromFolder:
FUNCTION = "load_video"
def load_video(self, output_type, grid_max_columns, add_label=False, **kwargs):
VIDEO_EXTS = ['webm', 'mp4', 'mkv', 'gif', 'mov']
if self.vhs_nodes is None:
raise ImportError("This node requires ComfyUI-VideoHelperSuite to be installed.")
videos_list = []
filenames = []
for f in os.listdir(kwargs['video']):
if os.path.isfile(os.path.join(kwargs['video'], f)):
file_parts = f.split('.')
if len(file_parts) > 1 and (file_parts[-1].lower() in ['webm', 'mp4', 'mkv', 'gif', 'mov']):
videos_list.append(os.path.join(kwargs['video'], f))
filenames.append(f)
root = kwargs['video']
pairs = []
for f in os.listdir(root):
full = os.path.join(root, f)
# Skip non-files fast
if not os.path.isfile(full):
continue
# Check extension
ext = f.rsplit('.', 1)[-1].lower() if '.' in f else ''
if ext in VIDEO_EXTS:
pairs.append((full, f))
def _natural_key(s):
s = os.path.basename(s)
return [int(t) if t.isdigit() else t.lower() for t in re.split(r'(\d+)', s)]
pairs.sort(key=lambda x: _natural_key(x[1]))
videos_list = [p[0] for p in pairs]
filenames = [p[1] for p in pairs]
print(videos_list)
kwargs.pop('video')
loaded_videos = []