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

Revert "remove 'all' option from search languages" #1475

Merged
merged 2 commits into from
Jan 7, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions searx/engines/archlinux.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
'en': {
'all': {
'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['en']
return lang_urls['all']


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

lang = match_language(params['language'], supported_languages, language_aliases)
if params['language'] == 'all':
lang = 'EN'
else:
lang = match_language(params['language'], supported_languages, language_aliases)

query = u'language:{} {}'.format(lang.split('-')[0].upper(), query.decode('utf-8')).encode('utf-8')

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

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

language = match_language(params['language'], supported_languages, language_aliases)
if params['language'] == 'all':
language = 'en-US'
else:
language = match_language(params['language'], supported_languages, language_aliases)

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

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

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

params['url'] = search_url.format(
query=urlencode({'search': query, 'localization': locale}),
Expand Down
12 changes: 9 additions & 3 deletions searx/engines/duckduckgo.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,23 +54,29 @@

# match query's language to a region code that duckduckgo will accept
def get_region_code(lang, lang_list=[]):
if lang == 'all':
return None

lang_code = match_language(lang, lang_list, language_aliases, 'wt-WT')
lang_parts = lang_code.split('-')

# country code goes first
return lang_parts[1].lower() + '-' + lang_parts[0].lower()


# do search-request
def request(query, params):
if params['time_range'] and params['time_range'] not in time_range_dict:
return params

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

region_code = get_region_code(params['language'], supported_languages)
params['url'] = url.format(
query=urlencode({'q': query, 'kl': region_code}), offset=offset, dc_param=offset)
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)

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: 6 additions & 2 deletions searx/engines/duckduckgo_images.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,12 @@ def request(query, params):
safesearch = params['safesearch'] - 1

region_code = get_region_code(params['language'], lang_list=supported_languages)
params['url'] = images_url.format(
query=urlencode({'q': query, 'l': region_code}), offset=offset, safesearch=safesearch, vqd=vqd)
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)

return params

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

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

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

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

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

language = match_language(params['language'], supported_languages, language_aliases)
if params['language'] == 'all' or params['language'] == 'en-US':
language = 'en-GB'
else:
language = match_language(params['language'], supported_languages, language_aliases)

language_array = language.split('-')
if params['language'].find('-') > 0:
country = params['language'].split('-')[1]
Expand Down
7 changes: 4 additions & 3 deletions searx/engines/google_news.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,10 @@ def request(query, params):
params['url'] = search_url.format(query=urlencode({'q': query}),
search_options=urlencode(search_options))

language = match_language(params['language'], supported_languages, language_aliases).split('-')[0]
if language:
params['url'] += '&lr=lang_' + language
if params['language'] != 'all':
language = match_language(params['language'], supported_languages, language_aliases).split('-')[0]
if language:
params['url'] += '&lr=lang_' + language

return params

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

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

language = params['language'].split('-')[0]
if params['language'] == 'all':
language = 'en'
else:
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: 4 additions & 3 deletions searx/engines/photon.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,10 @@ def request(query, params):
search_string.format(query=urlencode({'q': query}),
limit=number_of_results)

language = params['language'].split('-')[0]
if language in supported_languages:
params['url'] = params['url'] + "&lang=" + language
if params['language'] != 'all':
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
5 changes: 3 additions & 2 deletions searx/engines/qwant.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,9 @@ def request(query, params):
offset=offset)

# add language tag
language = match_language(params['language'], supported_languages, language_aliases)
params['url'] += '&locale=' + language.replace('-', '_').lower()
if params['language'] != 'all':
language = match_language(params['language'], supported_languages, language_aliases)
params['url'] += '&locale=' + language.replace('-', '_').lower()

return params

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

# set language
params['data']['with_language'] = ('lang_' + params['language'].split('-')[0])
# set language if specified
if params['language'] != 'all':
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'
else:
elif resp.search_params['language'] != 'all':
search_lang = [lc[3]
for lc in language_codes
if lc[0].split('-')[0] == resp.search_params['language'].split('-')[0]]
Expand Down
8 changes: 6 additions & 2 deletions searx/engines/swisscows.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,12 @@

# do search-request
def request(query, params):
region = match_language(params['language'], supported_languages, language_aliases)
ui_language = region.split('-')[0]
if params['language'] == 'all':
ui_language = 'browser'
region = 'browser'
else:
region = match_language(params['language'], supported_languages, language_aliases)
ui_language = region.split('-')[0]

