charliealonso69 commited on
Commit
2fe3ac7
1 Parent(s): be08cc0

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -0
app.py ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from contextlib import nullcontext
2
+
3
+ import csv
4
+ import os.path
5
+ import random
6
+ import gradio as gr
7
+ from gradio.components import Textbox, Dropdown
8
+ from gradio import Interface, TabbedInterface
9
+
10
+
11
+ def parametroAleatorio(lista):
12
+ res = random.choice(list(lista))
13
+ while res == '':
14
+ res = random.choice(list(lista))
15
+ return res
16
+
17
+
18
+ def make_concat_prompt(csv_reader, valoresUnicos):
19
+ def concat_prompt(*args):
20
+ campos = {campo: parametroAleatorio(valoresUnicos[campo]) for campo in csv_reader.fieldnames}
21
+ campos.update({campo: valor for campo, valor in zip(csv_reader.fieldnames, args) if valor})
22
+
23
+ prompt = ', '.join([campos[campo] for campo in csv_reader.fieldnames])
24
+ return prompt
25
+ return concat_prompt
26
+
27
+
28
+ csv_files = [f for f in os.listdir() if os.path.isfile(f) and f.endswith('.csv')]
29
+ csv_files.sort() # Ordenar alfabéticamente
30
+
31
+ interfaces = []
32
+ tab_labels = []
33
+ for file_name in csv_files:
34
+ with open(file_name, 'r') as csv_file:
35
+ csv_reader = csv.DictReader(csv_file)
36
+ valoresUnicos = {}
37
+ for campo in csv_reader.fieldnames:
38
+ valoresUnicos[campo] = set()
39
+ for row in csv_reader:
40
+ for campo, valor in row.items():
41
+ valoresUnicos[campo].add(valor)
42
+
43
+ inputs = [Dropdown(list(valoresUnicos[campo]), label=campo.capitalize()) for campo in valoresUnicos.keys()]
44
+ output_text = Textbox(label='Prompt')
45
+
46
+ tab_label = os.path.splitext(file_name)[0].title()
47
+ tab_labels.append(tab_label)
48
+
49
+ title = f"Generador Prompts Tecnolitas"
50
+ 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>'
51
+ fn = make_concat_prompt(csv_reader, valoresUnicos)
52
+
53
+
54
+ interface = Interface(fn=fn, inputs=inputs, outputs=output_text, title=title, description=description)
55
+ interfaces.append(interface)
56
+
57
+ tabbed_interface = TabbedInterface(interfaces, tab_labels)
58
+ tabbed_interface.launch()