from contextlib import nullcontext import csv import random import gradio as gr from gradio.components import Textbox, Dropdown def parametroAleatorio(lista): res = random.choice(list(lista)) while res == '': res = random.choice(list(lista)) return res def concat_prompt(*args): campos = {arg: valor for arg, valor in zip(csv_reader.fieldnames, args)} choices = [campo.strip() for campo in campos.values() if campo] for campo, valor in campos.items(): if not valor: # Si el campo está vacío, se selecciona un valor aleatorio de la lista correspondiente campos[campo] = parametroAleatorio(valoresUnicos[campo]) choices.append(campos[campo]) prompt = ', '.join(choices) return prompt with open('volumetrics.csv', 'r') as csv_file: csv_reader = csv.DictReader(csv_file) valoresUnicos = {} for campo in csv_reader.fieldnames: valoresUnicos[campo] = set() for row in csv_reader: for campo, valor in row.items(): valoresUnicos[campo].add(valor) dropdowns = [] for campo, valores in valoresUnicos.items(): dropdown = Dropdown(list(valores), label=campo.capitalize()) dropdowns.append(dropdown) output_text = Textbox(label='Prompt') title = "Generador Prompts Midjourney" description = '
Selecciona entre los distintos menús desplegables para generar un Prompt creativo, los que dejes en blanco serán elegidos aleatoriamente.
' inputs = [Dropdown(list(valoresUnicos[campo]), label=campo.capitalize()) for campo in valoresUnicos.keys()] outputs = output_text gr.Interface(fn=concat_prompt, inputs=inputs, outputs=outputs, title=title, description=description).launch()