| |
|
|
| 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): |
| """Fetch latest arXiv papers for the query.""" |
| encoded_query = quote_plus(query) |
| search_url = f"{ARXIV_BASE}{encoded_query}&max_results={max_results}" |
| feed = feedparser.parse(search_url) |
| results = [] |
| for entry in feed.entries: |
| results.append({ |
| "title": getattr(entry, "title", ""), |
| "authors": ", ".join([a.name for a in getattr(entry, "authors", [])]) if hasattr(entry, 'authors') else "", |
| "summary": getattr(entry, "summary", ""), |
| "link": getattr(entry, "link", ""), |
| "published": entry.get("published", "") if hasattr(entry, 'get') else getattr(entry, "published", ""), |
| "source": "arXiv" |
| }) |
| return results |
|
|