First Commit
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
# ComfyUI-FilePathsFromFolder
|
||||
|
||||
A simple ComfyUI custom node pack for loading and selecting files from folders.
|
||||
|
||||
## Nodes
|
||||
|
||||
### LoadFilePathsFromFolder
|
||||
Scans a folder for files matching a specific extension pattern.
|
||||
|
||||
**Parameters:**
|
||||
- `folder_path`: Path to the folder to scan
|
||||
- `extension`: File extension pattern (e.g., "*.png", "*.jpg", "*.txt")
|
||||
|
||||
**Outputs:**
|
||||
- `filepaths`: Line-break separated list of full file paths
|
||||
- `filenames`: Line-break separated list of filenames without extensions
|
||||
- `count`: Number of files matched
|
||||
|
||||
### GetPathByIndex
|
||||
Selects a specific file from the lists by index.
|
||||
|
||||
**Inputs:**
|
||||
- `filenames`: Line-break separated filenames (from LoadFilePathsFromFolder)
|
||||
- `filepaths`: Line-break separated filepaths (from LoadFilePathsFromFolder)
|
||||
|
||||
**Parameters:**
|
||||
- `index`: Index of the file to select (0-based)
|
||||
|
||||
**Outputs:**
|
||||
- `filename`: Selected filename
|
||||
- `filepath`: Selected filepath
|
||||
|
||||
## Installation
|
||||
|
||||
Place this folder in your ComfyUI `custom_nodes` directory and restart ComfyUI.
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
from .nodes import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
|
||||
|
||||
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS']
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,84 @@
|
||||
import os
|
||||
import glob
|
||||
|
||||
|
||||
class LoadFilePathsFromFolder:
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
return {
|
||||
"required": {
|
||||
"folder_path": ("STRING", {"default": ""}),
|
||||
"extension": ("STRING", {"default": "*.png"}),
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("STRING", "STRING", "INT")
|
||||
RETURN_NAMES = ("filepaths", "filenames", "count")
|
||||
FUNCTION = "load_files"
|
||||
CATEGORY = "FilePathsFromFolder"
|
||||
|
||||
def load_files(self, folder_path, extension):
|
||||
# Build search pattern
|
||||
search_pattern = os.path.join(folder_path, extension)
|
||||
|
||||
# Find all matching files
|
||||
matched_files = glob.glob(search_pattern)
|
||||
matched_files.sort()
|
||||
|
||||
# Extract file paths and names
|
||||
filepaths = []
|
||||
filenames = []
|
||||
|
||||
for filepath in matched_files:
|
||||
filepaths.append(filepath)
|
||||
# Get filename without extension
|
||||
basename = os.path.basename(filepath)
|
||||
filename_without_ext = os.path.splitext(basename)[0]
|
||||
filenames.append(filename_without_ext)
|
||||
|
||||
# Join with line breaks
|
||||
filepaths_str = "\n".join(filepaths)
|
||||
filenames_str = "\n".join(filenames)
|
||||
count = len(matched_files)
|
||||
|
||||
return (filepaths_str, filenames_str, count)
|
||||
|
||||
|
||||
class GetPathByIndex:
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
return {
|
||||
"required": {
|
||||
"filepaths": ("STRING", {"default": "", "multiline": True}),
|
||||
"filenames": ("STRING", {"default": "", "multiline": True}),
|
||||
"index": ("INT", {"default": 0, "min": 0}),
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("STRING", "STRING")
|
||||
RETURN_NAMES = ("filepath", "filename")
|
||||
FUNCTION = "get_by_index"
|
||||
CATEGORY = "FilePathsFromFolder"
|
||||
|
||||
def get_by_index(self, filepaths, filenames, index):
|
||||
# Split by line breaks
|
||||
filepath_list = filepaths.split("\n") if filepaths else []
|
||||
filename_list = filenames.split("\n") if filenames else []
|
||||
|
||||
# Get item at index (default to empty if out of range)
|
||||
filepath = filepath_list[index] if index < len(filepath_list) else ""
|
||||
filename = filename_list[index] if index < len(filename_list) else ""
|
||||
|
||||
return (filepath, filename)
|
||||
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"LoadFilePathsFromFolder": LoadFilePathsFromFolder,
|
||||
"GetPathByIndex": GetPathByIndex,
|
||||
}
|
||||
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"LoadFilePathsFromFolder": "Load File Paths From Folder",
|
||||
"GetPathByIndex": "Get Path By Index",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user