1
0

summarize.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from requests_html import AsyncHTMLSession
  2. from bs4 import BeautifulSoup
  3. from contextlib import suppress
  4. from requests import get
  5. def get_paper_desc(id_paper: str) -> tuple | None:
  6. request = get(f'https://arxiv.org/abs/{id_paper}')
  7. if request.ok:
  8. soup = BeautifulSoup(request.content, features="lxml")
  9. with suppress(TypeError):
  10. url = soup.find('meta', property='og:url').get('content')
  11. title = soup.find('meta', property='og:title').get('content')
  12. description = soup.find('meta', property='og:description').get('content').replace('\n', ' ')
  13. return url, title, description
  14. return None
  15. async def get_summary(url: str = "https://arxiv.org/abs/2102.12092v2") -> str:
  16. url = url.replace("abs", "pdf")
  17. async_session = AsyncHTMLSession()
  18. async_response = await async_session.get(f"https://labs.kagi.com/ai/sum?url={url}.pdf")
  19. await async_response.html.arender(sleep=5)
  20. if res := async_response.html.find("p.description", first = True).text:
  21. await async_session.close()
  22. return res
  23. else:
  24. await async_response.html.arender(sleep=10)
  25. if res := async_response.html.find("p.description", first = True).text:
  26. await async_session.close()
  27. return res
  28. else:
  29. await async_session.close()
  30. return "Nothing to retrieve :("
  31. async def get_key_moments(url: str = "https://arxiv.org/abs/2102.12092v2") -> str:
  32. url = url.replace("abs", "pdf")
  33. async_session = AsyncHTMLSession()
  34. async_response = await async_session.get(f"https://labs.kagi.com/ai/sum?url={url}.pdf&expand=1")
  35. await async_response.html.arender(sleep=5)
  36. if res := async_response.html.find("p.description", first = True).text:
  37. await async_session.close()
  38. return res
  39. else:
  40. await async_response.html.arender(sleep=10)
  41. if res := async_response.html.find("p.description", first = True).text:
  42. await async_session.close()
  43. return res
  44. else:
  45. await async_session.close()
  46. return "Nothing to retrieve :("