summaryrefslogtreecommitdiff
path: root/searx/engines/semantic_scholar.py
diff options
context:
space:
mode:
Diffstat (limited to 'searx/engines/semantic_scholar.py')
-rw-r--r--searx/engines/semantic_scholar.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/searx/engines/semantic_scholar.py b/searx/engines/semantic_scholar.py
new file mode 100644
index 000000000..a49f84b67
--- /dev/null
+++ b/searx/engines/semantic_scholar.py
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Semantic Scholar (Science)
+"""
+
+from json import dumps, loads
+
+
+search_url = 'https://www.semanticscholar.org/api/1/search'
+
+
+def request(query, params):
+ params['url'] = search_url
+ params['method'] = 'POST'
+ params['headers']['content-type'] = 'application/json'
+ params['data'] = dumps({
+ "queryString": query,
+ "page": params['pageno'],
+ "pageSize": 10,
+ "sort": "relevance",
+ "useFallbackRankerService": False,
+ "useFallbackSearchCluster": False,
+ "performTitleMatch": True,
+ "getQuerySuggestions": False,
+ "authors": [],
+ "coAuthors": [],
+ "venues": [],
+ "performTitleMatch": True,
+ })
+ return params
+
+
+def response(resp):
+ res = loads(resp.text)
+ results = []
+ for result in res['results']:
+ results.append({
+ 'url': result['primaryPaperLink']['url'],
+ 'title': result['title']['text'],
+ 'content': result['paperAbstractTruncated']
+ })
+
+ return results