Files
Bjornulf_custom_nodes/text_scramble_character.py
justumen c0997587c7 0.45
2024-09-25 12:01:55 +02:00

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,)