search_path = search_string.format(
query=urlencode({'query': query, 'uiLanguage': ui_language, 'region': region}),
Expand Down
7 changes: 6 additions & 1 deletion searx/engines/twitter.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,12 @@
# do search-request
def request(query, params):
params['url'] = search_url + urlencode({'q': query})
params['cookies']['lang'] = params['language'].split('-')[0]

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

return params

Expand Down
5 changes: 4 additions & 1 deletion searx/engines/wikidata.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,10 @@ def response(resp):
html = fromstring(resp.text)
search_results = html.xpath(wikidata_ids_xpath)

language = match_language(resp.search_params['language'], supported_languages, language_aliases).split('-')[0]
if resp.search_params['language'].split('-')[0] == 'all':
language = 'en'
else:
language = match_language(resp.search_params['language'], supported_languages, language_aliases).split('-')[0]

# TODO: make requests asynchronous to avoid timeout when result_count > 1
for search_result in search_results[:result_count]:
Expand Down
3 changes: 3 additions & 0 deletions searx/engines/wikipedia.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@

# set language in base_url
def url_lang(lang):
lang_pre = lang.split('-')[0]
if lang_pre == 'all' or lang_pre not in supported_languages and lang_pre not in language_aliases:
return 'en'
return match_language(lang, supported_languages, language_aliases).split('-')[0]


Expand Down
4 changes: 3 additions & 1 deletion searx/engines/yacy.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,9 @@ def request(query, params):
limit=number_of_results,
search_type=search_type)

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

return params

Expand Down
17 changes: 13 additions & 4 deletions searx/engines/yahoo.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,16 +73,25 @@ def _get_url(query, offset, language, time_range):
lang=language)


def _get_language(params):
if params['language'] == 'all':
return 'en'

language = match_language(params['language'], supported_languages, language_aliases)
if language not in language_aliases.values():
language = language.split('-')[0]
language = language.replace('-', '_').lower()

return language


# do search-request
def request(query, params):
if params['time_range'] and params['time_range'] not in time_range_dict:
return params

offset = (params['pageno'] - 1) * 10 + 1
language = match_language(params['language'], supported_languages, language_aliases)
if language not in language_aliases.values():
language = language.split('-')[0]
language = language.replace('-', '_').lower()
language = _get_language(params)

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

Expand Down
5 changes: 4 additions & 1 deletion searx/engines/yahoo_news.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,10 @@
def request(query, params):
offset = (params['pageno'] - 1) * 10 + 1

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

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

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

return params

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

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
6 changes: 1 addition & 5 deletions searx/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import requests.exceptions
import searx.poolrequests as requests_lib
from searx.engines import (
categories, engines, settings
categories, engines
)
from searx.answerers import ask
from searx.utils import gen_useragent
Expand Down Expand Up @@ -221,10 +221,6 @@ def get_search_query_from_webapp(preferences, form):
else:
query_lang = preferences.get_value('language')

# provides backwards compatibility for requests using old language default
if query_lang == 'all':
query_lang = settings['search']['language']

# check language
if not VALID_LANGUAGE_CODE.match(query_lang):
raise SearxParameterException('language', query_lang)
Expand Down
2 changes: 1 addition & 1 deletion searx/settings_robot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ general:
search:
safe_search : 0
autocomplete : ""
language: "en-US"
language: "all"

server:
port : 11111
Expand Down
1 change: 1 addition & 0 deletions searx/templates/courgette/preferences.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ <h2>{{ _('Preferences') }}</h2>
<legend>{{ _('Search language') }}</legend>
<p>
<select name='language'>
<option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }}</option>
{% for lang_id,lang_name,country_name,english_name in language_codes | sort(attribute=1) %}
<option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>{{ lang_name }} {% if country_name %}({{ country_name }}) {% endif %}- {{ lang_id }}</option>
{% endfor %}
Expand Down
1 change: 1 addition & 0 deletions searx/templates/legacy/preferences.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ <h2>{{ _('Preferences') }}</h2>
<legend>{{ _('Search language') }}</legend>
<p>
<select name='language'>
<option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }}</option>
{% for lang_id,lang_name,country_name,english_name in language_codes | sort(attribute=1) %}
<option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>{{ lang_name }} {% if country_name %}({{ country_name }}) {% endif %}- {{ lang_id }}</option>
{% endfor %}
Expand Down
11 changes: 6 additions & 5 deletions searx/templates/oscar/languages.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
{% else %}
<select class="time_range custom-select form-control" id='language' name='language'>
{% endif %}
{% for lang_id,lang_name,country_name,english_name in language_codes | sort(attribute=1) %}
<option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>
{{ lang_name }} {% if country_name %}({{ country_name }}) {% endif %}- {{ lang_id }}
</option>
{% endfor %}
<option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }}</option>
{% for lang_id,lang_name,country_name,english_name in language_codes | sort(attribute=1) %}
<option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>
{{ lang_name }} {% if country_name %}({{ country_name }}) {% endif %}- {{ lang_id }}
</option>
{% endfor %}
</select>