65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
import os
|
|
import shutil
|
|
|
|
def blind_copy(source, destination):
|
|
os.makedirs(destination, exist_ok=True)
|
|
for filename in os.listdir(source):
|
|
source_file = os.path.join(source, filename)
|
|
if os.path.isfile(source_file):
|
|
shutil.copy(source_file, destination)
|
|
|
|
def copy_by_destination_files(source, destination):
|
|
os.makedirs(destination, exist_ok=True)
|
|
dest_files = set(os.listdir(destination))
|
|
for filename in os.listdir(source):
|
|
source_file = os.path.join(source, filename)
|
|
if os.path.isfile(source_file):
|
|
file_base_name = os.path.splitext(filename)[0]
|
|
dest_file_match = any(os.path.splitext(dest_filename)[0] == file_base_name for dest_filename in dest_files)
|
|
if dest_file_match and filename not in dest_files:
|
|
shutil.copy(source_file, destination)
|
|
|
|
class DATASET_xCopy:
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {
|
|
"required": {
|
|
"source_folder": ("STRING", {"default": "directory path"}),
|
|
"destination_folder": ("STRING", {"default": "directory path"}),
|
|
"mode": (['BlindCopy','CopyByDestinationFiles'],),
|
|
},
|
|
}
|
|
|
|
# INPUT_IS_LIST = True
|
|
RETURN_TYPES = ()
|
|
FUNCTION = "SaveIT"
|
|
OUTPUT_NODE = True
|
|
|
|
CATEGORY = "🔶DATASET🔶"
|
|
|
|
def SaveIT(self, source_folder, destination_folder, mode):
|
|
try:
|
|
|
|
if mode == 'BlindCopy':
|
|
blind_copy(source_folder, destination_folder)
|
|
elif mode == 'CopyByDestinationFiles':
|
|
copy_by_destination_files(source_folder, destination_folder)
|
|
|
|
except Exception as e:
|
|
print(f"Error saving: {e}")
|
|
|
|
return ()
|
|
|
|
|
|
N_CLASS_MAPPINGS = {
|
|
"DATASET_xCopy": DATASET_xCopy,
|
|
}
|
|
|
|
N_DISPLAY_NAME_MAPPINGS = {
|
|
"DATASET_xCopy": "DATASET_xCopy",
|
|
}
|