mirror of https://github.com/searxng/searxng.git
[chore] *: fix typos detected by typos-cli
This commit is contained in:
parent
0253c10b52
commit
f31a3a2053
|
@ -93,7 +93,7 @@ Online Currency
|
||||||
|
|
||||||
- :py:obj:`processors.online_currency <searx.search.processors.online_currency>`
|
- :py:obj:`processors.online_currency <searx.search.processors.online_currency>`
|
||||||
|
|
||||||
*no engine of this type is documented yet / comming soon*
|
*no engine of this type is documented yet / coming soon*
|
||||||
|
|
||||||
.. _online dictionary:
|
.. _online dictionary:
|
||||||
|
|
||||||
|
@ -104,4 +104,4 @@ Online Dictionary
|
||||||
|
|
||||||
- :py:obj:`processors.online_dictionary <searx.search.processors.online_dictionary>`
|
- :py:obj:`processors.online_dictionary <searx.search.processors.online_dictionary>`
|
||||||
|
|
||||||
*no engine of this type is documented yet / comming soon*
|
*no engine of this type is documented yet / coming soon*
|
||||||
|
|
|
@ -22,7 +22,7 @@ log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class FALSE:
|
class FALSE:
|
||||||
"""Class of ``False`` singelton"""
|
"""Class of ``False`` singleton"""
|
||||||
|
|
||||||
# pylint: disable=multiple-statements
|
# pylint: disable=multiple-statements
|
||||||
def __init__(self, msg):
|
def __init__(self, msg):
|
||||||
|
@ -81,7 +81,7 @@ class Config:
|
||||||
return cfg
|
return cfg
|
||||||
|
|
||||||
def __init__(self, cfg_schema: typing.Dict, deprecated: typing.Dict[str, str]):
|
def __init__(self, cfg_schema: typing.Dict, deprecated: typing.Dict[str, str]):
|
||||||
"""Construtor of class Config.
|
"""Constructor of class Config.
|
||||||
|
|
||||||
:param cfg_schema: Schema of the configuration
|
:param cfg_schema: Schema of the configuration
|
||||||
:param deprecated: dictionary that maps deprecated configuration names to a messages
|
:param deprecated: dictionary that maps deprecated configuration names to a messages
|
||||||
|
@ -159,7 +159,7 @@ class Config:
|
||||||
return pathlib.Path(str(val))
|
return pathlib.Path(str(val))
|
||||||
|
|
||||||
def pyobj(self, name, default=UNSET):
|
def pyobj(self, name, default=UNSET):
|
||||||
"""Get python object refered by full qualiffied name (FQN) in the config
|
"""Get python object referred by full qualiffied name (FQN) in the config
|
||||||
string."""
|
string."""
|
||||||
|
|
||||||
fqn = self.get(name, default)
|
fqn = self.get(name, default)
|
||||||
|
|
|
@ -55,10 +55,10 @@ from ._helpers import (
|
||||||
)
|
)
|
||||||
|
|
||||||
TOKEN_LIVE_TIME = 600
|
TOKEN_LIVE_TIME = 600
|
||||||
"""Livetime (sec) of limiter's CSS token."""
|
"""Lifetime (sec) of limiter's CSS token."""
|
||||||
|
|
||||||
PING_LIVE_TIME = 3600
|
PING_LIVE_TIME = 3600
|
||||||
"""Livetime (sec) of the ping-key from a client (request)"""
|
"""Lifetime (sec) of the ping-key from a client (request)"""
|
||||||
|
|
||||||
PING_KEY = 'SearXNG_limiter.ping'
|
PING_KEY = 'SearXNG_limiter.ping'
|
||||||
"""Prefix of all ping-keys generated by :py:obj:`get_ping_key`"""
|
"""Prefix of all ping-keys generated by :py:obj:`get_ping_key`"""
|
||||||
|
|
|
@ -31,7 +31,7 @@ paging = True
|
||||||
number_of_results = 10
|
number_of_results = 10
|
||||||
|
|
||||||
# shortcuts for advanced search
|
# shortcuts for advanced search
|
||||||
shorcut_dict = {
|
shortcut_dict = {
|
||||||
# user-friendly keywords
|
# user-friendly keywords
|
||||||
'format:': 'dcformat:',
|
'format:': 'dcformat:',
|
||||||
'author:': 'dccreator:',
|
'author:': 'dccreator:',
|
||||||
|
@ -55,7 +55,7 @@ shorcut_dict = {
|
||||||
|
|
||||||
def request(query, params):
|
def request(query, params):
|
||||||
# replace shortcuts with API advanced search keywords
|
# replace shortcuts with API advanced search keywords
|
||||||
for key, val in shorcut_dict.items():
|
for key, val in shortcut_dict.items():
|
||||||
query = re.sub(key, val, query)
|
query = re.sub(key, val, query)
|
||||||
|
|
||||||
# basic search
|
# basic search
|
||||||
|
|
|
@ -10,7 +10,7 @@ On the `preference page`_ Bing offers a lot of languages an regions (see section
|
||||||
LANGUAGE and COUNTRY/REGION). The Language is the language of the UI, we need
|
LANGUAGE and COUNTRY/REGION). The Language is the language of the UI, we need
|
||||||
in SearXNG to get the translations of data such as *"published last week"*.
|
in SearXNG to get the translations of data such as *"published last week"*.
|
||||||
|
|
||||||
There is a description of the offical search-APIs_, unfortunately this is not
|
There is a description of the official search-APIs_, unfortunately this is not
|
||||||
the API we can use or that bing itself would use. You can look up some things
|
the API we can use or that bing itself would use. You can look up some things
|
||||||
in the API to get a better picture of bing, but the value specifications like
|
in the API to get a better picture of bing, but the value specifications like
|
||||||
the market codes are usually outdated or at least no longer used by bing itself.
|
the market codes are usually outdated or at least no longer used by bing itself.
|
||||||
|
@ -91,7 +91,7 @@ def request(query, params):
|
||||||
page = params.get('pageno', 1)
|
page = params.get('pageno', 1)
|
||||||
query_params = {
|
query_params = {
|
||||||
'q': query,
|
'q': query,
|
||||||
# if arg 'pq' is missed, somtimes on page 4 we get results from page 1,
|
# if arg 'pq' is missed, sometimes on page 4 we get results from page 1,
|
||||||
# don't ask why it is only sometimes / its M$ and they have never been
|
# don't ask why it is only sometimes / its M$ and they have never been
|
||||||
# deterministic ;)
|
# deterministic ;)
|
||||||
'pq': query,
|
'pq': query,
|
||||||
|
@ -177,7 +177,7 @@ def response(resp):
|
||||||
logger.debug('result error :\n%s', e)
|
logger.debug('result error :\n%s', e)
|
||||||
|
|
||||||
if result_len and _page_offset(resp.search_params.get("pageno", 0)) > result_len:
|
if result_len and _page_offset(resp.search_params.get("pageno", 0)) > result_len:
|
||||||
# Avoid reading more results than avalaible.
|
# Avoid reading more results than available.
|
||||||
# For example, if there is 100 results from some search and we try to get results from 120 to 130,
|
# For example, if there is 100 results from some search and we try to get results from 120 to 130,
|
||||||
# Bing will send back the results from 0 to 10 and no error.
|
# Bing will send back the results from 0 to 10 and no error.
|
||||||
# If we compare results count with the first parameter of the request we can avoid this "invalid" results.
|
# If we compare results count with the first parameter of the request we can avoid this "invalid" results.
|
||||||
|
|
|
@ -42,7 +42,7 @@ about = {
|
||||||
}
|
}
|
||||||
|
|
||||||
send_accept_language_header = True
|
send_accept_language_header = True
|
||||||
"""DuckDuckGo-Lite tries to guess user's prefered language from the HTTP
|
"""DuckDuckGo-Lite tries to guess user's preferred language from the HTTP
|
||||||
``Accept-Language``. Optional the user can select a region filter (but not a
|
``Accept-Language``. Optional the user can select a region filter (but not a
|
||||||
language).
|
language).
|
||||||
"""
|
"""
|
||||||
|
@ -402,7 +402,7 @@ def fetch_traits(engine_traits: EngineTraits):
|
||||||
"""Fetch languages & regions from DuckDuckGo.
|
"""Fetch languages & regions from DuckDuckGo.
|
||||||
|
|
||||||
SearXNG's ``all`` locale maps DuckDuckGo's "Alle regions" (``wt-wt``).
|
SearXNG's ``all`` locale maps DuckDuckGo's "Alle regions" (``wt-wt``).
|
||||||
DuckDuckGo's language "Browsers prefered language" (``wt_WT``) makes no
|
DuckDuckGo's language "Browsers preferred language" (``wt_WT``) makes no
|
||||||
sense in a SearXNG request since SearXNG's ``all`` will not add a
|
sense in a SearXNG request since SearXNG's ``all`` will not add a
|
||||||
``Accept-Language`` HTTP header. The value in ``engine_traits.all_locale``
|
``Accept-Language`` HTTP header. The value in ``engine_traits.all_locale``
|
||||||
is ``wt-wt`` (the region).
|
is ``wt-wt`` (the region).
|
||||||
|
|
|
@ -142,7 +142,7 @@ search_url = base_url + '/sp/search'
|
||||||
|
|
||||||
# specific xpath variables
|
# specific xpath variables
|
||||||
# ads xpath //div[@id="results"]/div[@id="sponsored"]//div[@class="result"]
|
# ads xpath //div[@id="results"]/div[@id="sponsored"]//div[@class="result"]
|
||||||
# not ads: div[@class="result"] are the direct childs of div[@id="results"]
|
# not ads: div[@class="result"] are the direct children of div[@id="results"]
|
||||||
search_form_xpath = '//form[@id="search"]'
|
search_form_xpath = '//form[@id="search"]'
|
||||||
"""XPath of Startpage's origin search form
|
"""XPath of Startpage's origin search form
|
||||||
|
|
||||||
|
|
|
@ -208,7 +208,7 @@ def response(resp):
|
||||||
'title': backlink['image_name'],
|
'title': backlink['image_name'],
|
||||||
'img_src': backlink['url'],
|
'img_src': backlink['url'],
|
||||||
'format': tineye_match['image_format'],
|
'format': tineye_match['image_format'],
|
||||||
'widht': tineye_match['width'],
|
'width': tineye_match['width'],
|
||||||
'height': tineye_match['height'],
|
'height': tineye_match['height'],
|
||||||
'publishedDate': backlink['crawl_date'],
|
'publishedDate': backlink['crawl_date'],
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ void_arch = 'x86_64'
|
||||||
"""Default architecture to search for. For valid values see :py:obj:`ARCH_RE`"""
|
"""Default architecture to search for. For valid values see :py:obj:`ARCH_RE`"""
|
||||||
|
|
||||||
ARCH_RE = re.compile('aarch64-musl|armv6l-musl|armv7l-musl|x86_64-musl|aarch64|armv6l|armv7l|i686|x86_64')
|
ARCH_RE = re.compile('aarch64-musl|armv6l-musl|armv7l-musl|x86_64-musl|aarch64|armv6l|armv7l|i686|x86_64')
|
||||||
"""Regular expresion that match a architecture in the query string."""
|
"""Regular expression that match a architecture in the query string."""
|
||||||
|
|
||||||
|
|
||||||
def request(query, params):
|
def request(query, params):
|
||||||
|
|
|
@ -12,7 +12,7 @@ ipv6_prefix = 48
|
||||||
|
|
||||||
[botdetection.ip_limit]
|
[botdetection.ip_limit]
|
||||||
|
|
||||||
# To get unlimited access in a local network, by default link-lokal addresses
|
# To get unlimited access in a local network, by default link-local addresses
|
||||||
# (networks) are not monitored by the ip_limit
|
# (networks) are not monitored by the ip_limit
|
||||||
filter_link_local = false
|
filter_link_local = false
|
||||||
|
|
||||||
|
|
|
@ -120,7 +120,7 @@ _TR_LOCALES: list[str] = []
|
||||||
|
|
||||||
|
|
||||||
def get_translation_locales() -> list[str]:
|
def get_translation_locales() -> list[str]:
|
||||||
"""Returns the list of transaltion locales (*underscore*). The list is
|
"""Returns the list of translation locales (*underscore*). The list is
|
||||||
generated from the translation folders in :origin:`searx/translations`"""
|
generated from the translation folders in :origin:`searx/translations`"""
|
||||||
|
|
||||||
global _TR_LOCALES # pylint:disable=global-statement
|
global _TR_LOCALES # pylint:disable=global-statement
|
||||||
|
|
|
@ -234,7 +234,7 @@ def _parse_text_and_convert(search, from_query, to_query):
|
||||||
value = target_from_si(float(value))
|
value = target_from_si(float(value))
|
||||||
|
|
||||||
if measured.group('E'):
|
if measured.group('E'):
|
||||||
# when incomming notation is scientific, outgoing notation is scientific
|
# when incoming notation is scientific, outgoing notation is scientific
|
||||||
result = babel.numbers.format_scientific(value, locale=_locale)
|
result = babel.numbers.format_scientific(value, locale=_locale)
|
||||||
else:
|
else:
|
||||||
result = babel.numbers.format_decimal(value, locale=_locale, format='#,##0.##########;-#')
|
result = babel.numbers.format_decimal(value, locale=_locale, format='#,##0.##########;-#')
|
||||||
|
|
|
@ -325,7 +325,7 @@ class ClientPref:
|
||||||
# hint: searx.webapp.get_client_settings should be moved into this class
|
# hint: searx.webapp.get_client_settings should be moved into this class
|
||||||
|
|
||||||
locale: babel.Locale
|
locale: babel.Locale
|
||||||
"""Locale prefered by the client."""
|
"""Locale preferred by the client."""
|
||||||
|
|
||||||
def __init__(self, locale: Optional[babel.Locale] = None):
|
def __init__(self, locale: Optional[babel.Locale] = None):
|
||||||
self.locale = locale
|
self.locale = locale
|
||||||
|
|
|
@ -13,8 +13,8 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
// update the css
|
// update the css
|
||||||
var hmtlElement = d.getElementsByTagName("html")[0];
|
var htmlElement = d.getElementsByTagName("html")[0];
|
||||||
hmtlElement.classList.remove('no-js');
|
htmlElement.classList.remove('no-js');
|
||||||
hmtlElement.classList.add('js');
|
htmlElement.classList.add('js');
|
||||||
|
|
||||||
})(window, document);
|
})(window, document);
|
||||||
|
|
|
@ -8,7 +8,7 @@ window.searxng = (function (w, d) {
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
// not invented here tookit with bugs fixed elsewhere
|
// not invented here toolkit with bugs fixed elsewhere
|
||||||
// purposes : be just good enough and as small as possible
|
// purposes : be just good enough and as small as possible
|
||||||
|
|
||||||
// from https://plainjs.com/javascript/events/live-binding-event-handlers-14/
|
// from https://plainjs.com/javascript/events/live-binding-event-handlers-14/
|
||||||
|
|
|
@ -441,7 +441,7 @@ searxng.ready(function () {
|
||||||
var body = document.getElementsByTagName('body')[0];
|
var body = document.getElementsByTagName('body')[0];
|
||||||
body.appendChild(helpPanel);
|
body.appendChild(helpPanel);
|
||||||
} else {
|
} else {
|
||||||
// togggle hidden
|
// toggle hidden
|
||||||
helpPanel.classList.toggle('invisible');
|
helpPanel.classList.toggle('invisible');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
} */
|
} */
|
||||||
});
|
});
|
||||||
|
|
||||||
// this event occour only once per element
|
// this event occur only once per element
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -13,8 +13,8 @@ iframe[src^="https://www.mixcloud.com"] {
|
||||||
// issue with an image URL that is blocked since it is an a Cross-Origin
|
// issue with an image URL that is blocked since it is an a Cross-Origin
|
||||||
// request. The alternative text (<img alt='Mixcloud Logo'> then cause an
|
// request. The alternative text (<img alt='Mixcloud Logo'> then cause an
|
||||||
// scrollbar in the inner of the iframe we can't avoid. Another quirk comes
|
// scrollbar in the inner of the iframe we can't avoid. Another quirk comes
|
||||||
// when pressing the play button, somtimes the shown player has an height of
|
// when pressing the play button, sometimes the shown player has an height of
|
||||||
// 200px, somtimes 250px.
|
// 200px, sometimes 250px.
|
||||||
height: 250px;
|
height: 250px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,31 +4,31 @@ see the CSS rules for #results in style.less ( grid-template-columns and gap).
|
||||||
|
|
||||||
In this file, the --center-page-width values comes from the Oscar theme (Bootstrap 3).
|
In this file, the --center-page-width values comes from the Oscar theme (Bootstrap 3).
|
||||||
|
|
||||||
All rules starts with ".center-aligment-yes #main_results" to be enabled only
|
All rules starts with ".center-alignment-yes #main_results" to be enabled only
|
||||||
on the /search URL and when the "center alignment" preference is enabled.
|
on the /search URL and when the "center alignment" preference is enabled.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@media screen and (min-width: @phone) {
|
@media screen and (min-width: @phone) {
|
||||||
.center-aligment-yes #main_results {
|
.center-alignment-yes #main_results {
|
||||||
--center-page-width: 48rem;
|
--center-page-width: 48rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (min-width: 62rem) {
|
@media screen and (min-width: 62rem) {
|
||||||
.center-aligment-yes #main_results {
|
.center-alignment-yes #main_results {
|
||||||
--center-page-width: 60rem;
|
--center-page-width: 60rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (min-width: @tablet) {
|
@media screen and (min-width: @tablet) {
|
||||||
.center-aligment-yes #main_results {
|
.center-alignment-yes #main_results {
|
||||||
--center-page-width: 73rem;
|
--center-page-width: 73rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (min-width: @phone) and (max-width: @tablet) {
|
@media screen and (min-width: @phone) and (max-width: @tablet) {
|
||||||
// any change must be reset in @media screen and (min-width: @tablet) { ... }
|
// any change must be reset in @media screen and (min-width: @tablet) { ... }
|
||||||
.center-aligment-yes #main_results {
|
.center-alignment-yes #main_results {
|
||||||
#results {
|
#results {
|
||||||
grid-template-columns: 60% calc(40% - @results-gap);
|
grid-template-columns: 60% calc(40% - @results-gap);
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
|
@ -50,7 +50,7 @@ on the /search URL and when the "center alignment" preference is enabled.
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (min-width: @tablet) {
|
@media screen and (min-width: @tablet) {
|
||||||
.center-aligment-yes #main_results {
|
.center-alignment-yes #main_results {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
|
@ -297,7 +297,7 @@ article[data-vim-selected].category-social {
|
||||||
padding-top: 0.6rem;
|
padding-top: 0.6rem;
|
||||||
.ltr-padding-right(1rem);
|
.ltr-padding-right(1rem);
|
||||||
width: 7rem;
|
width: 7rem;
|
||||||
height: unset; // remove heigth value that was needed for lazy loading
|
height: unset; // remove height value that was needed for lazy loading
|
||||||
}
|
}
|
||||||
|
|
||||||
.break {
|
.break {
|
||||||
|
@ -399,7 +399,7 @@ article[data-vim-selected].category-social {
|
||||||
padding-top: 0.6rem;
|
padding-top: 0.6rem;
|
||||||
.ltr-padding-right(1rem);
|
.ltr-padding-right(1rem);
|
||||||
width: 20rem;
|
width: 20rem;
|
||||||
height: unset; // remove heigth value that was needed for lazy loading
|
height: unset; // remove height value that was needed for lazy loading
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -639,12 +639,12 @@ summary.title {
|
||||||
padding-top: 1em;
|
padding-top: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-collapsable {
|
.sidebar-collapsible {
|
||||||
border-top: 1px solid var(--color-sidebar-border);
|
border-top: 1px solid var(--color-sidebar-border);
|
||||||
padding-bottom: 0.5em;
|
padding-bottom: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar-end-collapsable {
|
#sidebar-end-collapsible {
|
||||||
border-bottom: 1px solid var(--color-sidebar-border);
|
border-bottom: 1px solid var(--color-sidebar-border);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
@ -1007,10 +1007,10 @@ summary.title {
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (min-width: @phone) and (max-width: @tablet) {
|
@media screen and (min-width: @phone) and (max-width: @tablet) {
|
||||||
// when .center-aligment-yes, see style-center.less
|
// when .center-alignment-yes, see style-center.less
|
||||||
// the media query includes "min-width: @phone"
|
// the media query includes "min-width: @phone"
|
||||||
// because the phone layout includes the tablet layout unconditionally.
|
// because the phone layout includes the tablet layout unconditionally.
|
||||||
.center-aligment-no {
|
.center-alignment-no {
|
||||||
.results-tablet();
|
.results-tablet();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="no-js theme-{{ preferences.get_value('simple_style') or 'auto' }} center-aligment-{{ preferences.get_value('center_alignment') and 'yes' or 'no' }}" lang="{{ locale_rfc5646 }}" {% if rtl %} dir="rtl"{% endif %}>
|
<html class="no-js theme-{{ preferences.get_value('simple_style') or 'auto' }} center-alignment-{{ preferences.get_value('center_alignment') and 'yes' or 'no' }}" lang="{{ locale_rfc5646 }}" {% if rtl %} dir="rtl"{% endif %}>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="description" content="SearXNG — a privacy-respecting, open metasearch engine">
|
<meta name="description" content="SearXNG — a privacy-respecting, open metasearch engine">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<div id="apis" role="complementary" aria-labelledby="apis-title">
|
<div id="apis" role="complementary" aria-labelledby="apis-title">
|
||||||
<details class="sidebar-collapsable">
|
<details class="sidebar-collapsible">
|
||||||
<summary class="title" id="apis-title">{{ _('Download results') }}</summary>
|
<summary class="title" id="apis-title">{{ _('Download results') }}</summary>
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
{%- for output_type in search_formats -%}
|
{%- for output_type in search_formats -%}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<div id="engines_msg">
|
<div id="engines_msg">
|
||||||
{% if (not results and not answers) or not max_response_time %}
|
{% if (not results and not answers) or not max_response_time %}
|
||||||
<details class="sidebar-collapsable" open>
|
<details class="sidebar-collapsible" open>
|
||||||
<summary class="title" id="engines_msg-title">{{ _('Messages from the search engines') }}</summary>
|
<summary class="title" id="engines_msg-title">{{ _('Messages from the search engines') }}</summary>
|
||||||
{% else %}
|
{% else %}
|
||||||
<details class="sidebar-collapsable">
|
<details class="sidebar-collapsible">
|
||||||
<summary class="title" id="engines_msg-title">{{ _('Response time') }}: {{ max_response_time | round(1) }} {{ _('seconds') }}</summary>
|
<summary class="title" id="engines_msg-title">{{ _('Response time') }}: {{ max_response_time | round(1) }} {{ _('seconds') }}</summary>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<table class="engine-stats" id="engines_msg-table">
|
<table class="engine-stats" id="engines_msg-table">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<div id="search_url" role="complementary" aria-labelledby="search_url-title">
|
<div id="search_url" role="complementary" aria-labelledby="search_url-title">
|
||||||
<details class="sidebar-collapsable">
|
<details class="sidebar-collapsible">
|
||||||
<summary class="title" id="search_url-title">{{ _('Search URL') }}</summary>
|
<summary class="title" id="search_url-title">{{ _('Search URL') }}</summary>
|
||||||
<button id="copy_url" type="submit" data-copied-text="{{ _('Copied') }}">{{ _('Copy') }}</button>
|
<button id="copy_url" type="submit" data-copied-text="{{ _('Copied') }}">{{ _('Copy') }}</button>
|
||||||
<div class="selectable_url">
|
<div class="selectable_url">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<div id="suggestions" role="complementary" aria-labelledby="suggestions-title">
|
<div id="suggestions" role="complementary" aria-labelledby="suggestions-title">
|
||||||
<details class="sidebar-collapsable">
|
<details class="sidebar-collapsible">
|
||||||
<summary class="title" id="suggestions-title">{{ _('Suggestions') }}</summary>
|
<summary class="title" id="suggestions-title">{{ _('Suggestions') }}</summary>
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
{%- for suggestion in suggestions -%}
|
{%- for suggestion in suggestions -%}
|
||||||
|
|
|
@ -61,7 +61,7 @@ or manually by executing the searx/webapp.py file? -->
|
||||||
{%- endfor -%}
|
{%- endfor -%}
|
||||||
</textarea>
|
</textarea>
|
||||||
<input type="checkbox" id="step1">
|
<input type="checkbox" id="step1">
|
||||||
<label for="step1">{{ _('Start submiting a new issue on GitHub') }}</label>
|
<label for="step1">{{ _('Start submitting a new issue on GitHub') }}</label>
|
||||||
<div class="step1 step_content">
|
<div class="step1 step_content">
|
||||||
<p><a href="{{ get_setting('brand.issue_url') }}?q=is%3Aissue+Bug:%20{{ engine_name }} {{ technical_report }}" target="_blank" rel="noreferrer noreferrer">{{ _('Please check for existing bugs about this engine on GitHub') }}</a></p>
|
<p><a href="{{ get_setting('brand.issue_url') }}?q=is%3Aissue+Bug:%20{{ engine_name }} {{ technical_report }}" target="_blank" rel="noreferrer noreferrer">{{ _('Please check for existing bugs about this engine on GitHub') }}</a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
|
|
||||||
{%- if infoboxes -%}
|
{%- if infoboxes -%}
|
||||||
<div id="infoboxes">
|
<div id="infoboxes">
|
||||||
<details open class="sidebar-collapsable">
|
<details open class="sidebar-collapsible">
|
||||||
<summary class="title">{{ _('Info') }}</summary>
|
<summary class="title">{{ _('Info') }}</summary>
|
||||||
{%- for infobox in infoboxes -%}
|
{%- for infobox in infoboxes -%}
|
||||||
{%- include 'simple/elements/infobox.html' -%}
|
{%- include 'simple/elements/infobox.html' -%}
|
||||||
|
@ -67,7 +67,7 @@
|
||||||
{%- include 'simple/elements/apis.html' -%}
|
{%- include 'simple/elements/apis.html' -%}
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
|
|
||||||
<div id="sidebar-end-collapsable"></div>
|
<div id="sidebar-end-collapsible"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if corrections %}
|
{% if corrections %}
|
||||||
|
|
|
@ -677,7 +677,7 @@ msgid "proxied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/new_issue.html:64
|
#: searx/templates/simple/new_issue.html:64
|
||||||
msgid "Start submiting a new issue on GitHub"
|
msgid "Start submitting a new issue on GitHub"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: searx/templates/simple/new_issue.html:66
|
#: searx/templates/simple/new_issue.html:66
|
||||||
|
|
|
@ -48,7 +48,7 @@ _XPATH_CACHE: Dict[str, XPath] = {}
|
||||||
_LANG_TO_LC_CACHE: Dict[str, Dict[str, str]] = {}
|
_LANG_TO_LC_CACHE: Dict[str, Dict[str, str]] = {}
|
||||||
|
|
||||||
_FASTTEXT_MODEL: Optional["fasttext.FastText._FastText"] = None # type: ignore
|
_FASTTEXT_MODEL: Optional["fasttext.FastText._FastText"] = None # type: ignore
|
||||||
"""fasttext model to predict laguage of a search term"""
|
"""fasttext model to predict language of a search term"""
|
||||||
|
|
||||||
SEARCH_LANGUAGE_CODES = frozenset([searxng_locale[0].split('-')[0] for searxng_locale in sxng_locales])
|
SEARCH_LANGUAGE_CODES = frozenset([searxng_locale[0].split('-')[0] for searxng_locale in sxng_locales])
|
||||||
"""Languages supported by most searxng engines (:py:obj:`searx.sxng_locales.sxng_locales`)."""
|
"""Languages supported by most searxng engines (:py:obj:`searx.sxng_locales.sxng_locales`)."""
|
||||||
|
|
|
@ -225,7 +225,7 @@ def get_search_query_from_webapp(
|
||||||
"""Assemble data from preferences and request.form (from the HTML form) needed
|
"""Assemble data from preferences and request.form (from the HTML form) needed
|
||||||
in a search query.
|
in a search query.
|
||||||
|
|
||||||
The returned tuple consits of:
|
The returned tuple consists of:
|
||||||
|
|
||||||
1. instance of :py:obj:`searx.search.SearchQuery`
|
1. instance of :py:obj:`searx.search.SearchQuery`
|
||||||
2. instance of :py:obj:`searx.query.RawTextQuery`
|
2. instance of :py:obj:`searx.query.RawTextQuery`
|
||||||
|
|
|
@ -72,7 +72,7 @@ def _instance_infosetset_ctx(base_url):
|
||||||
# from searx.network import network
|
# from searx.network import network
|
||||||
# network.done()
|
# network.done()
|
||||||
|
|
||||||
# waiting some seconds before ending the comand line was the only solution I
|
# waiting some seconds before ending the command line was the only solution I
|
||||||
# found ..
|
# found ..
|
||||||
|
|
||||||
time.sleep(3)
|
time.sleep(3)
|
||||||
|
|
|
@ -85,7 +85,7 @@ def main():
|
||||||
|
|
||||||
|
|
||||||
def fetch_traits_map():
|
def fetch_traits_map():
|
||||||
"""Fetchs supported languages for each engine and writes json file with those."""
|
"""Fetches supported languages for each engine and writes json file with those."""
|
||||||
network.set_timeout_for_thread(10.0)
|
network.set_timeout_for_thread(10.0)
|
||||||
|
|
||||||
def log(msg):
|
def log(msg):
|
||||||
|
|
|
@ -25,7 +25,7 @@ from searx.locales import (
|
||||||
)
|
)
|
||||||
|
|
||||||
LOCALE_DATA_FILE = Path(searx_dir) / 'data' / 'locales.json'
|
LOCALE_DATA_FILE = Path(searx_dir) / 'data' / 'locales.json'
|
||||||
TRANSLATOINS_FOLDER = Path(searx_dir) / 'translations'
|
TRANSLATIONS_FOLDER = Path(searx_dir) / 'translations'
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
|
@ -65,7 +65,7 @@ def main():
|
||||||
test_layer.setUp()
|
test_layer.setUp()
|
||||||
run_robot_tests([getattr(test_webapp, x) for x in dir(test_webapp) if x.startswith('test_')])
|
run_robot_tests([getattr(test_webapp, x) for x in dir(test_webapp) if x.startswith('test_')])
|
||||||
except Exception: # pylint: disable=broad-except
|
except Exception: # pylint: disable=broad-except
|
||||||
print('Error occured: {0}'.format(traceback.format_exc()))
|
print('Error occurred: {0}'.format(traceback.format_exc()))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
finally:
|
finally:
|
||||||
test_layer.tearDown()
|
test_layer.tearDown()
|
||||||
|
|
10
utils/lib.sh
10
utils/lib.sh
|
@ -772,7 +772,7 @@ docs.clean() {
|
||||||
|
|
||||||
docs.prebuild() {
|
docs.prebuild() {
|
||||||
# Dummy function to run some actions before sphinx-doc build gets started.
|
# Dummy function to run some actions before sphinx-doc build gets started.
|
||||||
# This finction needs to be overwritten by the application script.
|
# This function needs to be overwritten by the application script.
|
||||||
true
|
true
|
||||||
dump_return $?
|
dump_return $?
|
||||||
}
|
}
|
||||||
|
@ -1065,7 +1065,7 @@ nginx_remove_app() {
|
||||||
# usage: nginx_remove_app <myapp.conf>
|
# usage: nginx_remove_app <myapp.conf>
|
||||||
|
|
||||||
info_msg "remove nginx app: $1"
|
info_msg "remove nginx app: $1"
|
||||||
nginx_dissable_app "$1"
|
nginx_disable_app "$1"
|
||||||
rm -f "${NGINX_APPS_AVAILABLE}/$1"
|
rm -f "${NGINX_APPS_AVAILABLE}/$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1082,7 +1082,7 @@ nginx_enable_app() {
|
||||||
nginx_reload
|
nginx_reload
|
||||||
}
|
}
|
||||||
|
|
||||||
nginx_dissable_app() {
|
nginx_disable_app() {
|
||||||
|
|
||||||
# usage: nginx_disable_app <myapp.conf>
|
# usage: nginx_disable_app <myapp.conf>
|
||||||
|
|
||||||
|
@ -1192,7 +1192,7 @@ apache_remove_site() {
|
||||||
# usage: apache_remove_site <mysite.conf>
|
# usage: apache_remove_site <mysite.conf>
|
||||||
|
|
||||||
info_msg "remove apache site: $1"
|
info_msg "remove apache site: $1"
|
||||||
apache_dissable_site "$1"
|
apache_disable_site "$1"
|
||||||
rm -f "${APACHE_SITES_AVAILABLE}/$1"
|
rm -f "${APACHE_SITES_AVAILABLE}/$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1222,7 +1222,7 @@ apache_enable_site() {
|
||||||
apache_reload
|
apache_reload
|
||||||
}
|
}
|
||||||
|
|
||||||
apache_dissable_site() {
|
apache_disable_site() {
|
||||||
|
|
||||||
# usage: apache_disable_site <mysite.conf>
|
# usage: apache_disable_site <mysite.conf>
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ EOF
|
||||||
|
|
||||||
go.ver_info(){
|
go.ver_info(){
|
||||||
|
|
||||||
# print informations about a golang distribution. To print filename
|
# print information about a golang distribution. To print filename
|
||||||
# sha256 and size of the archive that fits to your OS and host:
|
# sha256 and size of the archive that fits to your OS and host:
|
||||||
#
|
#
|
||||||
# go.ver_info "${GO_VERSION}" archive "$(go.os)" "$(go.arch)" filename sha256 size
|
# go.ver_info "${GO_VERSION}" archive "$(go.os)" "$(go.arch)" filename sha256 size
|
||||||
|
|
|
@ -36,7 +36,7 @@ nvm.is_installed() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ -z "${NVM_DIR}" ]]; then
|
if [[ -z "${NVM_DIR}" ]]; then
|
||||||
# nvm is not pre-intalled in $HOME. Prepare for using nvm from <repo-root>
|
# nvm is not pre-installed in $HOME. Prepare for using nvm from <repo-root>
|
||||||
NVM_DIR="$(git rev-parse --show-toplevel)/${NVM_LOCAL_FOLDER}"
|
NVM_DIR="$(git rev-parse --show-toplevel)/${NVM_LOCAL_FOLDER}"
|
||||||
fi
|
fi
|
||||||
export NVM_DIR
|
export NVM_DIR
|
||||||
|
@ -93,7 +93,7 @@ nvm.help() {
|
||||||
nvm.: use nvm (without dot) to execute nvm commands directly
|
nvm.: use nvm (without dot) to execute nvm commands directly
|
||||||
install : install NVM locally at $(git rev-parse --show-toplevel)/${NVM_LOCAL_FOLDER}
|
install : install NVM locally at $(git rev-parse --show-toplevel)/${NVM_LOCAL_FOLDER}
|
||||||
clean : remove NVM installation
|
clean : remove NVM installation
|
||||||
status : prompt some status informations about nvm & node
|
status : prompt some status information about nvm & node
|
||||||
nodejs : install Node.js latest LTS
|
nodejs : install Node.js latest LTS
|
||||||
cmd ... : run command ... in NVM environment
|
cmd ... : run command ... in NVM environment
|
||||||
bash : start bash interpreter with NVM environment sourced
|
bash : start bash interpreter with NVM environment sourced
|
||||||
|
@ -108,7 +108,7 @@ nvm.install() {
|
||||||
pushd "${NVM_DIR}" &> /dev/null
|
pushd "${NVM_DIR}" &> /dev/null
|
||||||
git fetch --all | prefix_stdout " ${_Yellow}||${_creset} "
|
git fetch --all | prefix_stdout " ${_Yellow}||${_creset} "
|
||||||
else
|
else
|
||||||
# delete any leftovers from previos installations
|
# delete any leftovers from previous installations
|
||||||
if nvm.is_local; then
|
if nvm.is_local; then
|
||||||
rm -rf "${NVM_DIR}"
|
rm -rf "${NVM_DIR}"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -96,7 +96,7 @@ static.build.commit() {
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# drop existing commit from previos build
|
# drop existing commit from previous build
|
||||||
static.build.drop &>/dev/null
|
static.build.drop &>/dev/null
|
||||||
|
|
||||||
( set -e
|
( set -e
|
||||||
|
|
10
utils/lxc.sh
10
utils/lxc.sh
|
@ -159,7 +159,7 @@ main() {
|
||||||
;;
|
;;
|
||||||
copy)
|
copy)
|
||||||
case $2 in
|
case $2 in
|
||||||
''|images) lxc_copy_images_localy;;
|
''|images) lxc_copy_images_locally;;
|
||||||
*) usage "$_usage"; exit 42;;
|
*) usage "$_usage"; exit 42;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
@ -167,7 +167,7 @@ main() {
|
||||||
sudo_or_exit
|
sudo_or_exit
|
||||||
case $2 in
|
case $2 in
|
||||||
''|--|containers) remove_containers ;;
|
''|--|containers) remove_containers ;;
|
||||||
images) lxc_delete_images_localy ;;
|
images) lxc_delete_images_locally ;;
|
||||||
${LXC_HOST_PREFIX}-*)
|
${LXC_HOST_PREFIX}-*)
|
||||||
! lxc_exists "$2" && warn_msg "container not yet exists: $2" && exit 0
|
! lxc_exists "$2" && warn_msg "container not yet exists: $2" && exit 0
|
||||||
if ask_yn "Do you really want to delete container $2"; then
|
if ask_yn "Do you really want to delete container $2"; then
|
||||||
|
@ -291,7 +291,7 @@ build_all_containers() {
|
||||||
rst_title "Build all LXC containers of suite"
|
rst_title "Build all LXC containers of suite"
|
||||||
echo
|
echo
|
||||||
usage_containers
|
usage_containers
|
||||||
lxc_copy_images_localy
|
lxc_copy_images_locally
|
||||||
lxc_init_all_containers
|
lxc_init_all_containers
|
||||||
lxc_config_all_containers
|
lxc_config_all_containers
|
||||||
lxc_boilerplate_all_containers
|
lxc_boilerplate_all_containers
|
||||||
|
@ -361,7 +361,7 @@ remove_containers() {
|
||||||
# images
|
# images
|
||||||
# ------
|
# ------
|
||||||
|
|
||||||
lxc_copy_images_localy() {
|
lxc_copy_images_locally() {
|
||||||
rst_title "copy images" section
|
rst_title "copy images" section
|
||||||
for ((i=0; i<${#LXC_SUITE[@]}; i+=2)); do
|
for ((i=0; i<${#LXC_SUITE[@]}; i+=2)); do
|
||||||
lxc_image_copy "${LXC_SUITE[i]}" "${LXC_SUITE[i+1]}"
|
lxc_image_copy "${LXC_SUITE[i]}" "${LXC_SUITE[i+1]}"
|
||||||
|
@ -369,7 +369,7 @@ lxc_copy_images_localy() {
|
||||||
# lxc image list local: && wait_key
|
# lxc image list local: && wait_key
|
||||||
}
|
}
|
||||||
|
|
||||||
lxc_delete_images_localy() {
|
lxc_delete_images_locally() {
|
||||||
rst_title "Delete LXC images"
|
rst_title "Delete LXC images"
|
||||||
rst_para "local existing images"
|
rst_para "local existing images"
|
||||||
echo
|
echo
|
||||||
|
|
|
@ -33,7 +33,7 @@ ui:
|
||||||
|
|
||||||
enabled_plugins:
|
enabled_plugins:
|
||||||
- 'Hash plugin'
|
- 'Hash plugin'
|
||||||
- 'Self Informations'
|
- 'Self Information'
|
||||||
- 'Tracker URL remover'
|
- 'Tracker URL remover'
|
||||||
- 'Ahmia blacklist'
|
- 'Ahmia blacklist'
|
||||||
# - 'Hostnames plugin' # see 'hostnames' configuration below
|
# - 'Hostnames plugin' # see 'hostnames' configuration below
|
||||||
|
|
Loading…
Reference in New Issue