import gradio as gr import pandas as pd # from io import BytesIO import tempfile import os from analysis.analysis import analizar_excel_redes_y_generar_pdf def interfaz_redes(): with gr.Row(): with gr.Column(scale=3): gr.Markdown("## 📝 Análisis de Contenido en Redes Sociales con Inteligencia Artificial") with gr.Column(scale=1): boton_excel = gr.Button("📥 Descargar Excel de Ejemplo") # mensaje_excel = gr.Textbox(label="Estado de descarga", interactive=False) # archivo_descarga = gr.File(label="Archivo de ejemplo") archivo_descarga = gr.File(label="Archivo de ejemplo", interactive=False, visible=False) def generar_excel_ejemplo(): # mensaje = "📄 Generando archivo de ejemplo..." columnas = ["red_social", "fecha", "autor", "texto"] df = pd.DataFrame(columns=columnas) # Crear archivo con nombre específico en un directorio temporal ruta_directorio = tempfile.gettempdir() ruta_archivo = os.path.join(ruta_directorio, "Excel_para_analisis_redes.xlsx") df.to_excel(ruta_archivo, index=False) return gr.update(value=ruta_archivo, visible=True) # return gr.update(value=ruta_archivo) # return ruta_archivo boton_excel.click( fn=generar_excel_ejemplo, inputs=[], outputs=[archivo_descarga], show_progress=True ) archivo_input = gr.File(label="Sube el archivo Excel (.xlsx)") informe = gr.Dropdown( ["¿Cuál fue HOY mi desempeño en las Redes?", "Fortalezas y Debilidades en Redes Sociales" ], label="Selecciona el informe", value="¿Cuál fue HOY mi desempeño en las Redes?" ) # 🔽 CAMPOS CONDICIONALES: ingreso del cliente (oculto por defecto) nombre_cliente = gr.Textbox(label="Nombre del cliente", visible=True) boton = gr.Button("Generar Análisis", interactive=True) salida_pdf = gr.File(label="Resumen Global en WORD") mensaje_error = gr.Textbox(label="Mensajes", interactive=False, visible=True) progreso_texto = gr.Textbox(label="Progreso de los resúmenes", lines=25, interactive=False) # 🔁 Mostrar u ocultar el campo del cliente según informe seleccionado def mostrar_ocultar_cliente(informe_sel): if informe_sel == "¿Cuál fue HOY mi desempeño en las Redes?": return gr.update(visible=True) else: return gr.update(visible=False) informe.change( fn=mostrar_ocultar_cliente, inputs=[informe], outputs=[nombre_cliente] ) # ⏳ Procesamiento def wrapper_func(archivo_excel, informe, nombre_cliente): salida = None mensaje = "" progreso = "" yield gr.update(interactive=False), None, "⏳ Procesando archivo... por favor espera.", "" # yield None, "⏳ Procesando archivo... por favor espera.", "" for salida_, mensaje_, progreso_ in analizar_excel_redes_y_generar_pdf(archivo_excel, informe, nombre_cliente): salida, mensaje, progreso = salida_, mensaje_, progreso_ yield gr.update(interactive=False), salida, mensaje, progreso # yield salida, mensaje, progreso yield gr.update(interactive=True), salida, mensaje, progreso # yield salida, mensaje, progreso boton.click( fn=wrapper_func, inputs=[archivo_input, informe, nombre_cliente], outputs=[boton, salida_pdf, mensaje_error, progreso_texto] # outputs=[salida_pdf, mensaje_error, progreso_texto] )