Skip to content
This repository has been archived by the owner on Sep 7, 2023. It is now read-only.

Commit

Permalink
remove 'all' option from search languages
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcAbonce committed Dec 6, 2017
1 parent 46fb0d8 commit 4d17703
Show file tree
Hide file tree
Showing 56 changed files with 166 additions and 249 deletions.
6 changes: 3 additions & 3 deletions searx/engines/archlinux.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
xpath_link = './/div[@class="mw-search-result-heading"]/a'


# cut 'en' from 'en_US', 'de' from 'de_CH', and so on
# cut 'en' from 'en-US', 'de' from 'de-CH', and so on
def locale_to_lang_code(locale):
if locale.find('-') >= 0:
locale = locale.split('-')[0]
Expand All @@ -36,7 +36,7 @@ def locale_to_lang_code(locale):
# wikis for some languages were moved off from the main site, we need to make
# requests to correct URLs to be able to get results in those languages
lang_urls = {
'all': {
'en': {
'base': 'https://wiki.archlinux.org',
'search': '/index.php?title=Special:Search&offset={offset}&{query}'
},
Expand Down Expand Up @@ -67,7 +67,7 @@ def locale_to_lang_code(locale):
def get_lang_urls(language):
if language in lang_urls:
return lang_urls[language]
return lang_urls['all']
return lang_urls['en']


# Language names to build search requests for
Expand Down
5 changes: 1 addition & 4 deletions searx/engines/bing.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,7 @@
def request(query, params):
offset = (params['pageno'] - 1) * 10 + 1

if params['language'] != 'all':
lang = params['language'].split('-')[0].upper()
else:
lang = 'EN'
lang = params['language'].split('-')[0].upper()

query = u'language:{} {}'.format(lang, query.decode('utf-8')).encode('utf-8')

Expand Down
5 changes: 1 addition & 4 deletions searx/engines/bing_news.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,7 @@ def request(query, params):

offset = (params['pageno'] - 1) * 10 + 1

if params['language'] == 'all':
language = 'en-US'
else:
language = params['language']
language = params['language']

params['url'] = _get_url(query, language, offset, params['time_range'])

Expand Down
5 changes: 1 addition & 4 deletions searx/engines/dailymotion.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,7 @@

# do search-request
def request(query, params):
if params['language'] == 'all':
locale = 'en-US'
else:
locale = params['language']
locale = params['language']

params['url'] = search_url.format(
query=urlencode({'search': query, 'localization': locale}),
Expand Down
12 changes: 3 additions & 9 deletions searx/engines/duckduckgo.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,7 @@
# match query's language to a region code that duckduckgo will accept
def get_region_code(lang, lang_list=None):
# custom fixes for languages
if lang == 'all':
region_code = None
elif lang[:2] == 'ja':
if lang[:2] == 'ja':
region_code = 'jp-jp'
elif lang[:2] == 'sl':
region_code = 'sl-sl'
Expand Down Expand Up @@ -82,12 +80,8 @@ def request(query, params):
offset = (params['pageno'] - 1) * 30

region_code = get_region_code(params['language'])
if region_code:
params['url'] = url.format(
query=urlencode({'q': query, 'kl': region_code}), offset=offset, dc_param=offset)
else:
params['url'] = url.format(
query=urlencode({'q': query}), offset=offset, dc_param=offset)
params['url'] = url.format(
query=urlencode({'q': query, 'kl': region_code}), offset=offset, dc_param=offset)

if params['time_range'] in time_range_dict:
params['url'] += time_range_url.format(range=time_range_dict[params['time_range']])
Expand Down
8 changes: 2 additions & 6 deletions searx/engines/duckduckgo_images.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,8 @@ def request(query, params):
safesearch = params['safesearch'] - 1

region_code = get_region_code(params['language'], lang_list=supported_languages)
if region_code:
params['url'] = images_url.format(
query=urlencode({'q': query, 'l': region_code}), offset=offset, safesearch=safesearch, vqd=vqd)
else:
params['url'] = images_url.format(
query=urlencode({'q': query}), offset=offset, safesearch=safesearch, vqd=vqd)
params['url'] = images_url.format(
query=urlencode({'q': query, 'l': region_code}), offset=offset, safesearch=safesearch, vqd=vqd)

return params

Expand Down
5 changes: 1 addition & 4 deletions searx/engines/faroo.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,7 @@ def request(query, params):
offset = (params['pageno'] - 1) * number_of_results + 1
categorie = search_category.get(params['category'], 'web')

if params['language'] == 'all':
language = 'en'
else:
language = params['language'].split('_')[0]
language = params['language'].split('-')[0]

# if language is not supported, put it in english
if language != 'en' and\
Expand Down
9 changes: 3 additions & 6 deletions searx/engines/gigablast.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,9 @@
def request(query, params):
offset = (params['pageno'] - 1) * number_of_results

if params['language'] == 'all':
language = 'xx'
else:
language = params['language'].replace('-', '_').lower()
if language.split('-')[0] != 'zh':
language = language.split('-')[0]
language = params['language'].replace('-', '_').lower()
if language.split('-')[0] != 'zh':
language = language.split('-')[0]

if params['safesearch'] >= 1:
safesearch = 1
Expand Down
3 changes: 2 additions & 1 deletion searx/engines/google.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,8 @@ def extract_text_from_dom(result, xpath):
def request(query, params):
offset = (params['pageno'] - 1) * 10

if params['language'] == 'all':
# temporary fix until a way of supporting en-US is found
if params['language'] == 'en-US':
params['language'] = 'en-GB'

if params['language'][:2] == 'jv':
Expand Down
5 changes: 2 additions & 3 deletions searx/engines/google_news.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,8 @@ def request(query, params):
params['url'] = search_url.format(query=urlencode({'q': query}),
search_options=urlencode(search_options))

if params['language'] != 'all':
language_array = params['language'].lower().split('-')
params['url'] += '&lr=lang_' + language_array[0]
language_array = params['language'].lower().split('-')
params['url'] += '&lr=lang_' + language_array[0]

return params

Expand Down
5 changes: 1 addition & 4 deletions searx/engines/mediawiki.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,7 @@ def request(query, params):

format_strings = list(Formatter().parse(base_url))

if params['language'] == 'all':
language = 'en'
else:
language = params['language'].split('-')[0]
language = params['language'].split('-')[0]

# format_string [('https://', 'language', '', None), ('.wikipedia.org/', None, None, None)]
if any(x[1] == 'language' for x in format_strings):
Expand Down
7 changes: 3 additions & 4 deletions searx/engines/photon.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,9 @@ def request(query, params):
search_string.format(query=urlencode({'q': query}),
limit=number_of_results)

if params['language'] != 'all':
language = params['language'].split('_')[0]
if language in supported_languages:
params['url'] = params['url'] + "&lang=" + language
language = params['language'].split('-')[0]
if language in supported_languages:
params['url'] = params['url'] + "&lang=" + language

# using searx User-Agent
params['headers']['User-Agent'] = searx_useragent()
Expand Down
23 changes: 11 additions & 12 deletions searx/engines/qwant.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,17 @@ def request(query, params):
query=urlencode({'q': query}),
offset=offset)

# add language tag if specified
if params['language'] != 'all':
if params['language'] == 'no' or params['language'].startswith('no-'):
params['language'] = params['language'].replace('no', 'nb', 1)
if params['language'].find('-') < 0:
# tries to get a country code from language
for lang in supported_languages:
lc = lang.split('-')
if params['language'] == lc[0]:
params['language'] = lang
break
params['url'] += '&locale=' + params['language'].replace('-', '_').lower()
# add language tag
if params['language'] == 'no' or params['language'].startswith('no-'):
params['language'] = params['language'].replace('no', 'nb', 1)
if params['language'].find('-') < 0:
# tries to get a country code from language
for lang in supported_languages:
lc = lang.split('-')
if params['language'] == lc[0]:
params['language'] = lang
break
params['url'] += '&locale=' + params['language'].replace('-', '_').lower()

return params

Expand Down
5 changes: 2 additions & 3 deletions searx/engines/startpage.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,8 @@ def request(query, params):
params['data'] = {'query': query,
'startat': offset}

# set language if specified
if params['language'] != 'all':
params['data']['with_language'] = ('lang_' + params['language'].split('-')[0])
# set language
params['data']['with_language'] = ('lang_' + params['language'].split('-')[0])

return params

Expand Down
2 changes: 1 addition & 1 deletion searx/engines/subtitleseeker.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def response(resp):
search_lang = 'Farsi'
elif resp.search_params['language'] == 'pt-BR':
search_lang = 'Brazilian'
elif resp.search_params['language'] != 'all':
else:
search_lang = [lc[3]
for lc in language_codes
if lc[0].split('-')[0] == resp.search_params['language'].split('-')[0]]
Expand Down
5 changes: 1 addition & 4 deletions searx/engines/swisscows.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,7 @@

# do search-request
def request(query, params):
if params['language'] == 'all':
ui_language = 'browser'
region = 'browser'
elif params['language'].split('-')[0] == 'no':
if params['language'].split('-')[0] == 'no':
region = 'nb-NO'
else:
region = params['language']
Expand Down
7 changes: 1 addition & 6 deletions searx/engines/twitter.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,7 @@
# do search-request
def request(query, params):
params['url'] = search_url + urlencode({'q': query})

# set language if specified
if params['language'] != 'all':
params['cookies']['lang'] = params['language'].split('-')[0]
else:
params['cookies']['lang'] = 'en'
params['cookies']['lang'] = params['language'].split('-')[0]

return params

Expand Down
4 changes: 0 additions & 4 deletions searx/engines/wikidata.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,6 @@

def request(query, params):
language = params['language'].split('-')[0]
if language == 'all':
language = 'en'

params['url'] = url_search.format(
query=urlencode({'label': query, 'language': language}))
Expand All @@ -71,8 +69,6 @@ def response(resp):
wikidata_ids = html.xpath(wikidata_ids_xpath)

language = resp.search_params['language'].split('-')[0]
if language == 'all':
language = 'en'

# TODO: make requests asynchronous to avoid timeout when result_count > 1
for wikidata_id in wikidata_ids[:result_count]:
Expand Down
2 changes: 1 addition & 1 deletion searx/engines/wikipedia.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
# set language in base_url
def url_lang(lang):
lang = lang.split('-')[0]
if lang == 'all' or lang not in supported_languages:
if lang not in supported_languages:
language = 'en'
else:
language = lang
Expand Down
4 changes: 1 addition & 3 deletions searx/engines/yacy.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,7 @@ def request(query, params):
limit=number_of_results,
search_type=search_type)

# add language tag if specified
if params['language'] != 'all':
params['url'] += '&lr=lang_' + params['language'].split('-')[0]
params['url'] += '&lr=lang_' + params['language'].split('-')[0]

return params

Expand Down
4 changes: 1 addition & 3 deletions searx/engines/yahoo.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,7 @@ def _get_url(query, offset, language, time_range):


def _get_language(params):
if params['language'] == 'all':
return 'en'
elif params['language'][:2] == 'zh':
if params['language'][:2] == 'zh':
if params['language'] == 'zh' or params['language'] == 'zh-CH':
return 'szh'
else:
Expand Down
5 changes: 1 addition & 4 deletions searx/engines/yahoo_news.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,7 @@
def request(query, params):
offset = (params['pageno'] - 1) * 10 + 1

if params['language'] == 'all':
language = 'en'
else:
language = params['language'].split('_')[0]
language = params['language'].split('-')[0]

params['url'] = search_url.format(offset=offset,
query=urlencode({'p': query}),
Expand Down
4 changes: 1 addition & 3 deletions searx/engines/youtube_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,7 @@ def request(query, params):
params['url'] = search_url.format(query=urlencode({'q': query}),
api_key=api_key)

# add language tag if specified
if params['language'] != 'all':
params['url'] += '&relevanceLanguage=' + params['language'].split('-')[0]
params['url'] += '&relevanceLanguage=' + params['language'].split('-')[0]

return params

Expand Down
1 change: 0 additions & 1 deletion searx/preferences.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@

COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5 # 5 years
LANGUAGE_CODES = [l[0] for l in languages]
LANGUAGE_CODES.append('all')
DISABLED = 0
ENABLED = 1
DOI_RESOLVERS = list(settings['doi_resolvers'])
Expand Down
34 changes: 19 additions & 15 deletions searx/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,28 +73,32 @@ def parse_query(self):
if query_part[0] == ':':
lang = query_part[1:].lower().replace('_', '-')

# user may set a valid, yet not selectable language
if VALID_LANGUAGE_CODE.match(lang):
self.languages.append(lang)
parse_next = True

# check if any language-code is equal with
# declared language-codes
for lc in language_codes:
lang_id, lang_name, country, english_name = map(unicode.lower, lc)

# if correct language-code is found
# set it as new search-language
if lang == lang_id\
or lang_id.startswith(lang)\
or lang == lang_name\
or lang == english_name\
or lang.replace('-', ' ') == country:
parse_next = True
self.languages.append(lang_id)
# to ensure best match (first match is not necessarily the best one)
if lang == lang_id:
break
if (lang == lang_id
or lang == lang_name
or lang == english_name
or lang.replace('-', ' ') == country)\
and lang not in self.languages:
parse_next = True
lang_parts = lang_id.split('-')
if len(lang_parts) == 2:
self.languages.append(lang_parts[0] + '-' + lang_parts[1].upper())
else:
self.languages.append(lang_id)
# to ensure best match (first match is not necessarily the best one)
if lang == lang_id:
break

# user may set a valid, yet not selectable language
if not self.languages and VALID_LANGUAGE_CODE.match(lang):
self.languages.append(lang)
parse_next = True

# this force a engine or category
if query_part[0] == '!' or query_part[0] == '?':
Expand Down

0 comments on commit 4d17703

Please sign in to comment.