Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import json | |
| from backend.tools.metadata import fetch_metadata, recover_metadata | |
| from .utils import format_error | |
| async def metadata_handler(doi, url, title, action): | |
| if not doi and not url and not title: | |
| return "**Error:** Proporcione al menos un DOI, URL o t铆tulo." | |
| try: | |
| if action == "fetch": | |
| result = await fetch_metadata(doi=doi or None, url=url or None, title=title or None) | |
| elif action == "recover": | |
| result = await recover_metadata(doi=doi or None, url=url or None, title=title or None) | |
| elif action == "enrich": | |
| result = await fetch_metadata(doi=doi or None, url=url or None, title=title or None) | |
| else: | |
| return "**Error:** Acci贸n no v谩lida." | |
| if "error" in result: | |
| return f"**Error:** {result['error']}" | |
| return json.dumps(result, indent=2, ensure_ascii=False, default=str) | |
| except Exception as e: | |
| return format_error(e) | |
| def create_metadata_tab(): | |
| with gr.Tab("馃搵 Metadatos", id="metadata"): | |
| gr.Markdown("## Gesti贸n de Metadatos Acad茅micos") | |
| with gr.Row(): | |
| with gr.Column(): | |
| doi = gr.Textbox(label="DOI", placeholder="10.1038/s41586-020-2649-2") | |
| url = gr.Textbox(label="URL / Handle", placeholder="https://hdl.handle.net/20.500.12672/12345") | |
| title = gr.Textbox(label="T铆tulo", placeholder="Attention Is All You Need") | |
| action = gr.Radio(choices=["fetch", "recover", "enrich"], value="fetch", label="Acci贸n") | |
| meta_btn = gr.Button("馃搵 Obtener Metadatos", variant="primary", size="lg") | |
| with gr.Column(): | |
| output_json = gr.Code(label="Resultado JSON", language="json") | |
| meta_btn.click(fn=metadata_handler, inputs=[doi, url, title, action], outputs=[output_json]) | |