diff options
Diffstat (limited to 'searx/plugins')
| -rw-r--r-- | searx/plugins/__init__.py | 6 | ||||
| -rw-r--r-- | searx/plugins/doai_rewrite.py | 31 | ||||
| -rw-r--r-- | searx/plugins/https_rewrite.py | 2 | ||||
| -rw-r--r-- | searx/plugins/infinite_scroll.py | 8 |
4 files changed, 45 insertions, 2 deletions
diff --git a/searx/plugins/__init__.py b/searx/plugins/__init__.py index b9b9ca0d0..768a510af 100644 --- a/searx/plugins/__init__.py +++ b/searx/plugins/__init__.py @@ -19,7 +19,9 @@ from searx import logger logger = logger.getChild('plugins') -from searx.plugins import (https_rewrite, +from searx.plugins import (doai_rewrite, + https_rewrite, + infinite_scroll, open_results_on_new_tab, self_info, search_on_category_select, @@ -73,7 +75,9 @@ class PluginStore(): plugins = PluginStore() +plugins.register(doai_rewrite) plugins.register(https_rewrite) +plugins.register(infinite_scroll) plugins.register(open_results_on_new_tab) plugins.register(self_info) plugins.register(search_on_category_select) diff --git a/searx/plugins/doai_rewrite.py b/searx/plugins/doai_rewrite.py new file mode 100644 index 000000000..fc5998b14 --- /dev/null +++ b/searx/plugins/doai_rewrite.py @@ -0,0 +1,31 @@ +from flask_babel import gettext +import re +from urlparse import urlparse, parse_qsl + +regex = re.compile(r'10\.\d{4,9}/[^\s]+') + +name = gettext('DOAI rewrite') +description = gettext('Avoid paywalls by redirecting to open-access versions of publications when available') +default_on = False + + +def extract_doi(url): + match = regex.search(url.path) + if match: + return match.group(0) + for _, v in parse_qsl(url.query): + match = regex.search(v) + if match: + return match.group(0) + return None + + +def on_result(request, ctx): + doi = extract_doi(ctx['result']['parsed_url']) + if doi and len(doi) < 50: + for suffix in ('/', '.pdf', '/full', '/meta', '/abstract'): + if doi.endswith(suffix): + doi = doi[:-len(suffix)] + ctx['result']['url'] = 'http://doai.io/' + doi + ctx['result']['parsed_url'] = urlparse(ctx['result']['url']) + return True diff --git a/searx/plugins/https_rewrite.py b/searx/plugins/https_rewrite.py index 8c29520d2..8a9fcd4ad 100644 --- a/searx/plugins/https_rewrite.py +++ b/searx/plugins/https_rewrite.py @@ -87,7 +87,7 @@ def load_single_https_ruleset(rules_path): # convert host-rule to valid regex host = ruleset.attrib.get('host')\ - .replace('.', '\.').replace('*', '.*') + .replace('.', r'\.').replace('*', '.*') # append to host list hosts.append(host) diff --git a/searx/plugins/infinite_scroll.py b/searx/plugins/infinite_scroll.py new file mode 100644 index 000000000..422a4befb --- /dev/null +++ b/searx/plugins/infinite_scroll.py @@ -0,0 +1,8 @@ +from flask_babel import gettext + +name = gettext('Infinite scroll') +description = gettext('Automatically load next page when scrolling to bottom of current page') +default_on = False + +js_dependencies = ('plugins/js/infinite_scroll.js',) +css_dependencies = ('plugins/css/infinite_scroll.css',) |