Spaces:
Sleeping
Sleeping
| import asyncio | |
| import gradio as gr | |
| from ingest.registry import get_live_adapters | |
| ADAPTERS = get_live_adapters() | |
| async def live_search(query): | |
| tasks = [a.search(query) for a in ADAPTERS] | |
| results = await asyncio.gather(*tasks, return_exceptions=True) | |
| flat = [] | |
| for r in results: | |
| if isinstance(r, list): | |
| flat.extend(r) | |
| return [ | |
| [x["agency"], x["source"], x["title"], x["url"]] | |
| for x in flat | |
| ] | |
| def run_search(query): | |
| return asyncio.run(live_search(query)) | |
| with gr.Blocks() as demo: | |
| gr.Markdown(""" | |
| # 🏛️ Federal FOIA Intelligence Search | |
| **Public Electronic Reading Rooms Only** | |
| _Live CIA CREST & FBI Vault_ | |
| """) | |
| query = gr.Textbox(label="Search FOIA documents") | |
| btn = gr.Button("Live Search") | |
| table = gr.Dataframe( | |
| headers=["Agency", "Source", "Title", "URL"], | |
| interactive=False | |
| ) | |
| btn.click(run_search, query, table) | |
| demo.launch() |