summaryrefslogtreecommitdiff
path: root/searx/engines
AgeCommit message (Collapse)Author
2025-10-01[fix] JSON format: serialization of the result-typesMarkus Heiser
The ``JSONEncoder`` (``format="json"``) must perform a conversion to the built-in types for the ``msgspec.Struct``:: if isinstance(o, msgspec.Struct): return msgspec.to_builtins(o) The result types are already of type ``msgspec.Struct``, so they can be converted into built-in types. The field types (in the result type) that were not yet of type ``msgspec.Struct`` have been converted to:: searx.weather.GeoLocation@dataclass -> msgspec.Struct searx.weather.DateTime -> msgspec.Struct searx.weather.Temperature -> msgspec.Struct searx.weather.PressureUnits -> msgspec.Struct searx.weather.WindSpeed -> msgspec.Struct searx.weather.RelativeHumidity -> msgspec.Struct searx.weather.Compass -> msgspec.Struct BTW: Wherever it seemed sensible, the typing was also modernized in the modified files. Closes: https://github.com/searxng/searxng/issues/5250 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-28[fix] openstreetmap: fix CURRENCIES.iso4217_to_nameMarkus Heiser
This patch is a leftover from PR-5204 [1]. [1] https://github.com/searxng/searxng/pull/5204 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-20[mod] demo engines: smaller improvementMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-20[mod] ADS engine: revision of the engine (Paper result)Markus Heiser
Revision of the Astrophysics Data System (ADS) engine / use of the result type Paper as well as other typifications. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-20[mod] Z-Library engine: revision of the engine (Paper result)Markus Heiser
Revision of the engine / use of the result type Paper as well as other typifications. The engine has been placed on inactive because no service is currently available, or at least not known in the SearXNG community [1] [1] https://github.com/searxng/searxng/issues/3610 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-20[mod] Springer Nature engine: revision of the engine (Paper result)Markus Heiser
Revision of the engine / use of the result type Paper as well as other typifications. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-20[mod] Semantic Scholar engine: revision of the engine (Paper result)Markus Heiser
Revision of the engine / use of the result type Paper as well as other typifications. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-20[mod] PubMed engine: revision of the engine (Paper result)Markus Heiser
Revision of the engine / use of the result type Paper as well as other typifications. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-20[mod] Open Library engine: revision of the engine (Paper result)Markus Heiser
Revision of the engine / use of the result type Paper as well as other typifications. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-20[mod] OpenAlex engine: revision of the engine (Paper result)Markus Heiser
Revision of the engine / use of the result type Paper as well as other typifications. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-20[mod] Google Scholar engine: revision of the engine (Paper result)Markus Heiser
Revision of the engine / use of the result type Paper as well as other typifications. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-20[mod] Crossref engine: revision of the engine (Paper result)Markus Heiser
Revision of the engine / use of the result type Paper as well as other typifications. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-20[mod] CORE engine: revision of the engine (Paper result)Markus Heiser
Revision of the engine / use of the result type Paper as well as other typifications. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-20[mod] Anna's Archive engine: revision of the engine (Paper result)Markus Heiser
Revision of the engine / use of the result type Paper as well as other typifications. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-20[mod] arXiv engine: revision of the engine (Paper result)Markus Heiser
Revision of the engine / use of the result type Paper as well as other typifications. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-18[mod] demo engines: smaller corrections and improvementsMarkus Heiser
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-10[feat] engines yacy & piped: enable individual configuration of URLs (#5195)Markus Heiser
With this change it is possible with individual engines (yacy & piped) to configure individual URLs. Related: - https://github.com/searxng/searxng/issues/4869#issuecomment-327335928 - https://github.com/searxng/searxng/pull/3472/files#r1595586019 - https://github.com/searxng/searxng/issues/3428#issuecomment-2102142530 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-09[feat] naver engine: add video embedsAustin-Olacsi
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-03[fix} engine chinaso - parse_images `ImageInfo` key error (#5175)Butui Hu
Signed-off-by: Butui Hu <hot123tea123@gmail.com>
2025-09-01[feat] engines: add repology.org engine for linux packages (#5103)Bnyro
Repology_ monitors a huge number of package repositories and other sources comparing packages versions across them and gathering other information. Repology_ shows you in which repositories a given project is packaged, which version is the latest and which needs updating, who maintains the package, and other related information. .. _Repology: https://repology.org/docs/about Co-authored-by: Markus Heiser <markus.heiser@darmarit.de> Format: reST
2025-09-01[fix] chinaoso: add random `uid` to cookie (#5173)Butui Hu
Signed-off-by: Butui Hu <hot123tea123@gmail.com>
2025-09-01[mod] typification of SearXNG: add new result type CodeMarkus Heiser
This patch adds a new result type: Code - Python class: searx/result_types/code.py - Jinja template: searx/templates/simple/result_templates/code.html - CSS (less) client/simple/src/less/result_types/code.less Signed-of-by: Markus Heiser <markus.heiser@darmarIT.de>
2025-08-28[fix] annas archive: engine broken due to site HTML changesBnyro
Apparently the layout of https://annas-archive.org has changed, making changes necessary. The issue has been reported in #5146, see there for more details. - closes #5146
2025-08-24[feat] engines: add OpenAlex Works engine (#5102)muthukumaran R
- Adds a new engine `searx/engines/openalex.py` that integrates the OpenAlex Works API to return scientific paper results using the `paper.html` template. - Uses the official API (no auth required); supports OpenAlex polite pool via `mailto`. - Adds developer docs at `docs/dev/engines/online/openalex.rst`. OpenAlex API reference: https://docs.openalex.org/how-to-use-the-api/api-overview
2025-08-20[fix] selfhst icons: icon list url invalid, set to activeBnyro
- the previous CDN icon list url no longer works - a list of all icons is mirrored to the JSDelivr CDN however - there's no reason to set the engine to inactive now that we use public CDNs
2025-08-20[feat] engines: add GitHub Code Search engine (#5074)Filip Mikina
This patch adds GitHub Code Search [1] engine to allow querying the codebases. Template code.html is changed to allow passthrough of strip and highlighting options. Engine Searchcode is adjusted to pass filename and not rely on hardcoded extensions. GitHub search code API does not return the exact code line indices, this implementation assigns the code arbitrary numbers starting from 1 (effectively relabeling the code). The API allows for unauth calls, and the default engine settings default to that, although the calls are heavily rate limited. The 'text' lexer is the default pygments lexer when parsing fails. [1] https://docs.github.com/en/rest/search/search?apiVersion=2022-11-28#search-code Co-authored-by: Markus Heiser <markus.heiser@darmarIT.de>
2025-08-19[mod] switching from pyright to basedpyright (plus first rules)Markus Heiser
pyrightconfig.json : for the paths searx, searxng_extra and tests, individual rules were defined (for example, in test fewer / different rules are needed than in the searx package searx/engines/__builtins__.pyi : The builtin types that are added to the global namespace of a module by the intended monkey patching of the engine modules / replaces the previous filtering of the stdout using grep. test.pyright_modified (utils/lib_sxng_test.sh) : static type check of local modified files not yet commited make test : prerequisite 'test.pyright' has been replaced by 'test.pyright_modified' searx/engines/__init__.py, searx/enginelib/__init__.py : First, minimal typifications that were considered necessary.
2025-08-16[fix] reuters: published date not parsed correctly in some casesIshbir Singh
FIxes publishedDate format in reuters engine to encompass ISO 8601 times both with and without milliseconds. Why is this change important? Previously, the engine would sometimes fail saying: 2025-08-12 21:13:23,091 ERROR:searx.engines.reuters: exception : time data '2024-04-15T19:08:30.833Z' does not match format '%Y-%m-%dT%H:%M:%SZ' Traceback (most recent call last): ... File "/usr/local/searxng/searx/engines/reuters.py", line 87, in response publishedDate=datetime.strptime(result["display_time"], "%Y-%m-%dT%H:%M:%SZ"), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ... Note that most queries seem to work with Reuters, but there are some results that have the additional milliseconds and fail. Regardless, the change is backwards compatible as both the formats (with and without the ms) should now parse correctly.
2025-08-12[fix] baidu captcha detection (#5111)Zhijie He
Add Baidu Captcha detection to reduce `JSONDecodeError` error Baidu will redirect to `wappass.baidu.com` and return a captcha challenge. Current behavior will get the data from `wappass.baidu.com` then return a `json.decoder.JSONDecodeError` error.
2025-08-09[fix] duckduckgo weather: add type hints and fix WEATHERKIT_TO_CONDITION (#5101)Markus Heiser
2025-08-09[feat] engines: add Marginalia (#5087)Austin-Olacsi
To get an API key follow instructions at [1]. [1] https://about.marginalia-search.com/article/api/ Related (historical ordered): - https://github.com/searxng/searxng/issues/1620 - https://github.com/searxng/searxng/issues/1673 - https://github.com/searxng/searxng/pull/1627 - https://github.com/searxng/searxng/pull/2489 Closes: - https://github.com/searxng/searxng/issues/3034 Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2025-08-08[fix] tagesschau: crash if there's no video stream availableBnyro
Sometimes, there's only an `adaptivestreaming` field in `streams`, which is usually an m3u8 file. That's however not supported by the video player of any browser, so we can't use and must build a different url instead.
2025-08-06[feat] duckduckgo weather: migrate to new weather engine templateBnyro
- not 100% sure about the condition code mapping, there are no real matches for most of the codes from Apple WeatherKit to the weather codes we have in SearXNG - related: https://github.com/searxng/searxng/issues/4885
2025-08-03[fix] engine yummly: website were taken offline in December 2024 (#5080)Markus Heiser
The app and website were taken offline in December 2024, with the latter pointing to KitchenAid's US website. [1] [1] https://en.wikipedia.org/wiki/Yummly Closes: https://github.com/searxng/searxng/issues/5079
2025-08-01[fix] CI task "update_engine_traits.py" fails (#5069)Markus Heiser
* [fix] CI task "update_engine_traits.py" fails To catch all problems with an HTTP request, the more general class ``httpx.HTTPError`` must be caught, for your test use:: $ ./manage dev.env $ python ./searxng_extra/update/update_engine_traits.py Closes: https://github.com/searxng/searxng/issues/5068 * [data] update searx.data - update_engine_traits.py
2025-07-28[fix] duckduckgo engine: logger.error / missing argument (#5057)Markus Heiser
The error message in case the vqd value could not be determined was incorrect and triggered an exception:: File "/usr/local/searxng/searxng-src/searx/engines/duckduckgo.py", line 132, in get_vqd logger.error("vqd value from duckduckgo.com ", resp.status_code) Message: 'vqd value from duckduckgo.com ' Arguments: (202,)
2025-07-26[fix] cleanup: rename `searx` leftovers to `SearXNG` (#5049)Markus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-25[fix] google video: refactor broken engine to work againSeriousConcept1134
The current google_videos.py in the master branch is completely non functional, due to it not parsing the returned video search results correctly. The result is searxng saying that no results were found. This commit is a new updated google_videos.py that's designed to fix that and is confirmed to be working. Implementing the suggestions by Bnyro. Re-formatted with `black` for compatibility. After failing automated checks, ran the command: black --line-length 120 --skip-string-normalization --target-version py311 google_videos.py
2025-07-24[mod] wordnik: convert to answerer (#4980)Bnyro
Wordnik is now an answerer and not in the infobox anymore: it uses the translations answerer, because it provides all the features needed. By default, only its first results is shown Additionally a new "define" category is added - I know, it's the same as the "dictionaries" category, but I don't think we can alias categories. This allows to search e.g. for `!define tree`, the idea is to allow easy searches for definitions of words. Related: - https://github.com/searxng/searxng/issues/4111
2025-07-11[chore] engines: remove redundant usages of utils#gen_useragent (#4993)Bnyro
These engines override the user agent manually using `gen_useragent`, although that's already done in the online preprocessor that runs before the actual `request(query, params)` method is called. Hence, this call is duplicated. Related: - https://github.com/searxng/searxng/pull/4990#discussion_r2195142838
2025-07-10[fix] public domain image archive: cloud provider changed angolia -> awsBnyro
- apparently, PDIA switched from Angolia to AWS :/ - we no longer require an API key, but the AWS node might change, so we still have to extract the API url of the node - the response format is still the same, so no changes needed in that regard - closes #4989
2025-07-09[mod] migrate from Redis to Valkey (#4795)Gaspard d'Hautefeuille
This patch migrates from `redis==5.2.1` [1] to `valkey==6.1.0` [2]. The migration to valkey is necessary because the company behind Redis has decided to abandon the open source license. After experiencing a drop in user numbers, they now want to run it under a dual license again. But this move demonstrates once again how unreliable the company is and how it treats open source developers. To review first, read the docs:: $ make docs.live Follow the instructions to remove redis: - http://0.0.0.0:8000/admin/settings/settings_redis.html Config and install a local valkey DB: - http://0.0.0.0:8000/admin/settings/settings_valkey.html [1] https://pypi.org/project/redis/ [2] https://pypi.org/project/valkey/ Co-authored-by: HLFH <gaspard@dhautefeuille.eu> Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-05[feat] engines: add pixabay for royalty free images/videosBnyro
What's changed? - this PR adds Pixabay, a collection of royalty free images - additionaly it seems to have some videos, so there's an engine for it too Author Notes - when using SearXNG's transport, all our requests will get blocked, probably due to fingerprinting - we should find an alternative solution because this is just a hacky change to make things work for now, but idk how ...
2025-07-03[feat] wttr.in: migrate to new weather engine template (#4888)Bnyro
Author Notes - wttr.in provides 8 hourly time forecasts per day, I assumed that they're always describing the weather for 3 hours each, starting at 1 o'clock in the morning related: - https://github.com/searxng/searxng/pull/4663 - https://github.com/searxng/searxng/issues/4885
2025-06-23[chore] fix ciBnyro
2025-06-23[fix] uxwing: doesn't work / forbiddenBnyro
the engine is currently broken because - it requires a normal user agent (spoofed) - it has some additional fingerprinting if using http2