Commit graph

5359 commits

Author SHA1 Message Date
Markus Heiser
887594f634 [fix] Internet links disappeared from wikidata side box (second try)
Related:

- https://github.com/searxng/searxng/pull/4286#issuecomment-2639960013

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-26 08:45:56 +01:00
fatwang2
bc5c8e5748 [fix] engine unsplash: image links by preserving URL parameters
Only remove ixid parameter while keeping other essential URL parameters
to ensure images are properly displayed in search results.
2025-02-26 08:44:39 +01:00
searxng-bot
f325f8a886 [l10n] update translations from Weblate
fecbeb1d5 - 2025-02-20 - return42 <return42@users.noreply.translate.codeberg.org>
8891568c6 - 2025-02-17 - AlanBacker <alanbacker@users.noreply.translate.codeberg.org>
727ae2508 - 2025-02-15 - return42 <return42@users.noreply.translate.codeberg.org>
11f215e90 - 2025-02-15 - return42 <return42@users.noreply.translate.codeberg.org>
9eb07083e - 2025-02-15 - thenack0 <thenack0@users.noreply.translate.codeberg.org>
2025-02-26 07:16:01 +01:00
Markus Heiser
2e0abc9310 [fix] various issues in the documentation
Closes: https://github.com/searxng/searxng/issues/4370
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-26 07:15:39 +01:00
Markus Heiser
28d1240fce [fix] remove dead invidious instances from the settings
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-20 17:16:15 +01:00
Markus Heiser
4994fbb5af [fix] engines bing.images & brave.videos - fix parse data string
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-20 17:03:25 +01:00
Markus Heiser
caf0dd5372 [fix] piped engine - update backend_url list
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-20 14:43:01 +01:00
Markus Heiser
c0a21789a3 [mod] activate startpage by default and use default timeout (3sec)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-20 14:23:03 +01:00
Bnyro
0f2fc5879d [feat] startpage: support for news and images 2025-02-20 13:44:28 +01:00
Markus Heiser
feb15e3878 [fix] brave.news engine: response is HTML and no longer JSON
The response from brave.com for news is no longer a JSON string.

Closes: https://github.com/searxng/searxng/issues/4352
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-20 10:08:03 +01:00
bearz314
0a3eb24a0b [fix] limiter: prevent loading cached index html when redirected
The redirection to index lets client requests CSS token, if somehow they haven't been.
We need to ensure the html isn't cached so the latest token can be retrieved.
2025-02-20 07:55:45 +01:00
bearz314
16fafed6a2 [fix] limiter: prevent caching of token link
Depending on server and client setup, this CSS link with empty content may be cached.
For example, in my setup CloudFlare automatically adds 14400s (4hours) in my test.
This prevents caching by browser and proxies so the CSS can be reliably requested.
2025-02-20 07:55:45 +01:00
Markus Heiser
44d941c93c [fix] mojeek web engine: don't add empty fmt argument for web searches
Empty ``&fmt=`` argument triggers an automated tools detection from mojeek.

Suggested-by: @shinodark in https://github.com/searxng/searxng/issues/4307#issuecomment-2669355322
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-20 07:45:57 +01:00
Markus Heiser
cc9dbde2e5 [fix] autocomplete: remove broken startpage backend
as long we don't have a solution for #4334 we can't offer startpage as
autocomplete backend.

Related:

