mirror of
https://github.com/justUmen/Bjornulf_custom_nodes.git
synced 2026-03-21 12:42:11 -03:00
54 lines
2.2 KiB
Python
54 lines
2.2 KiB
Python
import random
|
|
import json
|
|
import os
|
|
import re
|
|
|
|
class ScramblerCharacter:
|
|
def __init__(self):
|
|
self.scramble_config = self.load_scramble_config()
|
|
|
|
def load_scramble_config(self):
|
|
script_dir = os.path.dirname(os.path.realpath(__file__))
|
|
config_path = os.path.join(script_dir, "scrambler/character_scrambler.json")
|
|
with open(config_path, "r") as f:
|
|
return json.load(f)
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {
|
|
"required": {
|
|
"text": ("STRING", {"multiline": True, "default": "photography portrait of a happy middle-aged swedish woman nurse with a fit body, wearing a black headband, large blue parka and orange jeans."}),
|
|
"seed": ("INT", {"default": 0}),
|
|
},
|
|
"optional": {
|
|
"image_styles": ("BOOLEAN", {"default": False}),
|
|
"ages": ("BOOLEAN", {"default": False}),
|
|
"sex": ("BOOLEAN", {"default": False}),
|
|
"body_types": ("BOOLEAN", {"default": False}),
|
|
"colors": ("BOOLEAN", {"default": False}),
|
|
"emotions": ("BOOLEAN", {"default": False}),
|
|
"nationalities": ("BOOLEAN", {"default": False}),
|
|
"clothing_head": ("BOOLEAN", {"default": False}),
|
|
"clothing_top": ("BOOLEAN", {"default": False}),
|
|
"clothing_bottom": ("BOOLEAN", {"default": False}),
|
|
"occupations": ("BOOLEAN", {"default": False}),
|
|
"sizes": ("BOOLEAN", {"default": False}),
|
|
"image_types": ("BOOLEAN", {"default": False}),
|
|
}
|
|
}
|
|
|
|
RETURN_TYPES = ("STRING",)
|
|
FUNCTION = "scramble_words"
|
|
CATEGORY = "Bjornulf"
|
|
|
|
def scramble_words(self, text, seed=None, **kwargs):
|
|
if seed is not None:
|
|
random.seed(seed)
|
|
|
|
for category, config in self.scramble_config.items():
|
|
if kwargs.get(f"{category}", config.get("enabled", False)):
|
|
words = config["words"]
|
|
pattern = r'\b(' + '|'.join(re.escape(word) for word in words) + r')\b'
|
|
text = re.sub(pattern, lambda m: random.choice(words), text, flags=re.IGNORECASE)
|
|
|
|
return (text,) |