Spaces:
Running
Running
from contextlib import nullcontext | |
import csv | |
import os.path | |
import random | |
import gradio as gr | |
from gradio.components import Textbox, Dropdown | |
from gradio import Interface, TabbedInterface | |
def parametroAleatorio(lista): | |
res = random.choice(list(lista)) | |
while res == '': | |
res = random.choice(list(lista)) | |
return res | |
def make_concat_prompt(csv_reader, valoresUnicos): | |
def concat_prompt(*args): | |
campos = {campo: parametroAleatorio(valoresUnicos[campo]) for campo in csv_reader.fieldnames} | |
campos.update({campo: valor for campo, valor in zip(csv_reader.fieldnames, args) if valor}) | |
prompt = ', '.join([campos[campo] for campo in csv_reader.fieldnames]) | |
return prompt | |
return concat_prompt | |
csv_files = [f for f in os.listdir() if os.path.isfile(f) and f.endswith('.csv')] | |
csv_files.sort() # Ordenar alfabéticamente | |
interfaces = [] | |
tab_labels = [] | |
for file_name in csv_files: | |
with open(file_name, '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) | |
inputs = [Dropdown(list(valoresUnicos[campo]), label=campo.capitalize()) for campo in valoresUnicos.keys()] | |
output_text = Textbox(label='Prompt') | |
tab_label = os.path.splitext(file_name)[0].title() | |
tab_labels.append(tab_label) | |
title = f"Generador Prompts Tecnolitas" | |
description = '<div align="center"> Selecciona entre los distintos menús desplegables para generar un Prompt creativo, los que dejes en blanco serán elegidos aleatoriamente.</div>' | |
fn = make_concat_prompt(csv_reader, valoresUnicos) | |
interface = Interface(fn=fn, inputs=inputs, outputs=output_text, title=title, description=description) | |
interfaces.append(interface) | |
tabbed_interface = TabbedInterface(interfaces, tab_labels) | |
tabbed_interface.launch() |