Spaces:
Running
on
Zero
Running
on
Zero
| #---------------------------------------------------------------------------------------------------------------------# | |
| # CR Animation Nodes by RockOfFire and Akatsuzi https://github.com/Suzie1/CR-Animation-Nodes | |
| # for ComfyUI https://github.com/comfyanonymous/ComfyUI | |
| #---------------------------------------------------------------------------------------------------------------------# | |
| import json | |
| import os | |
| #---------------------------------------------------------------------------------------------------------------------# | |
| def read_json_file(file_path): | |
| """ | |
| Reads a JSON file's content and returns it. | |
| Ensures content matches the expected format. | |
| """ | |
| if not os.access(file_path, os.R_OK): | |
| print(f"Warning: No read permissions for file {file_path}") | |
| return None | |
| try: | |
| with open(file_path, 'r', encoding='utf-8') as file: | |
| content = json.load(file) | |
| # Check if the content matches the expected format. | |
| if not all(['name' in item and 'prompt' in item and 'negative_prompt' in item for item in content]): | |
| print(f"Warning: Invalid content in file {file_path}") | |
| return None | |
| return content | |
| except Exception as e: | |
| print(f"An error occurred while reading {file_path}: {str(e)}") | |
| return None | |
| #---------------------------------------------------------------------------------------------------------------------# | |
| def load_styles_from_directory(directory): | |
| """ | |
| Loads styles from all JSON files in the directory. | |
| Renames duplicate style names by appending a suffix. | |
| """ | |
| #json_files = get_all_json_files(directory) | |
| json_files = [os.path.join(directory, file) for file in os.listdir(directory) if file.endswith('.json') and os.path.isfile(os.path.join(directory, file))] | |
| combined_data = [] | |
| seen = set() | |
| for json_file in json_files: | |
| json_data = read_json_file(json_file) | |
| if json_data: | |
| for item in json_data: | |
| original_style = item['name'] | |
| style = original_style | |
| suffix = 1 | |
| while style in seen: | |
| style = f"{original_style}_{suffix}" | |
| suffix += 1 | |
| item['name'] = style | |
| seen.add(style) | |
| combined_data.append(item) | |
| unique_style_names = [item['name'] for item in combined_data if isinstance(item, dict) and 'name' in item] | |
| return combined_data, unique_style_names | |
| #---------------------------------------------------------------------------------------------------------------------# | |