HenryY2023 commited on
Commit
e45064c
·
verified ·
1 Parent(s): 5a6b105

update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -7
app.py CHANGED
@@ -5,16 +5,17 @@ import pytz
5
  import yaml
6
  import os
7
  import json
 
8
  from tools.final_answer import FinalAnswerTool
9
 
10
  from Gradio_UI import GradioUI
11
 
12
  @tool
13
- def search_arxiv_papers(topic: str, max_results: int = 5) -> str:
14
  """Searches arXiv for papers related to the given topic and returns results as JSON.
15
  Args:
16
  topic: The search query for arXiv.
17
- max_results: Maximum number of results to return (default 5).
18
  """
19
  try:
20
  url = 'http://export.arxiv.org/api/query'
@@ -25,10 +26,11 @@ def search_arxiv_papers(topic: str, max_results: int = 5) -> str:
25
  'sortBy': 'submittedDate',
26
  'sortOrder': 'descending'
27
  }
 
28
  response = requests.get(url, params=params)
29
  response.raise_for_status()
30
 
31
- root = xml.etree.ElementTree.fromstring(response.content)
32
  entries = root.findall('{http://www.w3.org/2005/Atom}entry')
33
  papers = []
34
 
@@ -61,11 +63,16 @@ def save_papers_to_folder(papers_json: str, folder: str = "downloads") -> str:
61
  os.makedirs(folder, exist_ok=True)
62
  papers = json.loads(papers_json)
63
 
64
- for paper in papers:
65
- # Sanitize filename
66
- title = "".join([c if c.isalnum() else "_" for c in paper['title']])[:50]
67
- filename = os.path.join(folder, f"{title}.txt")
 
 
68
 
 
 
 
69
  with open(filename, 'w') as f:
70
  f.write(f"Title: {paper['title']}\n")
71
  f.write(f"Authors: {', '.join(paper['authors'])}\n")
 
5
  import yaml
6
  import os
7
  import json
8
+ import xml.etree.elementTree as ET
9
  from tools.final_answer import FinalAnswerTool
10
 
11
  from Gradio_UI import GradioUI
12
 
13
  @tool
14
+ def search_arxiv_papers(topic: str, max_results: int = 10) -> str:
15
  """Searches arXiv for papers related to the given topic and returns results as JSON.
16
  Args:
17
  topic: The search query for arXiv.
18
+ max_results: Maximum number of results to return (default 10).
19
  """
20
  try:
21
  url = 'http://export.arxiv.org/api/query'
 
26
  'sortBy': 'submittedDate',
27
  'sortOrder': 'descending'
28
  }
29
+ headers = {'User-Agent': 'Mozilla/5.0'} # arXiv requires user agent
30
  response = requests.get(url, params=params)
31
  response.raise_for_status()
32
 
33
+ root = ET.fromstring(response.content)
34
  entries = root.findall('{http://www.w3.org/2005/Atom}entry')
35
  papers = []
36
 
 
63
  os.makedirs(folder, exist_ok=True)
64
  papers = json.loads(papers_json)
65
 
66
+ for idx, paper in enumerate(papers, 1):
67
+ # Handle missing fields gracefully
68
+ title = paper.get('title', f'Untitled_{idx}')
69
+ authors = paper.get('authors', ['Unknown'])
70
+ link = paper.get('link', 'No link available')
71
+ summary = paper.get('summary', 'No summary available')
72
 
73
+ # Improved filename sanitization
74
+ clean_title = "".join([c if c.isalnum() else "_" for c in title])[:50]
75
+ filename = os.path.join(folder, f"{clean_title or f'paper_{idx}'}.txt")
76
  with open(filename, 'w') as f:
77
  f.write(f"Title: {paper['title']}\n")
78
  f.write(f"Authors: {', '.join(paper['authors'])}\n")