Major update
Made changes to make nodes more cohesive
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
import os
|
||||
|
||||
def search_and_select_files(search_in_directory, search_for_extension, select_from_directory, select_extension):
|
||||
# Search for files with the specified extension in the search_in_directory
|
||||
search_results = [file for file in os.listdir(search_in_directory) if file.endswith(search_for_extension)]
|
||||
search_results_names = {os.path.splitext(file)[0] for file in search_results}
|
||||
# List all files with the specified extension in the select_from_directory
|
||||
selection_files = [file for file in os.listdir(select_from_directory) if file.endswith(select_extension)]
|
||||
selection_files_dict = {os.path.splitext(file)[0]: file for file in selection_files}
|
||||
# Find the matching files based on the names
|
||||
matching_files = [selection_files_dict[name] for name in search_results_names if name in selection_files_dict]
|
||||
# Prepare the return values
|
||||
matching_files_full_paths = [os.path.join(select_from_directory, file) for file in matching_files]
|
||||
matching_files_with_extensions = matching_files
|
||||
matching_files_without_extensions = [os.path.splitext(file)[0] for file in matching_files]
|
||||
return (matching_files_with_extensions, matching_files_without_extensions, matching_files_full_paths)
|
||||
|
||||
class DataSet_PathSelector:
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
|
||||
return {
|
||||
"required": {
|
||||
"search_in_directory": ("STRING", {"multiline": False, "default": ""}),
|
||||
"search_for_extension": ("STRING", {"multiline": False, "default": ""}),
|
||||
"select_from_directory": ("STRING", {"multiline": False, "default": ""}),
|
||||
"select_extension": ("STRING", {"multiline": False, "default": ""}),
|
||||
},
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("STRING", "STRING", "INT",)
|
||||
RETURN_NAMES = ("SelectedNamesWithExtension","SelectedNamesWithoutExtension", "SelectedPaths")
|
||||
OUTPUT_IS_LIST = (True, True, True)
|
||||
OUTPUT_NODE = True
|
||||
FUNCTION = "make_list"
|
||||
CATEGORY = "🔶DATASET🔶"
|
||||
|
||||
def make_list(self, search_in_directory, search_for_extension, select_from_directory, select_extension):
|
||||
|
||||
try:
|
||||
|
||||
if not os.path.exists(search_in_directory):
|
||||
print(f"The folder '{search_in_directory}' does not exist.")
|
||||
return ([], [], 0)
|
||||
|
||||
if not os.path.exists(select_from_directory):
|
||||
print(f"The folder '{select_from_directory}' does not exist.")
|
||||
return ([], [], 0)
|
||||
|
||||
search_for_extension = search_for_extension if search_for_extension.startswith('.') else '.' + search_for_extension
|
||||
select_extension = select_extension if select_extension.startswith('.') else '.' + select_extension
|
||||
|
||||
a,b,c = search_and_select_files(search_in_directory, search_for_extension, select_from_directory, select_extension)
|
||||
return (a,b,c)
|
||||
|
||||
except Exception as e:
|
||||
print(f"An error occurred: {e}")
|
||||
return ([], [], [])
|
||||
|
||||
N_CLASS_MAPPINGS = {
|
||||
"DataSet_PathSelector": DataSet_PathSelector,
|
||||
}
|
||||
|
||||
N_DISPLAY_NAME_MAPPINGS = {
|
||||
"DataSet_PathSelector": "DataSet_PathSelector",
|
||||
}
|
||||
Reference in New Issue
Block a user