PEP-8: Fix formatting in config model and utils
This commit is contained in:
parent
3350e54835
commit
cb0b886869
|
@ -128,7 +128,7 @@ class Config:
|
||||||
{'name': 'Fiji', 'value': 'countryFJ'},
|
{'name': 'Fiji', 'value': 'countryFJ'},
|
||||||
{'name': 'Finland', 'value': 'countryFI'},
|
{'name': 'Finland', 'value': 'countryFI'},
|
||||||
{'name': 'France', 'value': 'countryFR'},
|
{'name': 'France', 'value': 'countryFR'},
|
||||||
{'name': 'France\, Metropolitan', 'value': 'countryFX'},
|
{'name': r'France\, Metropolitan', 'value': 'countryFX'},
|
||||||
{'name': 'French Guiana', 'value': 'countryGF'},
|
{'name': 'French Guiana', 'value': 'countryGF'},
|
||||||
{'name': 'French Polynesia', 'value': 'countryPF'},
|
{'name': 'French Polynesia', 'value': 'countryPF'},
|
||||||
{'name': 'French Southern Territories', 'value': 'countryTF'},
|
{'name': 'French Southern Territories', 'value': 'countryTF'},
|
||||||
|
@ -167,7 +167,8 @@ class Config:
|
||||||
{'name': 'Kazakhstan', 'value': 'countryKZ'},
|
{'name': 'Kazakhstan', 'value': 'countryKZ'},
|
||||||
{'name': 'Kenya', 'value': 'countryKE'},
|
{'name': 'Kenya', 'value': 'countryKE'},
|
||||||
{'name': 'Kiribati', 'value': 'countryKI'},
|
{'name': 'Kiribati', 'value': 'countryKI'},
|
||||||
{'name': 'Korea, Democratic People\'s Republic of', 'value': 'countryKP'},
|
{'name': 'Korea, Democratic People\'s Republic of',
|
||||||
|
'value': 'countryKP'},
|
||||||
{'name': 'Korea, Republic of', 'value': 'countryKR'},
|
{'name': 'Korea, Republic of', 'value': 'countryKR'},
|
||||||
{'name': 'Kuwait', 'value': 'countryKW'},
|
{'name': 'Kuwait', 'value': 'countryKW'},
|
||||||
{'name': 'Kyrgyzstan', 'value': 'countryKG'},
|
{'name': 'Kyrgyzstan', 'value': 'countryKG'},
|
||||||
|
@ -181,7 +182,8 @@ class Config:
|
||||||
{'name': 'Lithuania', 'value': 'countryLT'},
|
{'name': 'Lithuania', 'value': 'countryLT'},
|
||||||
{'name': 'Luxembourg', 'value': 'countryLU'},
|
{'name': 'Luxembourg', 'value': 'countryLU'},
|
||||||
{'name': 'Macao', 'value': 'countryMO'},
|
{'name': 'Macao', 'value': 'countryMO'},
|
||||||
{'name': 'Macedonia, the Former Yugosalv Republic of', 'value': 'countryMK'},
|
{'name': 'Macedonia, the Former Yugosalv Republic of',
|
||||||
|
'value': 'countryMK'},
|
||||||
{'name': 'Madagascar', 'value': 'countryMG'},
|
{'name': 'Madagascar', 'value': 'countryMG'},
|
||||||
{'name': 'Malawi', 'value': 'countryMW'},
|
{'name': 'Malawi', 'value': 'countryMW'},
|
||||||
{'name': 'Malaysia', 'value': 'countryMY'},
|
{'name': 'Malaysia', 'value': 'countryMY'},
|
||||||
|
@ -253,7 +255,8 @@ class Config:
|
||||||
{'name': 'Solomon Islands', 'value': 'countrySB'},
|
{'name': 'Solomon Islands', 'value': 'countrySB'},
|
||||||
{'name': 'Somalia', 'value': 'countrySO'},
|
{'name': 'Somalia', 'value': 'countrySO'},
|
||||||
{'name': 'South Africa', 'value': 'countryZA'},
|
{'name': 'South Africa', 'value': 'countryZA'},
|
||||||
{'name': 'South Georgia and the South Sandwich Islands', 'value': 'countryGS'},
|
{'name': 'South Georgia and the South Sandwich Islands',
|
||||||
|
'value': 'countryGS'},
|
||||||
{'name': 'Spain', 'value': 'countryES'},
|
{'name': 'Spain', 'value': 'countryES'},
|
||||||
{'name': 'Sri Lanka', 'value': 'countryLK'},
|
{'name': 'Sri Lanka', 'value': 'countryLK'},
|
||||||
{'name': 'Sudan', 'value': 'countrySD'},
|
{'name': 'Sudan', 'value': 'countrySD'},
|
||||||
|
@ -310,6 +313,12 @@ class Config:
|
||||||
self.alts = False
|
self.alts = False
|
||||||
self.new_tab = False
|
self.new_tab = False
|
||||||
self.get_only = False
|
self.get_only = False
|
||||||
|
self.safe_keys = [
|
||||||
|
'lang_search',
|
||||||
|
'lang_interface',
|
||||||
|
'ctry',
|
||||||
|
'dark'
|
||||||
|
]
|
||||||
|
|
||||||
for key, value in kwargs.items():
|
for key, value in kwargs.items():
|
||||||
setattr(self, key, value)
|
setattr(self, key, value)
|
||||||
|
@ -338,12 +347,7 @@ class Config:
|
||||||
array
|
array
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return key in [
|
return key in self.safe_keys
|
||||||
'lang_search',
|
|
||||||
'lang_interface',
|
|
||||||
'ctry',
|
|
||||||
'dark'
|
|
||||||
]
|
|
||||||
|
|
||||||
def from_params(self, params) -> 'Config':
|
def from_params(self, params) -> 'Config':
|
||||||
"""Modify user config with search parameters. This is primarily
|
"""Modify user config with search parameters. This is primarily
|
||||||
|
|
|
@ -7,14 +7,16 @@ SKIP_ARGS = ['ref_src', 'utm']
|
||||||
FULL_RES_IMG = '<br/><a href="{}">Full Image</a>'
|
FULL_RES_IMG = '<br/><a href="{}">Full Image</a>'
|
||||||
GOOG_IMG = '/images/branding/searchlogo/1x/googlelogo'
|
GOOG_IMG = '/images/branding/searchlogo/1x/googlelogo'
|
||||||
LOGO_URL = GOOG_IMG + '_desk'
|
LOGO_URL = GOOG_IMG + '_desk'
|
||||||
BLANK_B64 = '''
|
BLANK_B64 = ('data:image/png;base64,'
|
||||||
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAD0lEQVR42mNkwAIYh7IgAAVVAAuInjI5AAAAAElFTkSuQmCC
|
'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAD0lEQVR42mNkw'
|
||||||
'''
|
'AIYh7IgAAVVAAuInjI5AAAAAElFTkSuQmCC')
|
||||||
|
|
||||||
|
# Ad keywords
|
||||||
BLACKLIST = [
|
BLACKLIST = [
|
||||||
'ad', 'anuncio', 'annuncio', 'annonce', 'Anzeige', '广告', '廣告', 'Reklama', 'Реклама', 'Anunț', '광고',
|
'ad', 'anuncio', 'annuncio', 'annonce', 'Anzeige', '广告', '廣告', 'Reklama',
|
||||||
'annons', 'Annonse', 'Iklan', '広告', 'Augl.', 'Mainos', 'Advertentie', 'إعلان', 'Գովազդ', 'विज्ञापन', 'Reklam',
|
'Реклама', 'Anunț', '광고', 'annons', 'Annonse', 'Iklan', '広告', 'Augl.',
|
||||||
'آگهی', 'Reklāma', 'Reklaam', 'Διαφήμιση', 'מודעה', 'Hirdetés', 'Anúncio'
|
'Mainos', 'Advertentie', 'إعلان', 'Գովազդ', 'विज्ञापन', 'Reklam', 'آگهی',
|
||||||
|
'Reklāma', 'Reklaam', 'Διαφήμιση', 'מודעה', 'Hirdetés', 'Anúncio'
|
||||||
]
|
]
|
||||||
|
|
||||||
SITE_ALTS = {
|
SITE_ALTS = {
|
||||||
|
@ -25,7 +27,8 @@ SITE_ALTS = {
|
||||||
|
|
||||||
|
|
||||||
def has_ad_content(element: str):
|
def has_ad_content(element: str):
|
||||||
return element.upper() in (value.upper() for value in BLACKLIST) or 'ⓘ' in element
|
return element.upper() in (value.upper() for value in BLACKLIST) \
|
||||||
|
or 'ⓘ' in element
|
||||||
|
|
||||||
|
|
||||||
def get_first_link(soup):
|
def get_first_link(soup):
|
||||||
|
|
|
@ -1,25 +1,26 @@
|
||||||
from app.filter import Filter, get_first_link
|
from app.filter import Filter, get_first_link
|
||||||
from app.utils.session_utils import generate_user_keys
|
from app.utils.session_utils import generate_user_keys
|
||||||
from app.request import gen_query
|
from app.request import gen_query
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup as bsoup
|
||||||
from cryptography.fernet import Fernet, InvalidToken
|
from cryptography.fernet import Fernet, InvalidToken
|
||||||
from flask import g
|
from flask import g
|
||||||
from typing import Any, Tuple
|
from typing import Any, Tuple
|
||||||
|
|
||||||
|
|
||||||
TOR_BANNER = '<hr><h1 style="text-align: center">You are using Tor</h1><hr>'
|
TOR_BANNER = '<hr><h1 style="text-align: center">You are using Tor</h1><hr>'
|
||||||
|
|
||||||
|
|
||||||
class RoutingUtils:
|
class RoutingUtils:
|
||||||
def __init__(self, request, config, session, cookies_disabled=False):
|
def __init__(self, request, config, session, cookies_disabled=False):
|
||||||
self.request_params = request.args if request.method == 'GET' else request.form
|
method = request.method
|
||||||
|
self.request_params = request.args if method == 'GET' else request.form
|
||||||
self.user_agent = request.headers.get('User-Agent')
|
self.user_agent = request.headers.get('User-Agent')
|
||||||
self.feeling_lucky = False
|
self.feeling_lucky = False
|
||||||
self.config = config
|
self.config = config
|
||||||
self.session = session
|
self.session = session
|
||||||
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 ''
|
||||||
|
|
||||||
def __getitem__(self, name):
|
def __getitem__(self, name):
|
||||||
return getattr(self, name)
|
return getattr(self, name)
|
||||||
|
@ -45,7 +46,9 @@ class RoutingUtils:
|
||||||
else:
|
else:
|
||||||
# Attempt to decrypt if this is an internal link
|
# Attempt to decrypt if this is an internal link
|
||||||
try:
|
try:
|
||||||
q = Fernet(self.session['fernet_keys']['text_key']).decrypt(q.encode()).decode()
|
q = Fernet(
|
||||||
|
self.session['fernet_keys']['text_key']
|
||||||
|
).decrypt(q.encode()).decode()
|
||||||
except InvalidToken:
|
except InvalidToken:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -53,29 +56,40 @@ class RoutingUtils:
|
||||||
self.session['fernet_keys']['text_key'] = generate_user_keys(
|
self.session['fernet_keys']['text_key'] = generate_user_keys(
|
||||||
cookies_disabled=self.cookies_disabled)['text_key']
|
cookies_disabled=self.cookies_disabled)['text_key']
|
||||||
|
|
||||||
# Format depending on whether or not the query is a "feeling lucky" query
|
# Strip leading '! ' for "feeling lucky" queries
|
||||||
self.feeling_lucky = q.startswith('! ')
|
self.feeling_lucky = q.startswith('! ')
|
||||||
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, bangs_dict: dict) -> str:
|
def bang_operator(self, bangs_dict: dict) -> str:
|
||||||
for operator in bangs_dict.keys():
|
for operator in bangs_dict.keys():
|
||||||
if self.query.split(' ')[0] == operator:
|
if self.query.split(' ')[0] != operator:
|
||||||
return bangs_dict[operator]['url'].format(self.query.replace(operator, '').strip())
|
continue
|
||||||
|
|
||||||
|
return bangs_dict[operator]['url'].format(
|
||||||
|
self.query.replace(operator, '').strip())
|
||||||
return ''
|
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
|
||||||
|
|
||||||
content_filter = Filter(self.session['fernet_keys'], mobile=mobile, config=self.config)
|
content_filter = Filter(
|
||||||
full_query = gen_query(self.query, self.request_params, self.config, content_filter.near)
|
self.session['fernet_keys'],
|
||||||
|
mobile=mobile,
|
||||||
|
config=self.config)
|
||||||
|
full_query = gen_query(
|
||||||
|
self.query,
|
||||||
|
self.request_params,
|
||||||
|
self.config,
|
||||||
|
content_filter.near)
|
||||||
get_body = g.user_request.send(query=full_query)
|
get_body = g.user_request.send(query=full_query)
|
||||||
|
|
||||||
# Produce cleanable html soup from response
|
# Produce cleanable html soup from response
|
||||||
html_soup = BeautifulSoup(content_filter.reskin(get_body.text), 'html.parser')
|
html_soup = bsoup(content_filter.reskin(get_body.text), 'html.parser')
|
||||||
html_soup.insert(0, BeautifulSoup(
|
html_soup.insert(
|
||||||
TOR_BANNER,
|
0,
|
||||||
features='lxml') if g.user_request.tor_valid else BeautifulSoup("", features="lxml"))
|
bsoup(TOR_BANNER, 'html.parser')
|
||||||
|
if g.user_request.tor_valid else bsoup('', 'html.parser'))
|
||||||
|
|
||||||
if self.feeling_lucky:
|
if self.feeling_lucky:
|
||||||
return get_first_link(html_soup), 1
|
return get_first_link(html_soup), 1
|
||||||
|
@ -84,10 +98,12 @@ class RoutingUtils:
|
||||||
|
|
||||||
# Append user config to all search links, if available
|
# Append user config to all search links, if available
|
||||||
param_str = ''.join('&{}={}'.format(k, v)
|
param_str = ''.join('&{}={}'.format(k, v)
|
||||||
for k, v in self.request_params.to_dict(flat=True).items()
|
for k, v in
|
||||||
if self.config.is_safe_key(k))
|
self.request_params.to_dict(flat=True).items()
|
||||||
|
if self.config.is_safe_key(k))
|
||||||
for link in formatted_results.find_all('a', href=True):
|
for link in formatted_results.find_all('a', href=True):
|
||||||
if 'search?' not in link['href'] or link['href'].index('search?') > 1:
|
if 'search?' not in link['href'] or link['href'].index(
|
||||||
|
'search?') > 1:
|
||||||
continue
|
continue
|
||||||
link['href'] += param_str
|
link['href'] += param_str
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user