|
|
|
|
|
|
|
|
|
|
| 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)
|
|
|
| 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 = [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
|
|
|
|
|
|
|