summaryrefslogtreecommitdiff
path: root/searx/engines/presearch.py
AgeCommit message (Collapse)Author
2025-11-21[fix] engines: typo (#5466)Léon Tiekötter
Fix typo in engine timeout definition: 'timout' -> 'timeout'
2025-11-21[fix] engines - set hard timouts in *sub-request* (#5460)Markus Heiser
The requests changed here all run outside of the network context timeout, thereby preventing the engine's timeout from being applied (the engine's timeout can become longer than it was configured). Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-11-20[fix] presearch engine: blocked by captcha on every requestBnyro
Presearch responds with a Cloudflare captcha on each request when using HTTP2. Using HTTP1.1, everything seems to work fine. - other engines with the same issue: pixabay, uxwing - closes https://github.com/searxng/searxng/issues/5438
2025-05-28[fix] presearch: reuse response cookies from token extractionBnyro
Why? - presearch requires the response cookies of the first request to be sent within the second request - otherwise we miss auth information and the engine doesn't work Related: - https://github.com/searxng/searxng/pull/4858 - closes https://github.com/searxng/searxng/issues/4854 Co-authored-by: Aadniz <8147434+Aadniz@users.noreply.github.com>
2025-04-01[fix] hardening against arguments of type None, where str or dict is expectedMarkus Heiser
On a long-running server, the tracebacks below can be found (albeit rarely), which indicate problems with NoneType where a string or another data type is expected. result.img_src:: File "/usr/local/searxng/searxng-src/searx/templates/simple/result_templates/images.html", line 13, in top-level template code <img src="" data-src="{{ image_proxify(result.img_src) }}" alt="{{ result.title|striptags }}">{{- "" -}} ^ File "/usr/local/searxng/searxng-src/searx/webapp.py", line 284, in image_proxify if url.startswith('//'): ^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'startswith' result.content:: File "/usr/local/searxng/searxng-src/searx/result_types/_base.py", line 105, in _normalize_text_fields result.content = WHITESPACE_REGEX.sub(" ", result.content).strip() ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ TypeError: expected string or bytes-like object, got 'NoneType' html_to_text, when html_str is a NoneType:: File "/usr/local/searxng/searxng-src/searx/engines/wikipedia.py", line 190, in response title = utils.html_to_text(api_result.get('titles', {}).get('display') or api_result.get('title')) File "/usr/local/searxng/searxng-src/searx/utils.py", line 158, in html_to_text html_str = html_str.replace('\n', ' ').replace('\r', ' ') ^^^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'replace' presearch engine, when json_resp is a NoneType:: File "/usr/local/searxng/searxng-src/searx/engines/presearch.py", line 221, in response results = parse_search_query(json_resp.get('results')) File "/usr/local/searxng/searxng-src/searx/engines/presearch.py", line 161, in parse_search_query for item in json_results.get('specialSections', {}).get('topStoriesCompact', {}).get('data', []): ^^^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'get' Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-28[fix] presearch engine: Unexpected crash if duration not in videosAadniz
2025-03-25[refactor] duration strings: move parsing logic to utils.pyBnyro
2025-03-20[fix] presearch videos: item description and duration are located in ↵Bnyro
metadata field
2025-03-20[fix] presearch engine: News and Videos formatted incorrectlyAadniz
2025-03-08[fix] presearch engine: domain sometimes included in beginning of titlesAadniz
2025-03-07[fix] presearch engine: Title showing <em> html codeAadniz
2024-05-16[mod] simple theme: drop img_src from default resultsMarkus Heiser
The use of img_src AND thumbnail in the default results makes no sense (only a thumbnail is needed). In the current state this is rather confusing, because img_src is displayed like a thumbnail (small) and thumbnail is displayed like an image (large). Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
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-11[mod] pylint all engines without PYLINT_SEARXNG_DISABLE_OPTIONMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-01-15[mod] presearch: add language & region supportMarkus Heiser
In Presearch there are languages for the UI and regions for narrowing down the search. With this change the SearXNG engine supports a search by region. The details can be found in the documentation of the source code. To test, you can search terms like:: !presearch bmw :zh-TW !presearch bmw :en-CA 1. You should get results corresponding to the region (Taiwan, Canada) 2. and in the language (Chinese, Englisch). 3. The context in info box content is in the same language. Exceptions: 1. Region or language is not supported by Presearch or 2. SearXNG user did not selected a region tag, example:: !presearch bmw :en Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-01-15[mod] presearch: hardening engine's response against KeyErrorsMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-01-15[fix] presearch: safesearch, time ranges, crash when no result foundBnyro
2023-11-27[mod] improve implementation of presearch engineMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-11-27[feat] implementation of presearch engineBnyro