- https://github.com/searxng/searxng/issues/4334

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-17 11:00:18 +01:00
Duckxz
1ae37728e4 [fix] Fix improper import of corrections.html 2025-02-17 06:41:04 +01:00
searxng-bot
d37dc30783 [l10n] update translations from Weblate
2b26704c4 - 2025-02-12 - return42 <return42@users.noreply.translate.codeberg.org>
647377905 - 2025-02-12 - return42 <return42@users.noreply.translate.codeberg.org>
afd50738d - 2025-02-12 - alexgabi <alexgabi@users.noreply.translate.codeberg.org>
665fafbe2 - 2025-02-11 - naktinis <naktinis@users.noreply.translate.codeberg.org>
583834fec - 2025-02-10 - alexgabi <alexgabi@users.noreply.translate.codeberg.org>
0f4f34434 - 2025-02-10 - MonsoonFire <monsoonfire@users.noreply.translate.codeberg.org>
fbd59c560 - 2025-02-08 - akinu <akinu@users.noreply.translate.codeberg.org>
c3f7f27f6 - 2025-02-07 - SecularSteve <secularsteve@users.noreply.translate.codeberg.org>
cba4bc53f - 2025-02-07 - SecularSteve <secularsteve@users.noreply.translate.codeberg.org>
2025-02-15 07:16:17 +01:00
bonswouar
d456f3dd9f [fix] engine adobe stock videos datetime parsing
re #4310
2025-02-12 07:05:58 +01:00
Markus Heiser
a1e2b25467 [mod] improve description of the prefernces URL in the "COOKIES" tab
Closes: https://github.com/searxng/searxng/issues/4272
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-09 13:32:33 +01:00
Bnyro
3a59aea742 [fix] results.py: crashes when 'parsed_url' is None 2025-02-08 17:18:43 +01:00
Bnyro
28ead13eb9 [chore] engines: replace datetime.utcfromtimestamp with datetime.fromtimestamp 2025-02-07 17:19:00 +01:00
searxng-bot
9b1f8681a1 [l10n] update translations from Weblate
d030e5252 - 2025-02-06 - curtwheeler <curtwheeler@users.noreply.translate.codeberg.org>
d3c6b503b - 2025-02-06 - curtwheeler <curtwheeler@users.noreply.translate.codeberg.org>
ed13a35ed - 2025-02-06 - curtwheeler <curtwheeler@users.noreply.translate.codeberg.org>
1126eef12 - 2025-02-06 - curtwheeler <curtwheeler@users.noreply.translate.codeberg.org>
ee8fd4d82 - 2025-02-06 - curtwheeler <curtwheeler@users.noreply.translate.codeberg.org>
b9507095f - 2025-02-06 - curtwheeler <curtwheeler@users.noreply.translate.codeberg.org>
5766ca07e - 2025-02-06 - curtwheeler <curtwheeler@users.noreply.translate.codeberg.org>
cadb0be4f - 2025-02-06 - ivantodorov <ivantodorov@users.noreply.translate.codeberg.org>
9e1d733b7 - 2025-02-06 - ivantodorov <ivantodorov@users.noreply.translate.codeberg.org>
bbb8c9646 - 2025-02-06 - AndersNordh <andersnordh@users.noreply.translate.codeberg.org>
463ea44dc - 2025-02-05 - artens <artens@users.noreply.translate.codeberg.org>
3549e01c0 - 2025-02-05 - return42 <return42@users.noreply.translate.codeberg.org>
58277713c - 2025-02-05 - Ricky-Tigg <ricky-tigg@users.noreply.translate.codeberg.org>
511926257 - 2025-02-03 - artens <artens@users.noreply.translate.codeberg.org>
6d49bafee - 2025-02-03 - artens <artens@users.noreply.translate.codeberg.org>
5d1dcf0b0 - 2025-02-03 - return42 <return42@users.noreply.translate.codeberg.org>
bb40eae80 - 2025-02-03 - artens <artens@users.noreply.translate.codeberg.org>
3e34b5486 - 2025-02-03 - davquar <davquar@users.noreply.translate.codeberg.org>
e67e0eaaf - 2025-02-03 - return42 <return42@users.noreply.translate.codeberg.org>
664e90b17 - 2025-02-03 - kny5 <kny5@users.noreply.translate.codeberg.org>
34ebe95c7 - 2025-02-03 - AndersNordh <andersnordh@users.noreply.translate.codeberg.org>
74e21c47a - 2025-02-03 - rodgui <rodgui@users.noreply.translate.codeberg.org>
ac770eae1 - 2025-02-03 - kny5 <kny5@users.noreply.translate.codeberg.org>
e9509ed4b - 2025-02-02 - davquar <davquar@users.noreply.translate.codeberg.org>
79824e94e - 2025-02-01 - matsob0123 <matsob0123@users.noreply.translate.codeberg.org>
4153606b0 - 2025-02-01 - Fjuro <fjuro@users.noreply.translate.codeberg.org>
9c6763231 - 2025-01-31 - Shihfu Juan <xlion@xlion.tw>
791869503 - 2025-01-31 - Shihfu Juan <xlion@xlion.tw>
00e05f5aa - 2025-01-31 - Shihfu Juan <xlion@xlion.tw>
2025-02-07 17:06:27 +01:00
Markus Heiser
147bda894e [fix] Internet links disappeared from wikidata side box
Closes: https://github.com/searxng/searxng/issues/4285

