summaryrefslogtreecommitdiff
path: root/searxng_extra
AgeCommit message (Collapse)Author
2026-07-05[chore] Google (HTML) engine: remove obsolete GSA User-Agents (#6366)Markus Heiser
The GSA headers that were introduced in PR #5644 unfortunately no longer work (#6359). The Google engines - google.py - google_videos.py do not work anymore either, but we'll leave it in the code for now: - In google.py, central functions like get_google_info(..) are provided, which are also used by other modules. - We will probably need a Google HTML (and video) engine again very soon. Related: - https://github.com/searxng/searxng/issues/6359 - https://github.com/searxng/searxng/pull/6364 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-07-05[feat] engines: add google cse engine (#6364)vojkovic
Adds a new google cse engine as an alternative to the currently broken html google engine. It works by generating a token which is cached for 1 hour and it only uses the public CSE id from blackle.com. We do have two others but I think just hardcoding one will be enough. Will be broken in 2027 due to google deprecating it but I it will be good while it lasts. I found I can get up to 20 results per page. Setting safesearch and language works and I just copied the traits from the google engine. Also set old google engine as inactive as it is completely broken for now.
2026-06-24[mod] update_engine_descriptions.py - revision of the script (#6309)Markus Heiser
* [mod] update_engine_descriptions.py - revision of the script (#6309) The script was a bit outdated, type hints were missing, and the strings were converted to double quotation marks The `descriptions.items()` are sorted to avoid assigning the references to seen_descriptions randomly (should reduce unnecessary diffs in the future). Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> * [data] update searx.data - update_engine_descriptions.py (#6309) Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> --------- Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-05-15[feat] yep: add support for selecting search language (#6075)Bnyro
2026-05-13[mod] update_engine_traits.py: improve type annotationsMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-05-13[feat] update_engine_traits.py: add option to update engines selectiveMarkus Heiser
Previously, `update_engine_traits.py` would fetch traits for all engines, which is very slow and by side-effect touches engine data that are unrelated to the engine you're currently working on. To be faster with developing `update_engine_traits.py` supports now engine arguments. To test, jump into the developer environment and run the script:: $ ./manage dev.env (dev.env)$ ./searxng_extra/update/update_engine_traits.py --help Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-04-10[fix] google: switch to using "Google Go App" (NSTNWV) useragentEsen
2026-03-23[fix] google: switch to using "Google App" for Android useragent (#5892)mg95
I found a bypass using the Android Google App this time. However, unlike the iPhone GSA method, this one does have rate limits. Although it took a couple of hundred consecutive requests to trigger them.
2026-03-06[mod] drop fasttext-predict (#5795)Brock Vojkovic
Removes the `fasttext-predict` dependency and the language detection code. If a user now selects `auto` for the search language, the detected language now falls back directly to the `Accept-Language` header sent by the browser (which was already the fallback when fasttext returned no result). - fasttext's [language detection is unreliable](https://github.com/searxng/searxng/issues/4195) for some languages, especially short search queries, and in particular for queries containing proper names which is a common case. - `fasttext-predict` consumes [significant memory](https://github.com/searxng/searxng/pull/1969#issuecomment-1345366676) without offering users much real value. - the upstream fasttext project was archived by Meta in 2024 - users already have two better alternatives: the `Accept-Language` header and the search-syntax language prefix (e.g. `:fr` or `:de`). Related: https://github.com/searxng/searxng/issues/4195 Closes: https://github.com/searxng/searxng/issues/5790
2026-03-01[enh] data: uas to a set (#5789)Ivan Gabaldon
* [enh] data: uas to a set * [data] update searx.data - update_gsa_useragents.py Closes: https://github.com/searxng/searxng/pull/5786
2026-01-11[fix] google: switch to using GSA for iPhone useragentmg95
2025-11-05[fix] engine ahmia blacklist, arch linux: use proper searxng user agent ↵Bnyro
including version (#5414)
2025-10-30[fix] update_ahmia_blacklist.py - `User-Agent` become requiredMarkus Heiser
The User-Agent header recently become required to fetch blacklist from URL https://ahmia.fi/blacklist/ [1] https://github.com/searxng/searxng/actions/runs/18892940199/job/53924400294 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-01[mod] drop searxng_extra/standalone_searx.py (#5256)Markus Heiser
This is an old and grumpy hack / SearXNG is a Flask application with client/server structure, which can't be turned into a command line tool the way it was done here. Maintaining this hack is becoming increasingly complex the more we try to remodel the core code, which is why we should now remove the hack from SearXNG. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-30[fix] fetch traits, even for inactive instancesMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-26[upd] pypi: Bump black from 24.3.0 to 25.9.0 (#5251)Markus Heiser
In 25.1.0 [2] an old bug has been fixed: "Docstring formatting does not apply to module docstrings" [3]. [1] https://github.com/psf/black/blob/main/CHANGES.md#2590 [2] https://github.com/psf/black/blob/main/CHANGES.md#2510 [3] https://github.com/psf/black/issues/4094 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-18[mod] addition of various type hints / engine processorsMarkus Heiser
Continuation of #5147 .. typification of the engine processors. BTW: - removed obsolete engine property https_support - fixed & improved currency_convert - engine instances can now implement a engine.setup method [#5147] https://github.com/searxng/searxng/pull/5147 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-03[mod] drop: from __future__ import annotationsMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-03[mod] addition of various type hints / tbcMarkus Heiser
- pyright configuration [1]_ - stub files: types-lxml [2]_ - addition of various type hints - enable use of new type system features on older Python versions [3]_ - ``.tool-versions`` - set python to lowest version we support (3.10.18) [4]_: Older versions typically lack some typing features found in newer Python versions. Therefore, for local type checking (before commit), it is necessary to use the older Python interpreter. .. [1] https://docs.basedpyright.com/v1.20.0/configuration/config-files/ .. [2] https://pypi.org/project/types-lxml/ .. [3] https://typing-extensions.readthedocs.io/en/latest/# .. [4] https://mise.jdx.dev/configuration.html#tool-versions Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> Format: reST
2025-09-01[mod] simple client: pygments.less - switched dark theme to monokaiMarkus Heiser
Compared to ``lightbulb`` theme we used in the past for the dark theme, the ``monokai`` has a better contrast [1]. BTW, the result list of SearXNG should not act as a code-checker: The border & color of class ``.err`` (used for syntax errors) has been removed / code snippets are often not well formed nor valid code and the rendering of such code fragments as errors obscures the view on the code snippet. [1] https://pygments.org/styles/ Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-08-18[license] client/simple: SPDX-License-Identifier: AGPL-3.0-or-laterMarkus Heiser
SPDX short-form identifiers to communicate license information in a simple, efficient, portable and machine-readable manner [1] [1] https://spdx.dev/learn/handling-license-info/
2025-07-26[fix] cleanup: rename `searx` leftovers to `SearXNG` (#5049)Markus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-22[fix] tracker url remover + external bangs: use standard network configBnyro
Using plain `httpx` directly doesn't use SearXNG's additional network config, including proxies, http2 config, ... Related issues: - https://github.com/searxng/searxng/issues/5027
2025-06-23[mod] data: implement a simple tracker URL (SQL) databaseMarkus Heiser
On demand, the tracker data is loaded directly into the cache, so that the maintenance of this data via PRs is no longer necessary. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-06-23[feat] tracker url plugin: use ClearURL tracking param listBnyro
2025-05-31[mod] implement searx.wikidata_units for unit convertersMarkus Heiser
2025-05-25[mod] data: implement a simple currencies (SQL) database (#4836)Markus Heiser
To reduce the memory footprint, this patch no longer loads the JSON data completely into memory. Instead, there is an SQL database based on `ExpireCacheSQLite`. The class CurrenciesDB is a simple DB application that encapsulates the DB (queries and initialization) and provides convenient methods like `name_to_iso4217` and `iso4217_to_name`. Related: - https://github.com/searxng/searxng/discussions/1892 - https://github.com/searxng/searxng/pull/3458#issuecomment-2900807671 - https://github.com/searxng/searxng/pull/4650 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-22[fix] make data.traits - partial revert of commit 30a8204Markus Heiser
The entries in the catalog of search languages are build up from the "Engine Traits" [1] and which entries are included in the catalog is controlled qby two threshold values [2]. If possible, the values should ensure that no languages or regions disappear from the catalog of search languages [3]. The threshold values should have been adjusted in commit 30a8204: - ``min_eng_per_region = 18`` - ``min_eng_per_lang = 22`` Because the threshold values were not adjusted, many entries were missing in the search language catalog. This bug has been fixed with this patch: the threshold values have been adjusted and the catalog of search languages has been completed again. [1] https://docs.searxng.org/dev/engines/enginelib.html#module-searx.enginelib.traits [2] https://github.com/searxng/searxng/blob/96a6e3dcb2283fa7ad9db4172a00582073a166d7/searxng_extra/update/update_engine_traits.py#L104-L105 [3] https://github.com/searxng/searxng/blob/master/searx/sxng_locales.py Closes: https://github.com/searxng/searxng/issues/4519 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-01[fix] wikidata: increase wikidata queries timeoutMarkus Heiser
The big queries for initializing and updating the currencies take longer than the default of the wikidata engine, which is only 3sec. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-01[fix] bing fetch engine traits - adjusted XPath selectorsMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28[web-client] simple theme: build & development env based on vite.Markus Heiser
Vite is a build tool, it consists of two major parts [1]: - A dev server that provides rich feature enhancements over native ES modules, for example extremely fast Hot Module Replacement (HMR). - A build command that bundles your code with Rollup, pre-configured to output highly optimized static assets for production. [1] https://vite.dev/guide/ Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-29[fix] update_currencies.py: github CI has longer timeoutsMarkus Heiser
Github action Update data - update_currencies [1]: ./manage pyenv.cmd python ./searxng_extra/update/update_currencies.py fails with ``httpcore.ReadTimeout`` / the default timeout is 3sec. [1] https://github.com/searxng/searxng/actions/runs/12076864366/job/33703464399 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-24[chore] *: fix typos detected by typos-cliBnyro
2024-10-15[enh] engine: mojeek - add language support0xhtml
Improve region and language detection / all locale Testing has shown the following behaviour for the different default and empty values of Mojeeks parameters: | param | idx | value | behaviour | | -------- | --- | ------ | ------------------------- | | region | 0 | '' | detect region based on IP | | region | 1 | 'none' | all regions | | language | 0 | '' | all languages |
2024-05-01[fix] update wikidata units - remove URL prefix from Q-nameMarkus Heiser
Sometimes the URL prefix switches from a http to a https, this patch harden the code that removes the URL prefix from wikidata Q-name, issue has been reported in [1]. [1] https://github.com/searxng/searxng/pull/3437#issuecomment-2082121730 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-27[feat] plugins: new unit converter pluginBnyro
2024-03-11[mod] pylint all files with one profile / drop PYLINT_SEARXNG_DISABLE_OPTIONMarkus Heiser
In the past, some files were tested with the standard profile, others with a profile in which most of the messages were switched off ... some files were not checked at all. - ``PYLINT_SEARXNG_DISABLE_OPTION`` has been abolished - the distinction ``# lint: pylint`` is no longer necessary - the pylint tasks have been reduced from three to two 1. ./searx/engines -> lint engines with additional builtins 2. ./searx ./searxng_extra ./tests -> lint all other python files Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-10[mod] comprehensive revision of the searxng_extra/update/ scriptsMarkus Heiser
- pylint all scripts - fix some errors reported by pyright - from searx.data import data_dir (Path.open) - fix import from pygments.formatters.html NOTE: none functional changes! Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-10[fix] update_external_bangs: BANGS_URL 'https://duckduckgo.com/bang.js'Markus Heiser
JSON file which contains the bangs / there is no longer a versioning of this file. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-09[fix] issues reported by pylint 3.1.0Markus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-20[fix] sort RTL_LOCALES before written into locales.jsonMarkus Heiser
To avoid unnecessary changes to the file, the list should be sorted before it is written to the file. You can test it by calling multiple times:: make data.locales and searx/data/locales.json should be unchanged. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-20[mod] reduce memory footprint by not calling babel.Locale.parse at runtimeAlexandre Flament
babel.Locale.parse loads more than 60MB in RAM. The only purpose is to get: LOCALE_NAMES - searx.data.LOCALES["LOCALE_NAMES"] RTL_LOCALES - searx.data.LOCALES["RTL_LOCALES"] This commit calls babel.Locale.parse when the translations are update from weblate and stored in:: searx/data/locales.json This file can be build by:: ./manage data.locales By store these variables in searx.data when the translations are updated we save round about 65MB (usually 4 worker = 260MB of RAM saved. Suggested-by: https://github.com/searxng/searxng/discussions/2633#discussioncomment-8490494 Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-01-29Update searx.data - update_engine_traits.pydalf
2023-12-23Revert "[fix] update user agent"Markus Heiser
This reverts commit 3c6549a17f886b90a8e700810f9e1aea86581966. Related: - https://github.com/searxng/searxng/pull/2826
2023-09-25[fix] update user agentjazzzooo
2023-09-18[fix] spellingjazzzooo
2023-09-11[feature] dark theme for code highlighter in the result listMarkus Heiser
Closes: https://github.com/searxng/searxng/issues/1354 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-09[fix] make flask_babel.gettext() work in engine modules (L10n & threads)Markus Heiser
incident: flask_babel.gettext() does not work in the engine modules. cause: the request() and response() functions of the engine modules run in the processor, whose search() method runs in a thread and in the threads the context of the Flask app does not exist. The context of the Flask app is needed by the gettext() function for the L10n. Solution: copy context of the Flask app into the threads. [1] special case: We cannot equip the search() method of the processors with the decorator [1], because the decorator requires a context (Flask app) that does not yet exist at the time of the initialization of the processors (the initialization of the processors is part of the initialization of the Flask app). [1] https://flask.palletsprojects.com/en/2.3.x/api/#flask.copy_current_request_context Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-28[fix] update_currencies.py - AttributeError: 'str' object has no attribute ↵Markus Heiser
'insert' Replace lists with one item by the item, not before last currency has been added. In this traceback 'MXN' is added to 'pesos' while pesos is no longer a list as the optimization was carried out too early. $ ./local/py3/bin/python searxng_extra/update/update_currencies.py Traceback (most recent call last): File "searxng_extra/update/update_currencies.py", line 164, in <module> main() File "searxng_extra/update/update_currencies.py", line 157, in main add_currency_name(db, "pesos", 'MXN') File "searxng_extra/update/update_currencies.py", line 89, in add_currency_name iso4217_set.insert(0, iso4217) AttributeError: 'str' object has no attribute 'insert' Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-19[mod] move some code from webapp module to webutils module (no functional ↵Markus Heiser
change) Over the years the webapp module became more and more a mess. To improve the modulaization a little this patch moves some implementations from the webapp module to webutils module. HINT: this patch brings non functional change Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>