diff --git a/searx/plugins/oa_doi_rewrite.py b/searx/plugins/oa_doi_rewrite.py index e952c86f5..b62ef0b1e 100644 --- a/searx/plugins/oa_doi_rewrite.py +++ b/searx/plugins/oa_doi_rewrite.py @@ -1,7 +1,6 @@ from flask_babel import gettext import re from searx.url_utils import urlparse, parse_qsl -from flask import request from searx import settings @@ -26,12 +25,12 @@ def extract_doi(url): return None -def get_doi_resolver(): +def get_doi_resolver(args, preference_doi_resolver): doi_resolvers = settings['doi_resolvers'] - doi_resolver = request.args.get('doi_resolver', request.preferences.get_value('doi_resolver'))[0] + doi_resolver = args.get('doi_resolver', preference_doi_resolver)[0] if doi_resolver not in doi_resolvers: doi_resolvers = settings['default_doi_resolver'] - return doi_resolvers[doi_resolver] + return doi_resolver def on_result(request, search, result): @@ -40,6 +39,6 @@ def on_result(request, search, result): for suffix in ('/', '.pdf', '/full', '/meta', '/abstract'): if doi.endswith(suffix): doi = doi[:-len(suffix)] - result['url'] = get_doi_resolver() + doi + result['url'] = get_doi_resolver(request.args, request.preferences.get_value('doi_resolver')) + doi result['parsed_url'] = urlparse(result['url']) return True diff --git a/searx/preferences.py b/searx/preferences.py index 00a3fd683..1a143db6b 100644 --- a/searx/preferences.py +++ b/searx/preferences.py @@ -15,7 +15,7 @@ LANGUAGE_CODES = [l[0] for l in languages] LANGUAGE_CODES.append('all') DISABLED = 0 ENABLED = 1 -DOI_RESOLVERS = [r for r in settings['doi_resolvers'].keys()] +DOI_RESOLVERS = list(settings['doi_resolvers']) class MissingArgumentException(Exception): diff --git a/searx/templates/oscar/preferences.html b/searx/templates/oscar/preferences.html index dcca3cba7..5f85a9af6 100644 --- a/searx/templates/oscar/preferences.html +++ b/searx/templates/oscar/preferences.html @@ -118,6 +118,18 @@ {{ preferences_item_footer(info, label, rtl) }} + + {% set label = _('Open Access DOI resolver') %} + {% set info = _('Redirect to open-access versions of publications when available (plugin required)') %} + {{ preferences_item_header(info, label, rtl) }} + + {{ preferences_item_footer(info, label, rtl) }} @@ -223,23 +235,6 @@ {% endfor %} -