Reported and tested by: Popolon
Suggested-by: @dalf
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-06 14:50:30 +01:00
allixx
4ab7984edd [fix] public domain image archive: change name to lowercase
Otherwise logs are flooded with warnings:
WARNING:searx.engines: Engine name is not lowercase: "Public Domain Image Archive", converting to lowercase
2025-02-03 18:38:56 +01:00
XLion
ab1e895cc0
[fix] openverse: update API and website URL (#4275) 2025-02-02 22:12:24 +01:00
searxng-bot
eea4d4fd1d [l10n] update translations from Weblate
86a55bb1f - 2025-01-30 - Shihfu Juan <xlion@xlion.tw>
553225b31 - 2025-01-30 - kratos <kratos@users.noreply.translate.codeberg.org>
f6ad2986e - 2025-01-30 - return42 <return42@users.noreply.translate.codeberg.org>
b550ed406 - 2025-01-30 - nebras <nebras@users.noreply.translate.codeberg.org>
2852d3ada - 2025-01-29 - Outbreak2096 <outbreak2096@users.noreply.translate.codeberg.org>
98d2ed269 - 2025-01-30 - Linerly <linerly@users.noreply.translate.codeberg.org>
8b13e0d11 - 2025-01-29 - RoyBarina <roybarina@users.noreply.translate.codeberg.org>
75bcc2aaf - 2025-01-29 - ghose <ghose@users.noreply.translate.codeberg.org>
6b21bccc2 - 2025-01-29 - Priit Jõerüüt <jrtcdbrg@users.noreply.translate.codeberg.org>
5dc3d664d - 2025-01-29 - return42 <return42@users.noreply.translate.codeberg.org>
2025-01-31 08:54:00 +01:00
return42
738906358b [data] update searx.data - update_currencies.py 2025-01-29 06:23:04 +01:00
return42
fc8938c968 [data] update searx.data - update_ahmia_blacklist.py 2025-01-29 06:07:28 +01:00
return42
3b9e06fbd2 [data] update searx.data - update_wikidata_units.py 2025-01-29 06:06:50 +01:00
return42
4934922156 [data] update searx.data - update_engine_traits.py 2025-01-29 06:05:58 +01:00
return42
bee39e4ec0 [data] update searx.data - update_engine_descriptions.py 2025-01-29 06:04:54 +01:00
Markus Heiser
3f4e0b0859 [fix] gettext can't work with f-strings (i10n)
``str.format`` is the pythonic way of handling strings returned by
gettext.gettext that retain interpolation tokens.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-29 06:04:09 +01:00
Markus Heiser
a235c54f8c [mod] rudimentary implementation of a MainResult type
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-29 05:04:41 +01:00
Markus Heiser
df3344e5d5 [fix] JSON & CSV format return error 500
For CSV and JSON output, the LegacyResult and the Result objects needs to be
converted to a python dictionary.

Closes: https://github.com/searxng/searxng/issues/4244
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-29 05:04:41 +01:00
Markus Heiser
906b9e7d4c [fix] hostnames plugin: AttributeError: 'NoneType' object has no attribute 'netloc'
Closes: https://github.com/searxng/searxng/issues/4245
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-28 16:28:12 +01:00
Markus Heiser
36a1ef1239 [refactor] typification of SearXNG / EngineResults
In [1] and [2] we discussed the need of a Result.results property and how we can
avoid unclear code.  This patch implements a class for the reslut-lists of
engines::

    searx.result_types.EngineResults

A simple example for the usage in engine development::

    from searx.result_types import EngineResults
    ...
    def response(resp) -> EngineResults:
        res = EngineResults()
        ...
        res.add( res.types.Answer(answer="lorem ipsum ..", url="https://example.org") )
        ...
        return res

[1] https://github.com/searxng/searxng/pull/4183#pullrequestreview-257400034
[2] https://github.com/searxng/searxng/pull/4183#issuecomment-2614301580
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-28 07:07:08 +01:00
Markus Heiser
edfbf1e118 [refactor] typification of SearXNG (initial) / result items (part 1)
Typification of SearXNG
=======================

This patch introduces the typing of the results.  The why and how is described
in the documentation, please generate the documentation ..

    $ make docs.clean docs.live

and read the following articles in the "Developer documentation":

- result types --> http://0.0.0.0:8000/dev/result_types/index.html

The result types are available from the `searx.result_types` module.  The
following have been implemented so far:

- base result type: `searx.result_type.Result`
  --> http://0.0.0.0:8000/dev/result_types/base_result.html

- answer results
  --> http://0.0.0.0:8000/dev/result_types/answer.html

including the type for translations (inspired by #3925).  For all other
types (which still need to be set up in subsequent PRs), template documentation
has been created for the transition period.

Doc of the fields used in Templates
===================================

The template documentation is the basis for the typing and is the first complete
documentation of the results (needed for engine development).  It is the
"working paper" (the plan) with which further typifications can be implemented
in subsequent PRs.

- https://github.com/searxng/searxng/issues/357

Answer Templates
================

With the new (sub) types for `Answer`, the templates for the answers have also
been revised, `Translation` are now displayed with collapsible entries (inspired
by #3925).

    !en-de dog

Plugins & Answerer
==================

The implementation for `Plugin` and `Answer` has been revised, see
documentation:

- Plugin: http://0.0.0.0:8000/dev/plugins/index.html
- Answerer: http://0.0.0.0:8000/dev/answerers/index.html

With `AnswerStorage` and `AnswerStorage` to manage those items (in follow up
PRs, `ArticleStorage`, `InfoStorage` and .. will be implemented)

Autocomplete
============

The autocompletion had a bug where the results from `Answer` had not been shown
in the past.  To test activate autocompletion and try search terms for which we
have answerers

- statistics: type `min 1 2 3` .. in the completion list you should find an
  entry like `[de] min(1, 2, 3) = 1`

- random: type `random uuid` .. in the completion list, the first item is a
  random UUID

Extended Types
==============

SearXNG extends e.g. the request and response types of flask and httpx, a module
has been set up for type extensions:

- Extended Types
  --> http://0.0.0.0:8000/dev/extended_types.html

Unit-Tests
==========

The unit tests have been completely revised.  In the previous implementation,
the runtime (the global variables such as `searx.settings`) was not initialized
before each test, so the runtime environment with which a test ran was always
determined by the tests that ran before it.  This was also the reason why we
sometimes had to observe non-deterministic errors in the tests in the past:

- https://github.com/searxng/searxng/issues/2988 is one example for the Runtime
  issues, with non-deterministic behavior ..

- https://github.com/searxng/searxng/pull/3650
- https://github.com/searxng/searxng/pull/3654
- https://github.com/searxng/searxng/pull/3642#issuecomment-2226884469
- https://github.com/searxng/searxng/pull/3746#issuecomment-2300965005

Why msgspec.Struct
==================

We have already discussed typing based on e.g. `TypeDict` or `dataclass` in the past:

- https://github.com/searxng/searxng/pull/1562/files
- https://gist.github.com/dalf/972eb05e7a9bee161487132a7de244d2
- https://github.com/searxng/searxng/pull/1412/files
- https://github.com/searxng/searxng/pull/1356

In my opinion, TypeDict is unsuitable because the objects are still dictionaries
and not instances of classes / the `dataclass` are classes but ...

The `msgspec.Struct` combine the advantages of typing, runtime behaviour and
also offer the option of (fast) serializing (incl. type check) the objects.

Currently not possible but conceivable with `msgspec`: Outsourcing the engines
into separate processes, what possibilities this opens up in the future is left
to the imagination!

Internally, we have already defined that it is desirable to decouple the
development of the engines from the development of the SearXNG core / The
serialization of the `Result` objects is a prerequisite for this.

HINT: The threads listed above were the template for this PR, even though the
implementation here is based on msgspec.  They should also be an inspiration for
the following PRs of typification, as the models and implementations can provide
a good direction.

Why just one commit?
====================

I tried to create several (thematically separated) commits, but gave up at some
point ... there are too many things to tackle at once / The comprehensibility of
the commits would not be improved by a thematic separation. On the contrary, we
would have to make multiple changes at the same places and the goal of a change
would be vaguely recognizable in the fog of the commits.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-28 07:07:08 +01:00
Bnyro
9079d0cac0 [refactor] translation engines: common interface 2025-01-28 07:07:08 +01:00
Denperidge
70f1b65008 [feat] engines: add NixOS Wiki
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-01-26 20:12:19 +01:00
Markus Heiser
06f6ee4e36 [build] /static 2025-01-26 13:34:52 +01:00
Markus Heiser
9beff8212b [refactor] results.js: wait one second before loading full high-res image
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-26 13:34:52 +01:00
Bnyro
cf4e183790 [refactor] results.js: cancel image loading after next one selected 2025-01-26 13:34:52 +01:00
Bnyro
c1fcee9d9f [docs] settings_search.rst: add missing autocompletion providers 2025-01-26 08:38:29 +01:00
Bnyro
176079977d [chore] autocomplete.py: order autocompletion engines alphabetically 2025-01-25 12:12:46 +01:00
Zhijie He
f3f13519ff
[feat] autocompletion: add baidu search autocompleter (#4227) 2025-01-25 11:59:10 +01:00
dependabot[bot]
04a6ab12fb [upd] npm: Bump less from 4.2.1 to 4.2.2 in /searx/static/themes/simple
Bumps [less](https://github.com/less/less.js) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/less/less.js/releases)
- [Changelog](https://github.com/less/less.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/less/less.js/commits)

---
updated-dependencies:
- dependency-name: less
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 20:24:52 +01:00
searxng-bot
edf6d96625 [l10n] update translations from Weblate
8a0e2e2d6 - 2025-01-21 - return42 <return42@users.noreply.translate.codeberg.org>
b70a88fec - 2025-01-19 - rajeeban <rajeeban@users.noreply.translate.codeberg.org>
2025-01-24 09:52:04 +01:00
Markus Heiser
bee2677929 [build] /static 2025-01-21 22:55:45 +01:00
Markus Heiser
e7081bb2c1 [update] make pygments.less
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-21 16:12:27 +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