semantic_scholar.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # SPDX-License-Identifier: AGPL-3.0-or-later
  2. """
  3. Semantic Scholar (Science)
  4. """
  5. from json import dumps, loads
  6. search_url = 'https://www.semanticscholar.org/api/1/search'
  7. def request(query, params):
  8. params['url'] = search_url
  9. params['method'] = 'POST'
  10. params['headers']['content-type'] = 'application/json'
  11. params['data'] = dumps(
  12. {
  13. "queryString": query,
  14. "page": params['pageno'],
  15. "pageSize": 10,
  16. "sort": "relevance",
  17. "useFallbackRankerService": False,
  18. "useFallbackSearchCluster": False,
  19. "getQuerySuggestions": False,
  20. "authors": [],
  21. "coAuthors": [],
  22. "venues": [],
  23. "performTitleMatch": True,
  24. }
  25. )
  26. return params
  27. def response(resp):
  28. res = loads(resp.text)
  29. results = []
  30. for result in res['results']:
  31. results.append(
  32. {
  33. 'url': result['primaryPaperLink']['url'],
  34. 'title': result['title']['text'],
  35. 'content': result['paperAbstractTruncated'],
  36. }
  37. )
  38. return results