on master help sign in
Add hostname_replace plugin
commitfc4bf4bf100ac3e88f308f0c6c9416667bfb0e2d author3nprob <3nprob@3nprob> dateMon 5 Apr 2021, 15:43 (6 years ago) parentc00a33f
3 files changed+42
searx/plugins/__init__.py+2 searx/plugins/hostname_replace.py+28 searx/settings.yml+12
searx/plugins/__init__.py+2
@@ -32,6 +32,7 @@ from searx.plugins import (oa_doi_rewrite,
3232 https_rewrite,
3333 infinite_scroll,
3434 self_info,
35+ hostname_replace,
3536 search_on_category_select,
3637 tracker_url_remover,
3738 vim_hotkeys)
@@ -168,6 +169,7 @@ plugins.register(hash_plugin)
168169plugins.register(https_rewrite)
169170plugins.register(infinite_scroll)
170171plugins.register(self_info)
172+plugins.register(hostname_replace)
171173plugins.register(search_on_category_select)
172174plugins.register(tracker_url_remover)
173175plugins.register(vim_hotkeys)
searx/plugins/hostname_replace.pynew file+28
@@ -0,0 +1,28 @@
1+import re
2+from urllib.parse import urlunparse
3+from searx import settings
4+from searx.plugins import logger
5+from flask_babel import gettext
6+
7+name = gettext('Hostname replace')
8+description = gettext('Rewrite result hostnames')
9+default_on = False
10+preference_section = 'general'
11+
12+plugin_id = 'hostname_replace'
13+parsed = 'parsed_url'
14+
15+replacements = {re.compile(p): r for (p, r) in settings[plugin_id].items()} if plugin_id in settings else {}
16+
17+logger = logger.getChild(plugin_id)
18+
19+
20+def on_result(request, search, result):
21+ if parsed not in result:
22+ return True
23+ for (pattern, replacement) in replacements.items():
24+ if pattern.search(result[parsed].netloc):
25+ result[parsed] = result[parsed]._replace(netloc=pattern.sub(replacement, result[parsed].netloc))
26+ result['url'] = urlunparse(result[parsed])
27+
28+ return True
searx/settings.yml+12
@@ -104,6 +104,18 @@ outgoing: # communication with search engines
104104# - "HTTPS rewrite"
105105# - ...
106106
107+# Example to rewrite hostnames in external links
108+#
109+# enabled_plugins:
110+# - 'Hostname replace'
111+# hostname_replace:
112+# '(.*\.)?youtube\.com$': 'invidious.example.com'
113+# '(.*\.)?youtu\.be$': 'invidious.example.com'
114+# '(.*\.)?youtube-noocookie\.com$': 'yotter.example.com'
115+# '(.*\.)?reddit\.com$': 'teddit.example.com'
116+# '(.*\.)?redd\.it$': 'teddit.example.com'
117+# '(www\.)?twitter\.com$': 'nitter.example.com'
118+
107119checker:
108120 # disable checker when in debug mode
109121 off_when_debug: True