Format: text/x-python
⬇ Download File (1.9 KB)
   1  # arXiv search functionality for NovaChat
   2  import arxiv
   3  
   4  def fetch_arxiv(query, max_results=5):
   5      """Searches academic papers on arXiv based on a query."""
   6      results = []
   7      try:
   8          # Construct the default API client.
   9          client = arxiv.Client()
  10  
  11          # Search for papers matching the query.
  12          search = arxiv.Search(
  13              query=query,
  14              max_results=max_results,
  15              sort_by=arxiv.SortCriterion.Relevance
  16          )
  17  
  18          papers = list(client.results(search))
  19  
  20          if not papers:
  21              return [{'message': f"No arXiv papers found for: {query}"}]
  22  
  23          for paper in papers:
  24              results.append({
  25                  'title': paper.title,
  26                  'authors': [str(author) for author in paper.authors],
  27                  'summary': paper.summary,
  28                  'published': str(paper.published),
  29                  'pdf_url': paper.pdf_url,
  30                  'arxiv_url': paper.entry_id
  31              })
  32  
  33      except Exception as e:
  34          print(f"Error fetching arXiv results: {e}")
  35          return [{'error': f"arXiv API Error: {e}"}]
  36  
  37      return results
  38  
  39  # Example usage (can be removed or moved)
  40  if __name__ == '__main__':
  41      search_query = "quantum computing algorithms"
  42      arxiv_results = fetch_arxiv(search_query)
  43      print(f"arXiv results for '{search_query}':")
  44      for i, result in enumerate(arxiv_results):
  45          if 'error' in result:
  46              print(f"Error: {result['error']}")
  47              break
  48          if 'message' in result:
  49              print(result['message'])
  50              break
  51          print(f"{i+1}. {result['title']}")
  52          print(f"   Authors: {', '.join(result['authors'])}")
  53          print(f"   Published: {result['published']}")
  54          print(f"   PDF: {result['pdf_url']}")
  55          # print(f"   Summary: {result['summary'][:150]}...") # Uncomment for summary
  56          print("---")