Spaces:
Sleeping
Sleeping
update app.py
Browse files
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 =
|
| 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
|
| 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 =
|
| 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 |
-
#
|
| 66 |
-
title =
|
| 67 |
-
|
|
|
|
|
|
|
| 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")
|