|
|
|
import feedparser |
|
from urllib.parse import quote_plus |
|
|
|
ARXIV_BASE = "http://export.arxiv.org/api/query?search_query=" |
|
|
|
async def fetch_arxiv(query: str, max_results: int = 5) -> list[dict]: |
|
url = f"{ARXIV_BASE}{quote_plus(query)}&max_results={max_results}" |
|
feed = feedparser.parse(url) |
|
out = [] |
|
for e in feed.entries: |
|
out.append({ |
|
"title": e.get("title",""), |
|
"authors": ", ".join([a.name for a in getattr(e,"authors",[])]), |
|
"summary": e.get("summary",""), |
|
"link": e.get("link",""), |
|
"published": getattr(e,"published",""), |
|
"source": "arXiv" |
|
}) |
|
return out |
|
|