Created new plugin type custom_results. Added new plugin bang_redirect (#2027)

* Made first attempt at the bangs redirects plugin.

* It redirects. But in a messy way via javascript.

* First version with custom plugin

* Added a help page and a operator to see all the bangs available.

* Changed to .format because of support

* Changed to .format because of support

* Removed : in params

* Fixed path to json file and changed bang operator

* Changed bang operator back to &

* Made first attempt at the bangs redirects plugin.

* It redirects. But in a messy way via javascript.

* First version with custom plugin

* Added a help page and a operator to see all the bangs available.

* Changed to .format because of support

* Changed to .format because of support

* Removed : in params

* Fixed path to json file and changed bang operator

* Changed bang operator back to &

* Refactored getting search query. Also changed bang operator to ! and is now working.

* Removed prints

* Removed temporary bangs_redirect.js file. Updated plugin documentation

* Added unit test for the bangs plugin

* Fixed a unit test and added 2 more for bangs plugin

* Changed back to default settings.yml

* Added myself to AUTHORS.rst

* Refacored working of custom plugin.

* Refactored _get_bangs_data from list to dict to improve search speed.

* Decoupled bangs plugin from webserver with redirect_url

* Refactored bangs unit tests

* Fixed unit test bangs. Removed dubbel parsing in bangs.py

* Removed a dumb print statement

* Refactored bangs plugin to core engine.

* Removed bangs plugin.

* Refactored external bangs unit tests from plugin to core.

* Removed custom_results/bangs documentation from plugins.rst

* Added newline in settings.yml so the PR stays clean.

* Changed searx/plugins/__init__.py back to the old file

* Removed newline search.py

* Refactored get_external_bang_operator from utils to external_bang.py

* Removed unnecessary import form test_plugins.py

* Removed _parseExternalBang and _isExternalBang from query.py

* Removed get_external_bang_operator since it was not necessary

* Simplified external_bang.py

* Simplified external_bang.py

* Moved external_bangs unit tests to test_webapp.py. Fixed return in search with external_bang

* Refactored query parsing to unicode to support python2

* Refactored query parsing to unicode to support python2

* Refactored bangs plugin to core engine.

* Refactored search parameter to search_query in external_bang.py
This commit is contained in:
Lukas van den Berk 2020-07-03 15:25:04 +02:00 committed by GitHub
parent c21220c671
commit 4829a76aae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 75458 additions and 6 deletions

View file

@ -44,10 +44,11 @@ class RawTextQuery(object):
self.engines = []
self.languages = []
self.timeout_limit = None
self.external_bang = None
self.specific = False
# parse query, if tags are set, which
# change the serch engine or search-language
# change the search engine or search-language
def parse_query(self):
self.query_parts = []
@ -120,6 +121,11 @@ class RawTextQuery(object):
self.languages.append(lang)
parse_next = True
# external bang
if query_part[0:2] == "!!":
self.external_bang = query_part[2:]
parse_next = True
continue
# this force a engine or category
if query_part[0] == '!' or query_part[0] == '?':
prefix = query_part[1:].replace('-', ' ').replace('_', ' ')
@ -178,7 +184,7 @@ class SearchQuery(object):
"""container for all the search parameters (query, language, etc...)"""
def __init__(self, query, engines, categories, lang, safesearch, pageno, time_range,
timeout_limit=None, preferences=None):
timeout_limit=None, preferences=None, external_bang=None):
self.query = query.encode('utf-8')
self.engines = engines
self.categories = categories
@ -188,6 +194,7 @@ class SearchQuery(object):
self.time_range = None if time_range in ('', 'None', None) else time_range
self.timeout_limit = timeout_limit
self.preferences = preferences
self.external_bang = external_bang
def __str__(self):
return str(self.query) + ";" + str(self.engines)