File size: 2,208 Bytes
f909373
 
 
e8bb3ec
f909373
8fdd6c6
f909373
e8bb3ec
 
f909373
 
 
 
 
 
 
e8bb3ec
ee788fc
 
 
e8bb3ec
ee788fc
 
e8bb3ec
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ee788fc
 
 
e8bb3ec
 
 
 
 
 
 
 
 
 
ee788fc
e8bb3ec
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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 concat_prompt(csv_reader, valoresUnicos, *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


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():
                if campo not in valoresUnicos:
                    valoresUnicos[campo] = set()
                    print(f"Se encontró un nuevo campo {campo} en el archivo {file_name}")
                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 = lambda *args: concat_prompt(csv_reader, valoresUnicos, *args)

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