Spaces:
Sleeping
Sleeping
| 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] | |
| ) |