import gradio as gr import requests import json API_URL = "https://ia.nebuia.com/api/v1/integrator/extractor/from/excel" API_KEY = "2J7NFWQ-236PGAM-2S9RD3C-2DG54CY" API_SECRET = "a47abf97-866b-4154-b29c-346c9b02919e" def send_excel_to_api(file_path, json_structure): headers = { 'key': API_KEY, 'secret': API_SECRET } files = { 'file': open(file_path, 'rb') } data = { 'structure': json_structure } try: response = requests.post(API_URL, headers=headers, files=files, data=data) if response.status_code == 200: result = response.json() return json.dumps(result, indent=2) else: return f"Error: Received status code {response.status_code}\n{response.text}" except requests.RequestException as e: return f"Error sending request: {e}" finally: files['file'].close() def gradio_interface(file, json_structure): if file is None: return "Please upload an Excel file." return send_excel_to_api(file.name, json_structure) # Custom color for the theme custom_purple = "#7f56d9" # Create the Gradio interface using Blocks with gr.Blocks(theme=gr.themes.Default(primary_hue="purple", secondary_hue="purple")) as demo: gr.Markdown( """
## NebuIA Excel Structure Extractor Upload an Excel file and provide a JSON structure to send to the API. """ ) with gr.Row(): file_input = gr.File(label="Upload Excel File") json_input = gr.Code( label="JSON Structure", language="json", lines=15, value='''{ "activo a corto plazo": { "valor inventarios - ejercicio 2023": "", "valor inventarios - ejercicio 2022": "" }, "pasivo a corto plazo": { "impuestos por pagar - ejercicio 2023": "", "impuestos por pagar - ejercicio 2022": "" }, "perdida_del_ejercicio": "", "rfc": "" }''' ) output = gr.Textbox(label="API Response", lines=10) submit_btn = gr.Button("Submit") submit_btn.click(fn=gradio_interface, inputs=[file_input, json_input], outputs=output) # Launch the interface demo.launch()