Added ddg-style !bang-operators
This is a proof of concept! The code works, but uses hardcoded operators and may be placed in the wrong file/class. The best-case scenario would be the possibility to use the 13.000+ ddg operators, but I don't know if that's possible without having to redirect to duckduckgo first.main
parent
4e970a4796
commit
dd9d87d25b
|
@ -144,6 +144,10 @@ def search():
|
||||||
search_util = RoutingUtils(request, g.user_config, session, cookies_disabled=g.cookies_disabled)
|
search_util = RoutingUtils(request, g.user_config, session, cookies_disabled=g.cookies_disabled)
|
||||||
query = search_util.new_search_query()
|
query = search_util.new_search_query()
|
||||||
|
|
||||||
|
resolved_bangs = search_util.bang_operator()
|
||||||
|
if resolved_bangs != '':
|
||||||
|
return redirect(resolved_bangs)
|
||||||
|
|
||||||
# Redirect to home if invalid/blank search
|
# Redirect to home if invalid/blank search
|
||||||
if not query:
|
if not query:
|
||||||
return redirect('/')
|
return redirect('/')
|
||||||
|
|
|
@ -17,6 +17,14 @@ class RoutingUtils:
|
||||||
self.query = ''
|
self.query = ''
|
||||||
self.cookies_disabled = cookies_disabled
|
self.cookies_disabled = cookies_disabled
|
||||||
self.search_type = self.request_params.get('tbm') if 'tbm' in self.request_params else ''
|
self.search_type = self.request_params.get('tbm') if 'tbm' in self.request_params else ''
|
||||||
|
self.bang_operators = {
|
||||||
|
'!gh': 'https://github.com/search?q=',
|
||||||
|
'!ddg': 'https://duckduckgo.com/?q=',
|
||||||
|
'!w': 'https://wikipedia.com/wiki/',
|
||||||
|
'!so': 'https://stackoverflow.com/search?q=',
|
||||||
|
'!a': 'https://amazon.com/s?k=',
|
||||||
|
'!ebay': 'https://ebay.com/sch/i.html?_nkw=',
|
||||||
|
}
|
||||||
|
|
||||||
def __getitem__(self, name):
|
def __getitem__(self, name):
|
||||||
return getattr(self, name)
|
return getattr(self, name)
|
||||||
|
@ -55,6 +63,15 @@ class RoutingUtils:
|
||||||
self.query = q[2:] if self.feeling_lucky else q
|
self.query = q[2:] if self.feeling_lucky else q
|
||||||
return self.query
|
return self.query
|
||||||
|
|
||||||
|
|
||||||
|
def bang_operator(self) -> str:
|
||||||
|
print(self.query)
|
||||||
|
for operator, url in self.bang_operators.items():
|
||||||
|
if operator in self.query:
|
||||||
|
return url + self.query.replace(operator, '').strip()
|
||||||
|
return ''
|
||||||
|
|
||||||
|
|
||||||
def generate_response(self) -> Tuple[Any, int]:
|
def generate_response(self) -> Tuple[Any, int]:
|
||||||
mobile = 'Android' in self.user_agent or 'iPhone' in self.user_agent
|
mobile = 'Android' in self.user_agent or 'iPhone' in self.user_agent
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue