From d96b86bdedf1089e4e9fa48ed9581ffd6faf1358 Mon Sep 17 00:00:00 2001 From: tritant Date: Thu, 4 Jul 2024 11:12:27 +0200 Subject: [PATCH] add initial files --- __init__.py | 3 ++ creaprompt.py | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 __init__.py create mode 100644 creaprompt.py diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..c6a8bff --- /dev/null +++ b/__init__.py @@ -0,0 +1,3 @@ +from .creaprompt import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS + +__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS'] diff --git a/creaprompt.py b/creaprompt.py new file mode 100644 index 0000000..42a725c --- /dev/null +++ b/creaprompt.py @@ -0,0 +1,96 @@ +# ComfyUI version of CreaPrompt by Jicé Deb +import random +import json +import os + +script_directory = os.path.dirname(__file__) +os.chdir(script_directory) +folder_path = os.path.join(script_directory, "csv" ) + +def getfilename(): + name = [] + for filename in os.listdir(folder_path): + if filename.endswith(".csv"): + name.append(filename[3:-4]) + return name + +def select_random_line_from_csv_file(file): + chosen_lines = [] + for filename in os.listdir(folder_path): + if filename.endswith(".csv") and filename[3:-4] == file: + file_path = os.path.join(folder_path, filename) + with open(file_path, 'r', encoding='utf-8') as file: + lines = file.readlines() + if lines: + chosen_lines.append(random.choice(lines).strip()) + lines_chosed = "".join(chosen_lines) + return lines_chosed + +name_of_files = getfilename() + +class CreaPrompt: + RETURN_TYPES = ( + "STRING", + "INT", + ) + RETURN_NAMES = ( + "prompt", + "seed", + ) + FUNCTION = "create_prompt" + CATEGORY = "CreaPrompt" + + def __init__(self, seed=None): + self.rng = random.Random(seed) + + @classmethod + def IS_CHANGED(cls): + return float("NaN") + + @classmethod + def INPUT_TYPES(cls): + required = {} + for filename in os.listdir(folder_path): + if filename.endswith(".csv"): + file_path = os.path.join(folder_path, filename) + lines = [] + with open(file_path, 'r', encoding='utf-8') as file: + lines = file.readlines() + required[filename [3:-4]] = (["disabled"] + ["🎲random"] + lines, {"default": "disabled"}) + return { + "required": required, + "optional": { + "seed": ( + "INT", + {"default": 0, "min": 0, "max": 1125899906842624}, + ), + }, + } + def create_prompt(self, **kwargs): + seed = kwargs.get("seed", 0) + concatenated_values = "" + values = [] + values = [""] * len(name_of_files) + for i, filename in enumerate(name_of_files): + if kwargs.get(filename, 0) == "🎲random": + values[i] = select_random_line_from_csv_file(filename) + else: + values[i] = kwargs.get(filename, 0) + values[i] = values[i].strip() + for value in values: + if value != "disabled": + concatenated_values += value + "," + print(f"CreaPrompt Seed : {seed}") + final_prompt = concatenated_values + print(f"CreaPrompt prompt: {final_prompt}") + return ( + final_prompt, + seed, + ) +NODE_CLASS_MAPPINGS = { + "CreaPrompt": CreaPrompt, +} +NODE_DISPLAY_NAME_MAPPINGS = { + "CreaPrompt": "CreaPrompt", + "CSL": "Comma Separated List", +}