100 Commits
Author SHA1 Message Date
Bnyro 9754e7b4e2 [mod] engines: remove seekr engine
Looks like https://www.seekr.com/ was sold to an other company
that does something with enterprise AI and no longer provides any
web search engine.
2026-02-21 11:26:53 +01:00
Bnyro 313fda426c [fix] annas archive: rotate between available backup domains
- closes https://github.com/searxng/searxng/issues/5633
2026-01-20 13:39:19 +01:00
BnyroandGitHub c4f1b216d1 [feat] brave: show related query suggestions (#5614) 2026-01-16 08:39:56 +01:00
BnyroandGitHub b93a68bb48 [feat] engines: add fynd engine (#5616)
The engine is quite fast (< 30ms) and provides very
decent search results for most short queries.

More information:
- <https://fynd.com>
- <https://seirdy.one/posts/2021/03/10/search-engines-with-own-indexes/>
2026-01-16 08:39:16 +01:00
Bnyro 44405bd03c [fix] yep: fix 403 forbidden errors
Apparently, yep has been broken for a while. Measures to fix it:
- only use HTTP/1.1, because our HTTP2 client gets fingerprinted and blocked
- send the `Origin` HTTP header
2026-01-10 12:46:22 +01:00
Bnyro 1f6ea41272 [fix] mojeek: first search page is rate-limited
Mojeek blocks all requests where the page offset parameter `s`
is set to 0, hence we may not set it for fetching the first results page.
2025-12-03 17:03:27 +01:00
BnyroandGitHub 1174fde1f3 [feat] engines: add lucide icons (#5503) 2025-12-03 09:57:42 +01:00
BnyroandGitHub ab8224c939 [fix] brave: content description also contains website URL (#5502)
there are other classes like 'site-name-content' we don't want to match,
however only using contains(@class, 'content') would e.g. also match `site-name-content`
thus, we explicitly also require the spaces as class separator
2025-12-01 15:19:06 +01:00
Bnyro 041f457dfa [fix] presearch engine: blocked by captcha on every request
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-11-20 13:48:13 +01:00
Bnyro ba98030438 [feat] engines: add devicons engine
- official website: https://devicon.dev/
- the engine contains a lot of icons of popular software frameworks (e.g. pytest),
so they could for example be useful for visualizing a diagram of the tech stack used in an app
2025-11-14 20:26:43 +01:00
BnyroandMarkus Heiser 1be19f8b58 [feat] sourcehut engine: implement as custom module, fix user agent
SourceHut uses a foss bot protection tool called `go-away` (which I can
recommend BTW).  It blocks common crawler user agents, such as the standard
Firefox user agent.  Hence, we're now using our custom SearXNG user agent to
clarify we're not a crawler.

Closes: https://github.com/searxng/searxng/issues/5270
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2025-11-05 17:56:13 +01:00
BnyroandGitHub 3763b4bff4 [fix] engine ahmia blacklist, arch linux: use proper searxng user agent including version (#5414) 2025-11-05 09:19:42 +01:00
BnyroandMarkus Heiser 50a4c653dc [build] /static 2025-10-25 10:00:28 +02:00
BnyroandMarkus Heiser b7f9b489c9 [fix] search bar: cursor jumps to beginning when clicking text field
Apparently, setting padding on an input field and then clicking that
space created by the padding forces the seekbar cursor to jump to the
beginning of the input field instead of the actual text position.

By removing that padding, the search bar input automatically claims that
height for itself and thus clicking on the blank space moves the cursor to
the correct position.

closes https://github.com/searxng/searxng/issues/5371
2025-10-25 10:00:28 +02:00
BnyroandMarkus Heiser 3725aef6f3 [fix] reuters: crash on empty results pages & date parsing
1. On empty result list, return empty EngineResults (#5330)

2. Use ``dateutil.parser`` to avoid ``ValueError``:

    ERROR   searx.engines.reuters : exception : Invalid isoformat string: '2022-06-08T16:07:54Z'
      File "searx/engines/reuters.py", line 91, in response
        publishedDate=datetime.fromisoformat(result["display_time"]),
    ValueError: Invalid isoformat string: '2022-06-08T16:07:54Z'

Closes: https://github.com/searxng/searxng/issues/5330
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-18 14:43:35 +02:00
BnyroandMarkus Heiser a6bb1ecf87 [build] /static 2025-10-17 15:59:53 +02:00
BnyroandMarkus Heiser 636738779e [feat] video results: display video length on video thumbnail 2025-10-17 15:59:53 +02:00
BnyroandGitHub 1d138c5968 [mod] bing engine: follow redirects (#5324)
Apparently, in China, Bing redirects from `www.bing.com` to `cn.bing.com`.
So in order to make Bing work for chinese users by default, we have to follow that redirect.

related: https://github.com/searxng/searxng/issues/5243
2025-10-17 15:43:49 +02:00
BnyroandGitHub 8baefcc21e [fix] pinterest: crash when there's no link & show image resolution + uploader name (#5314)
closes #5231
2025-10-13 07:43:36 +02:00
BnyroandMarkus Heiser 899cf7e08a [build] /static 2025-10-10 18:08:33 +02:00
BnyroandMarkus Heiser 362cc13aeb [feat] preferences hash: show applied settings in pref page when searching with 'search url of the currently saved preferences'
Previously, when using a search url copied from the cookies tab, clicking
at the settings icon at the top right would show the browser preferences
and not the preferences that were set and used with the search url.
Please see https://github.com/searxng/searxng/issues/5227 for more information.

To test:
- change some preferences
- copy the preferences search url in the settings' cookies tab
- reset the preferences or clear cookies
- paste the copied search url into the search bar to search for something
- press the settings icon
- you can now see/preview the actual settings that were used for the search
- by pressing 'save', you can keep these preferences

closes #5227
2025-10-10 18:08:33 +02:00
Bnyro d28a1c434f [fix] no results error dialog: link to preferences doesn't work if searxng is hosted as subdirectory 2025-10-10 18:05:54 +02:00
b93cc2f9f8 [feat] engines: add repology.org engine for linux packages (#5103)
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 16:33:31 +02:00
BnyroandMarkus Heiser f971774773 [fix] annas archive: engine broken due to site HTML changes
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-28 19:24:37 +02:00
BnyroandMarkus Heiser 5ca08c1813 [feat] plugins: add new time/timezone search plugin
The plugin uses the ``GeoLocation`` class, which is already implemented in the
context of weather forecasts, to determine the time zone. The ``DateTime`` class
is used for the localized display of date and time.

Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2025-08-28 10:49:50 +02:00
BnyroandGitHub 3649917ce6 [fix] webapp: safesearch uses wrong default value (#5134)
- this fixes a regression from https://github.com/searxng/searxng/commit/60bd8b90f04d5d825fc8ac279cb7fdfde9fe78ea#diff-1b714182564ef1fa942ff81b28f9ba3365ab76f75346f4255398bf9d6064b4cc
- closes https://github.com/searxng/searxng/issues/5130
2025-08-20 14:39:05 +02:00
Bnyro 0369682690 [fix] selfhst icons: icon list url invalid, set to active
- 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 14:27:17 +02:00
BnyroandGitHub 761b74e8c9 [fix] legacy results: published date missing (#5093)
The `publishedDate` has always been `None` before that change, which
causes that there are no `publishedDate`s visible for any result.
2025-08-08 12:22:00 +02:00
Bnyro 25c327904a [fix] tagesschau: crash if there's no video stream available
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-08 07:19:12 +00:00
BnyroandGitHub 612b76b75e [fix] webapp.py: default_http_headers not parsed as strings (#5094)
WhiteNoise requires all headers to be strings, however it's common to use
other primitive types (e.g. numbers) in the header, e.g. `X-XSS-Protection: 0`.
Thus, we must convert all types of values (i.e. numbers) to strings.

- closes https://github.com/searxng/searxng/issues/5091
2025-08-07 20:50:31 +02:00
Bnyro 94256e3383 [feat] duckduckgo weather: migrate to new weather engine template
- 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-06 14:09:23 +02:00
BnyroandGitHub 1baf3dcd1c [fix] webapp.py: info (and other) page(s) don't load properly (#5051) 2025-07-26 17:58:53 +02:00
BnyroandGitHub 6b16a04e7e [mod] wordnik: convert to answerer (#4980)
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-24 07:42:31 +02:00
Bnyro 5cbf422621 [fix] tracker url remover + external bangs: use standard network config
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-07-22 10:25:33 +02:00
BnyroandGitHub a48ec8a4d5 [chore] engines: remove redundant usages of utils#gen_useragent (#4993)
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-11 08:42:39 +02:00
Bnyro 4b9644eb27 [fix] public domain image archive: cloud provider changed angolia -> aws
- 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-10 15:12:26 +02:00
Bnyro 6ff4035635 [feat] engines: add pixabay for royalty free images/videos
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-05 13:45:19 +02:00
BnyroandGitHub 5926d737e3 [fix] calculator plugin: crash when trying to evaluate non-math query (#4975)
It's possible that `SyntaxError` or `TypeError` instances are thrown
when we can't evaluate a query, simply because it's not a math expression.
In this case, it should just be skipped, i.e. the calculator plugin doesn't
return any result instead of forwarding the exception.
2025-07-04 21:32:54 +02:00
BnyroandGitHub 0cbb4f74cc [feat] wttr.in: migrate to new weather engine template (#4888)
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-07-03 16:42:13 +02:00
BnyroandMarkus Heiser 99033f548e [feat] calculator: add support for math constants (e, pi) 2025-07-03 13:57:31 +02:00
BnyroandMarkus Heiser 27466faadb [feat] calculator: add support for comparation operators (<, <=, ==, ...) 2025-07-03 13:57:31 +02:00
BnyroandMarkus Heiser a0fca8c21b [feat] calculator: add some operations (mod, shifts, bitwise and/or) 2025-07-03 13:57:31 +02:00
Bnyro cacfe54153 [chore] fix ci 2025-06-23 22:57:11 +02:00
Bnyro b385f32098 [fix] uxwing: doesn't work / forbidden
the engine is currently broken because
- it requires a normal user agent (spoofed)
- it has some additional fingerprinting if using http2
2025-06-23 22:51:48 +02:00
Bnyro 2001efbbab [data] update searx.data - add tracker_patterns.json 2025-06-23 22:12:18 +02:00
Bnyro 8f7eee2473 [feat] tracker url plugin: use ClearURL tracking param list 2025-06-23 22:12:18 +02:00
BnyroandMarkus Heiser 58df3e8e97 [build] /static 2025-06-22 09:41:16 +02:00
BnyroandMarkus Heiser 096fb74f4e [fix] weather template: text overflow on small screen devices
- this PR fixes that the columns of the weather table are overflowing on small screen devices
- therefore we now display "..." at the end of too long words and cut them off
- additionally I added some small gap between columns, otherwise it looks weird on small screens

- closes https://github.com/searxng/searxng/issues/4887
2025-06-22 09:41:16 +02:00
BnyroandMarkus Heiser cf59ee2efc [feat] open meteo: use new weather answerer 2025-05-31 20:34:59 +02:00
BnyroandMarkus Heiser d70f0a3321 [feat] result types: add weather result answerer and template 2025-05-31 20:34:59 +02:00
BnyroandAadniz 2288f07d62 [fix] presearch: reuse response cookies from token extraction
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-05-28 12:53:45 +02:00
Bnyro 20b40351b9 [chore] il post: disable by default 2025-05-26 17:39:09 +02:00
BnyroandMarkus Heiser 7a5a499795 [build] /static 2025-05-25 18:04:18 +02:00
BnyroandMarkus Heiser 9dfdd30da0 [fix] search: autocomplete focus on results page
This has been a regression introduced with the removal of
the unmaintained autocomplete.js library.

We should only focus the search bar on the main search page at `/`
and not at the results page located at `/search`.

I'm not sure if there's a better way to figure out if
we're on the results page than checking if the id of the
main element is `#main_results`, checking the path
obviously isn't a better solution because it can differ
depending on the instance / reverse proxy / ....

- related to https://github.com/searxng/searxng/commit/32823ecb69b115a6726475d6421f0a1c0327fafa
- closes https://github.com/searxng/searxng/issues/4846
2025-05-25 18:04:18 +02:00
Bnyro 32823ecb69 [refactor] search.js: use custom auto completion implementation
The previously used library is unmaintained for 6 years now [1] and the solution
had know issues [2][3]

[1] https://github.com/searxng/searxng/pull/4284#discussion_r1954493434
[2] https://github.com/searxng/searxng/pull/4318#issuecomment-2731576657
[3] https://github.com/privau/searxng/issues/56
2025-05-22 15:16:54 +02:00
BnyroandGitHub 502017b901 [fix] pinterest: engine broken due to API changes (#4816)
- apparently the API now requires a `X-Pinterest-PWS-Handler` in order to
  properly function (extracted from their web UI)

- the other `X-Pinterest` headers here are added in case they become mandatory
  too

Closes: https://github.com/searxng/searxng/issues/4812
2025-05-21 15:22:42 +02:00
BnyroandGitHub 88973f5431 [feat] engines: add uxwing engine for icons (#4819)
- uxwing provides attribution-free icons to use for design projects
- svgrepo was my go-to before, but it's ratelimiting a lot recently
2025-05-21 15:10:29 +02:00
BnyroandGitHub 8bff73c9b6 [refactor] icon engines: add new icon category (#4817)
Icons category makes sense because it allows to quickly search for free SVG
icons to use for websites / other designs with a quick `!icons` query

Icons don't seem to fit into the normal images category that well because icons
are quite a special type of images
2025-05-21 14:52:16 +02:00
BnyroandGitHub 0315988f5a fix] revert searxng/searxng#4699 due to breaking issues (#4720)
This reverts commit 2e74d86321.
2025-05-05 09:46:37 +02:00
BnyroandMarkus Heiser 590b211652 [fix] semantic scholar: method not allowed / engine doesn't work
Fixes the semantic scholar engine by extracting a ui version token.

BTW: remove html tags from the content.

Author's checklist:

- they are ratelimiting very fast, if you do approx more than 2 requests per
  minute, you have to wait some time again...

- they also have an official api at api.semanticscholar.org, but it's ratelimits
  are even harder

Closes: https://github.com/searxng/searxng/issues/4685
2025-05-02 16:46:38 +02:00
BnyroandMarkus Heiser fd33559cfb [fix] brave: fix images and videos engines 2025-04-30 08:28:04 +02:00
BnyroandMarkus Heiser 9ffa9fb730 [feat] engines: add reuters news engine 2025-03-30 13:56:09 +02:00
BnyroandMarkus Heiser 4dfc47584d [refactor] duration strings: move parsing logic to utils.py 2025-03-25 16:48:44 +01:00
BnyroandMarkus Heiser c28d35c7fc [fix] duckduckgo news: unescaped html sequences in description 2025-03-25 16:14:36 +01:00
BnyroandMarkus Heiser b75e56afe6 [fix] duckduckgo: answer sometimes contains faulty (duplicated) url 2025-03-21 07:48:30 +01:00
Bnyro 3668c7012e [fix] presearch videos: item description and duration are located in metadata field 2025-03-20 20:55:09 +01:00
BnyroandMarkus Heiser babbe9e1ae [fix] duckduckgo: show proper source url of answers 2025-03-18 05:31:28 +01:00
Bnyro 885d02c8c3 [feat] engine: add selfh.st/icons for logos of common self-hosted programs 2025-03-17 20:23:54 +01:00
Bnyro bbb2894b04 [engine] elasticsearch: add pagination support 2025-03-16 22:10:05 +01:00
BnyroandMarkus Heiser a51416c7c3 [feat] engines: add openclipart.org 2025-03-01 18:01:51 +01:00
BnyroandMarkus Heiser 0f2fc5879d [feat] startpage: support for news and images 2025-02-20 13:44:28 +01:00
BnyroandMarkus Heiser 3a59aea742 [fix] results.py: crashes when 'parsed_url' is None 2025-02-08 17:18:43 +01:00
BnyroandMarkus Heiser 28ead13eb9 [chore] engines: replace datetime.utcfromtimestamp with datetime.fromtimestamp 2025-02-07 17:19:00 +01:00
BnyroandMarkus Heiser 9079d0cac0 [refactor] translation engines: common interface 2025-01-28 07:07:08 +01:00
Bnyro cf4e183790 [refactor] results.js: cancel image loading after next one selected 2025-01-26 13:34:52 +01:00
BnyroandMarkus Heiser c1fcee9d9f [docs] settings_search.rst: add missing autocompletion providers 2025-01-26 08:38:29 +01:00
BnyroandMarkus Heiser 176079977d [chore] autocomplete.py: order autocompletion engines alphabetically 2025-01-25 12:12:46 +01:00
Bnyro 8731e37796 [build] /static 2025-01-20 18:46:31 +01:00
Bnyro e92d1bc6af [fix] results.js: back button not working after closing image result manually 2025-01-20 18:46:31 +01:00
BnyroandMarkus Heiser f766faca3f [feat] engines: add ipernity (images) 2025-01-20 17:22:32 +01:00
BnyroandMarkus Heiser c760ad0808 [feat] image results: dismiss image viewer on back button press on mobile devices 2025-01-20 13:29:26 +01:00
BnyroandMarkus Heiser 2f087a3a22 [feat] public domain image archive: automatically obtain algolia api key 2025-01-20 12:56:15 +01:00
BnyroandMarkus Heiser 5a1a43ef74 [build] /static 2025-01-14 15:22:23 +01:00
BnyroandMarkus Heiser 94b6adf03d [chore] stylelint: fix reported errors 2025-01-14 15:22:23 +01:00
BnyroandMarkus Heiser 337a6db064 [upd] stylelint: use less-compatible configuration and update rules 2025-01-14 15:22:23 +01:00
BnyroandMarkus Heiser 0642c5434a [fix] dockerhub: switch to new api path
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-06 13:46:13 +01:00
Bnyro d4e3a5f2f2 [refactor] webapp.py: reuse get_client_settings() method to unify preference handling before render 2024-12-16 11:39:38 +01:00
BnyroandMarkus Heiser 523df1d7f4 [build] /static 2024-12-16 08:36:48 +01:00
BnyroandMarkus Heiser c8e932647b [fix] settings: javascript crash when entering due to missing search form 2024-12-16 08:36:48 +01:00
Bnyro 4a8d333d5b [build] /static 2024-12-01 13:08:50 +01:00
Bnyro a7537a6935 [feat] search: add url formatting preference 2024-12-01 13:08:50 +01:00
Bnyro cae07b9bf8 [build] /static 2024-11-29 20:24:06 +01:00
Bnyro 365c4d0643 [chore] search.js: remove leftovers from shift to multiselect categories PR 2024-11-29 20:24:06 +01:00
BnyroandMarkus Heiser 94aafc83a6 [build] /static 2024-11-29 15:05:00 +01:00
BnyroandMarkus Heiser 6a9b97cad2 [feat] search: shift/ctrl click a category to select multiple categories 2024-11-29 15:05:00 +01:00
Bnyro 0ca2520115 [feat] json/xpath engine: config option for method and body 2024-11-28 09:53:21 +01:00
BnyroandMarkus Heiser 5a9c1c6b5b [fix] crowdview engine: html tags in title and content 2024-11-28 06:19:55 +01:00
BnyroandGitHub 66f6495a22 [fix] duckduckgo extra: crashes and returns no results 2024-11-25 17:00:52 +01:00
BnyroandGitHub 5bf3fbc93b [fix] openmetrics: value is None if there's no data 2024-11-25 16:57:03 +01:00
BnyroandMarkus Heiser bad070b4bc [build] /static 2024-11-25 09:34:02 +01:00