diff --git a/searx/engines/json_engine.py b/searx/engines/json_engine.py index cd5e3a7e..a824c38e 100644 --- a/searx/engines/json_engine.py +++ b/searx/engines/json_engine.py @@ -6,7 +6,8 @@ search_url = None url_query = None content_query = None title_query = None -# suggestion_xpath = '' +suggestion_query = '' +results_query = '' # parameters for engines with paging support # @@ -90,12 +91,23 @@ def request(query, params): def response(resp): results = [] - json = loads(resp.text) + if results_query: + for result in query(json, results_query)[0]: + url = query(result, url_query)[0] + title = query(result, title_query)[0] + content = query(result, content_query)[0] + results.append({'url': url, 'title': title, 'content': content}) + else: + for url, title, content in zip( + query(json, url_query), + query(json, title_query), + query(json, content_query) + ): + results.append({'url': url, 'title': title, 'content': content}) - urls = query(json, url_query) - contents = query(json, content_query) - titles = query(json, title_query) - for url, title, content in zip(urls, titles, contents): - results.append({'url': url, 'title': title, 'content': content}) + if not suggestion_query: + return results + for suggestion in query(json, suggestion_query): + results.append({'suggestion': suggestion}) return results diff --git a/searx/settings.yml b/searx/settings.yml index 4feebfcd..f0d33e50 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -287,6 +287,19 @@ engines: timeout : 6.0 disabled : True + - name : microsoft academic + engine : json_engine + paging : True + search_url : https://academic.microsoft.com/api/search/GetEntityResults?query=%40{query}%40&filters=&offset={pageno}&limit=8&correlationId=undefined + results_query : results + url_query : u + title_query : dn + content_query : d + page_size : 8 + first_page_num : 0 + categories : science + shortcut : ma + - name : mixcloud engine : mixcloud shortcut : mc