2446 Commits

Author SHA1 Message Date
dependabot[bot]
d991c94d43 [upd] pypi: Bump markdown-it-py from 3.0.0 to 4.0.0
Bumps [markdown-it-py](https://github.com/executablebooks/markdown-it-py) from 3.0.0 to 4.0.0.
- [Release notes](https://github.com/executablebooks/markdown-it-py/releases)
- [Changelog](https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0)

---
updated-dependencies:
- dependency-name: markdown-it-py
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-10 07:11:08 +00:00
dependabot[bot]
02d5166a3b [upd] pypi: Bump the minor group with 6 updates (#5293)
Bumps the minor group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [granian](https://github.com/emmett-framework/granian) | `2.5.4` | `2.5.5` |
| [certifi](https://github.com/certifi/python-certifi) | `2025.8.3` | `2025.10.5` |
| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.3.0` |
| [pylint](https://github.com/pylint-dev/pylint) | `3.3.8` | `3.3.9` |
| [wlc](https://github.com/WeblateOrg/wlc) | `1.15` | `1.16.1` |
| [granian[reload]](https://github.com/emmett-framework/granian) | `2.5.4` | `2.5.5` |


Updates `granian` from 2.5.4 to 2.5.5
- [Release notes](https://github.com/emmett-framework/granian/releases)
- [Commits](https://github.com/emmett-framework/granian/compare/v2.5.4...v2.5.5)

Updates `certifi` from 2025.8.3 to 2025.10.5
- [Commits](https://github.com/certifi/python-certifi/compare/2025.08.03...2025.10.05)

Updates `tomli` from 2.2.1 to 2.3.0
- [Changelog](https://github.com/hukkin/tomli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hukkin/tomli/compare/2.2.1...2.3.0)

Updates `pylint` from 3.3.8 to 3.3.9
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.3.8...v3.3.9)

Updates `wlc` from 1.15 to 1.16.1
- [Release notes](https://github.com/WeblateOrg/wlc/releases)
- [Changelog](https://github.com/WeblateOrg/wlc/blob/main/CHANGES.rst)
- [Commits](https://github.com/WeblateOrg/wlc/compare/1.15...1.16.1)

Updates `granian[reload]` from 2.5.4 to 2.5.5
- [Release notes](https://github.com/emmett-framework/granian/releases)
- [Commits](https://github.com/emmett-framework/granian/compare/v2.5.4...v2.5.5)

---
updated-dependencies:
- dependency-name: granian
  dependency-version: 2.5.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: certifi
  dependency-version: 2025.10.5
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: tomli
  dependency-version: 2.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: pylint
  dependency-version: 3.3.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: wlc
  dependency-version: 1.16.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: granian[reload]
  dependency-version: 2.5.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
2025-10-10 09:09:57 +02:00
Markus Heiser
954f0f62b4 [fix] startpage engine - SafeSearch works in reverse (#5290)
The Name of the option is *disable_family_filter* ->  we have to reverse the
meaning of the ascending safe-search filter level.

Closes: https://github.com/searxng/searxng/issues/5287

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-09 16:06:46 +02:00
Markus Heiser
898fbe7bc2 [mod] ci: add cp3.14 (part 2)
Use stable version (remove `-dev` suffix).
Stop CI on error [1] / Don't ignore when 3.14 ends with ERROR.

[1] https://github.com/searxng/searxng/pull/5217

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-08 13:47:22 +02:00
Markus Heiser
d16283d93a [fix:py3.14] using a non-empty mutable collection as default is unsafe
Starting with Python 3.14 msgspec reports::

    File "/share/searxng/searx/weather.py", line 261, in <module>
        class Temperature(msgspec.Struct, kw_only=True):
        ...<60 lines>...
                return template.format(value=val_str, unit=unit)
    TypeError: Using a non-empty mutable collection (['°C', '°F', 'K']) \
               as a default value is unsafe.\
               Instead configure a `default_factory` for this field.

The problem is solved by the fact that there are now global constants for the
units (BTW singular/plural names of the type definitions are fixed):

- TEMPERATURE_UNITS
- PRESSURE_UNITS
- WIND_SPEED_UNITS
- RELATIVE_HUMIDITY_UNITS
- COMPASS_POINTS
- COMPASS_UNITS

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-08 13:47:22 +02:00
Markus Heiser
8fdc59a760 [fix:py3.14] Struct fields aren't discovered in Python 3.14
This is a temporary workaround for #5284 [1].  However, the problem must be
solved at a different level, in msgspec [2].

[1] https://github.com/searxng/searxng/issues/5284
[2] https://github.com/jcrist/msgspec/issues/847

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-08 13:47:22 +02:00
Markus Heiser
d8d5de4d47 [fix] google scholar - detect CAPTCHA (HTTP redirects) (#5268)
In the case of .. response, for example, an HTTP 302 is returned by Google
Scholar::

    Our systems have detected unusual traffic from your computer
    network. Please try again later.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-06 10:12:38 +02:00
Markus Heiser
34eb32f418 [fix] ModuleNotFoundError: No module named 'lxml' (#5254)
When installing SearXNG (e.g.):

    pip install --use-pep517 --no-build-isolation -e .

An import exception is raised:

    ModuleNotFoundError: No module named 'lxml'

The ``setup.py`` file imports ``searx``, which in turn triggers various other
imports.  However, the name XPath is only needed for type checking.

Closes: https://github.com/searxng/searxng/issues/5177

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-05 11:44:13 +02:00
dependabot[bot]
7bf65d68c2 [upd] pypi: Bump the minor group with 2 updates (#5274)
Bumps the minor group with 2 updates: [selenium](https://github.com/SeleniumHQ/Selenium) and [basedpyright](https://github.com/detachhead/basedpyright).


Updates `selenium` from 4.35.0 to 4.36.0
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.35.0...selenium-4.36.0)

Updates `basedpyright` from 1.31.5 to 1.31.6
- [Release notes](https://github.com/detachhead/basedpyright/releases)
- [Commits](https://github.com/detachhead/basedpyright/compare/v1.31.5...v1.31.6)

---
updated-dependencies:
- dependency-name: selenium
  dependency-version: 4.36.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: basedpyright
  dependency-version: 1.31.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
2025-10-04 18:07:44 +02:00
dependabot[bot]
e0b680853d [upd] web-client (simple): Bump the minor group (#5277)
Bumps the minor group in /client/simple with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) | `2.2.4` | `2.2.5` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `24.5.2` | `24.6.2` |
| [browserslist](https://github.com/browserslist/browserslist) | `4.26.2` | `4.26.3` |
| [lightningcss](https://github.com/parcel-bundler/lightningcss) | `1.30.1` | `1.30.2` |
| [typescript](https://github.com/microsoft/TypeScript) | `5.9.2` | `5.9.3` |

Updates `@biomejs/biome` from 2.2.4 to 2.2.5
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.2.5/packages/@biomejs/biome)

Updates `@types/node` from 24.5.2 to 24.6.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `browserslist` from 4.26.2 to 4.26.3
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.26.2...4.26.3)

Updates `lightningcss` from 1.30.1 to 1.30.2
- [Release notes](https://github.com/parcel-bundler/lightningcss/releases)
- [Commits](https://github.com/parcel-bundler/lightningcss/compare/v1.30.1...v1.30.2)

Updates `typescript` from 5.9.2 to 5.9.3
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release-publish.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.9.2...v5.9.3)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.2.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: "@types/node"
  dependency-version: 24.6.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: browserslist
  dependency-version: 4.26.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: lightningcss
  dependency-version: 1.30.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: typescript
  dependency-version: 5.9.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-04 14:22:51 +02:00
github-actions[bot]
cdf5f4343a [l10n] update translations from Weblate (#5278)
9e090cc25 - 2025-10-01 - Ricky-Tigg <ricky-tigg@noreply.codeberg.org>

Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-10-03 10:14:21 +02:00
dependabot[bot]
3c63d346d9 [upd] github-actions: Bump github/codeql-action from 3.30.4 to 3.30.6 (#5276)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.4 to 3.30.6.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](303c0aef88...64d10c1313)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.30.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-03 09:46:04 +02:00
dependabot[bot]
43a5129a1c [upd] github-actions: Bump docker/login-action from 3.5.0 to 3.6.0 (#5275)
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.5.0 to 3.6.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](184bdaa072...5e57cd1181)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 3.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-03 09:45:15 +02:00
Markus Heiser
c6f1ea12b1 [fix] engine - cppreference has no longer a search function (#5273)
cppreference has replaced its search (``mwiki/index.php?title=``) with a DDG
search.

The engine was first introduced in SearXNG with PR-3274 [1], and even back then
the mediawiki proved to be incompatible, which is why the API could not be used
at the time. Now there isn't even a dedicated search function anymore.. I think
the cppreference project suffers from a lack of maintenance.

[1] https://github.com/searxng/searxng/pull/3247

Closes: https://github.com/searxng/searxng/issues/5271

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-03 08:40:24 +02:00
Markus Heiser
06e4f4f758 [mod] drop searxng_extra/standalone_searx.py (#5256)
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-10-01 07:34:53 +02:00
Markus Heiser
748b521ac6 [fix] searx/results.py - TypeError: object of type 'NoneType' has no len()
In some engines, under certain circumstances, the content field can also have
the value ``None``; in these cases, a length check results in an exception::

    File "/usr/local/searxng/searx/results.py", line 360, in merge_two_main_results
        if len(other.content) > len(origin.content):
           ^^^^^^^^^^^^^^^^^^
    TypeError: object of type 'NoneType' has no len()

[1] https://github.com/searxng/searxng/issues/5250#issuecomment-3352863488

Reported-by: @scross01 [1]
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-01 07:13:10 +02:00
Markus Heiser
e16b6cb148 [fix] JSON format: serialization of the result-types
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-10-01 07:13:10 +02:00
Ivan Gabaldon
41e0f2abf0 [doc] dev - cleanup asdf remnants and add a note about mise-en-place (#5264)
Notes on the developer environment with MISE have been added to the Quickstart
Guide.  We migrated `.tool-versions` to replace it with `mise` [1], so we can
now remove `asdf` related documentation.

[1] https://github.com/searxng/searxng/pull/5253

Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2025-10-01 06:29:07 +02:00
searxng-bot
0f3ef5da59 [data] update searx.data - update_engine_traits.py 2025-09-30 16:48:59 +02:00
Markus Heiser
defd4d87c4 [fix] fetch traits, even for inactive instances
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-30 16:48:59 +02:00
Ivan Gabaldon
ebc61debf9 [fix] ci: missing container (#5263)
This workflow is no longer needed.
2025-09-29 15:15:54 +02:00
github-actions[bot]
77fd3ee534 [data] update searx.data - update_currencies.py (#5261)
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-09-29 07:37:30 +02:00
github-actions[bot]
b8e60542d9 [data] update searx.data - update_engine_descriptions.py (#5262)
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-09-29 07:36:51 +02:00
github-actions[bot]
5513549adc [data] update searx.data - update_wikidata_units.py (#5259)
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-09-29 07:35:10 +02:00
github-actions[bot]
cd2ea7c5f5 [data] update searx.data - update_ahmia_blacklist.py (#5257)
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-09-29 07:34:38 +02:00
searxng-bot
38b80133f7 [data] update searx.data - update_firefox_version.py 2025-09-29 07:33:19 +02:00
Markus Heiser
2f0d96b8bc [fix] sqlitedb: DB connector -- unset isolation_level
A Connection object can be used as a context manager that automatically commits
or rolls back open transactions when leaving the body of the context manager.

If the connection attribute ``isolation_level`` is **not** ``None``, new
transactions are implicitly opened before ``execute()`` and ``executemany()``
executes SQL- INSERT, UPDATE, DELETE, or REPLACE statements [1].

The old implementation set ``isolation_level`` to ``None`` and thereby prevented
the context manager from opening and closing the transaction scopes.

[1] https://docs.python.org/3/library/sqlite3.html#sqlite3-transaction-control-isolation-level
[2] https://github.com/searxng/searxng/pull/5239#discussion_r2381416731

Reported-by: Ivan G <igabaldon@inetol.net> [2]
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-28 07:32:41 +02:00
Markus Heiser
18a58943cc [mod] ExpireCacheSQLite - implement .setmany() for bulk loading
[1] https://github.com/searxng/searxng/issues/5223#issuecomment-3328597147

Suggested-by: Ivan G <igabaldon@inetol.net> [1]
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-28 07:32:41 +02:00
Markus Heiser
4f4de3fc87 [fix] openstreetmap: fix CURRENCIES.iso4217_to_name
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-28 07:32:41 +02:00
Markus Heiser
4445f26f5a [mod] run bootload of the CURRENCIES cache on demand
In [1] it can be seen that the bootload of the CURRENCIES cache takes about 2/3
of the time required to initialize SearXNG.  Whatever the absolute durations may
be, an explicit bootload during the SearXNG initialization is not required, as
the bootload is already ensured by the API of the CACHE.

- ``CurrenciesDB.name_to_iso4217``
- ``CurrenciesDB.iso4217_to_name``

The fact that the bootload now occurs on-demand should improve the
initialization time of SearXNG.

[1] https://github.com/searxng/searxng/issues/5223#issuecomment-3323083411

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-28 07:32:41 +02:00
Markus Heiser
62b0b3f697 [mod] debug-log the bootload of the CURRENCIES caches (CurrenciesDB)
The time for the bootload is measured and recorded.  To have an eye on the
bootload time is motivated by: In [1] it can be seen that the bootload of the
CURRENCIES cache takes about 2/3 of the time required to initialize SearXNG::

    6.068 <module>  searx/webapp.py:1
    └─ 6.068 wrapper  pyinstrument/context_manager.py:52
       ├─ 5.538 init  searx/webapp.py:1373
       │  ├─ 4.822 initialize  searx/search/__init__.py:34
       │  │  ├─ 4.631 ProcessorMap.init  searx/search/processors/__init__.py:47
       │  │  │  ├─ 4.607 OnlineCurrencyProcessor.initialize  searx/search/processors/online_currency.py:55
       │  │  │  │  └─ 4.607 CurrenciesDB.init  searx/data/currencies.py:25
       │  │  │  │     ├─ 4.601 CurrenciesDB.load  searx/data/currencies.py:34
       │  │  │  │     │  ├─ 4.572 ExpireCacheSQLite.set  searx/cache.py:334

In the example, the CurrenciesDB.init call takes 4.6 seconds... on my laptop,
CurrenciesDB.init takes only 0.7 seconds.  The absolute numerical values depend
on external conditions, where I already find 4-5 seconds very long. Test::

    $ rm /tmp/sxng_cache_*.db*
    $ make run 2>&1 | grep "searx.data.CURRENCIES"
    DEBUG   searx.data : init searx.data.CURRENCIES
    DEBUG   searx.data : init searx.data.CURRENCIES added 9089 items in 0.7623255252838135 sec.

[1] https://github.com/searxng/searxng/issues/5223#issuecomment-3323083411

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-28 07:32:41 +02:00
Markus Heiser
87bc97776a [mod] pin external developer tools (mise en place) (#5253)
Mise en place config [1] does no longer support ``.tool-versions``
compatibility syntax, migrate to TOML ``mise.toml``.

In ``utils/lib_sxng_node.sh`` the node version was not updated, update to
24.3.0 (compare ``mise.toml``).

[1] https://mise.jdx.dev/configuration.html

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-27 07:18:50 +02:00
Markus Heiser
77068ce20b [upd] pypi: Bump sphinx from 7.4.7 to 8.2.3 (#5252)
- supersede: https://github.com/searxng/searxng/pull/4377

Sphinx 8.2 dropped Python 3.10 support, last versions supporting Python 3.10:

- Sphinx==8.1.3
- sphinx-autobuild==2024.10.3

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-26 16:57:01 +02:00
Markus Heiser
81cbe0befe [upd] pypi: Bump black from 24.3.0 to 25.9.0 (#5251)
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-26 12:35:57 +02:00
dependabot[bot]
1091643f32 [upd] github-actions: Bump actions/cache from 4.2.4 to 4.3.0 (#5249)
Bumps [actions/cache](https://github.com/actions/cache) from 4.2.4 to 4.3.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](0400d5f644...0057852bfa)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 10:46:19 +02:00
dependabot[bot]
899ae9a6e4 [upd] pypi: Bump myst-parser from 3.0.1 to 4.0.0 (#3719)
Bumps [myst-parser](https://github.com/executablebooks/MyST-Parser) from 3.0.1 to 4.0.0.
- [Release notes](https://github.com/executablebooks/MyST-Parser/releases)
- [Changelog](https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/executablebooks/MyST-Parser/compare/v3.0.1...v4.0.0)

---
updated-dependencies:
- dependency-name: myst-parser
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 10:32:01 +02:00
dependabot[bot]
454f95a661 [upd] github-actions: Bump snok/container-retention-policy (#5248)
Bumps [snok/container-retention-policy](https://github.com/snok/container-retention-policy) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/snok/container-retention-policy/releases)
- [Commits](4f22ef8090...3b0972b227)

---
updated-dependencies:
- dependency-name: snok/container-retention-policy
  dependency-version: 3.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 10:03:19 +02:00
dependabot[bot]
a9ae0163ad [upd] github-actions: Bump github/codeql-action from 3.30.3 to 3.30.4 (#5247)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.3 to 3.30.4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](192325c861...303c0aef88)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.30.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 10:01:01 +02:00
dependabot[bot]
2a759f18da [upd] pypi: Bump the minor group with 4 updates (#5246)
Bumps the minor group with 4 updates: [lxml](https://github.com/lxml/lxml), [pyyaml](https://github.com/yaml/pyyaml), [typer-slim](https://github.com/fastapi/typer) and [basedpyright](https://github.com/detachhead/basedpyright).


Updates `lxml` from 6.0.1 to 6.0.2
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-6.0.1...lxml-6.0.2)

Updates `pyyaml` from 6.0.2 to 6.0.3
- [Release notes](https://github.com/yaml/pyyaml/releases)
- [Changelog](https://github.com/yaml/pyyaml/blob/6.0.3/CHANGES)
- [Commits](https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3)

Updates `typer-slim` from 0.17.4 to 0.19.2
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](https://github.com/fastapi/typer/compare/0.17.4...0.19.2)

Updates `basedpyright` from 1.31.4 to 1.31.5
- [Release notes](https://github.com/detachhead/basedpyright/releases)
- [Commits](https://github.com/detachhead/basedpyright/compare/v1.31.4...v1.31.5)
2025-09-26 09:56:32 +02:00
Markus Heiser
7322b07df6 [fix] ProcessorMap: fix error log, not enough arguments for format string (#5241)
Issue was introduced by PR-5204 [1]

reported issue::

    logger.error("init method of engine %s failed (%s).", eng_proc.engine.name)
    TypeError: not enough arguments for format string

[1] https://github.com/searxng/searxng/pull/5204

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-25 08:24:02 +02:00
Markus Heiser
4f4587650c [build] /static 2025-09-25 06:34:19 +02:00
Markus Heiser
8f854540a9 [fix] simple client: move code.less to result_types/code.less
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-25 06:34:19 +02:00
Ivan Gabaldon
3bf702447b [enh] container: custom certificates (#5238)
Let container instance administrators to add custom certificates:

  https://docs.searxng.org/admin/installation-docker.html#custom-certificates

Closes https://github.com/searxng/searxng/issues/5206
2025-09-23 21:57:29 +02:00
Ivan Gabaldon
d2e2802514 [fix] utils: variable expansion (#5237)
Docker buildx outputs the following error:

  variable expansion is not supported for --from, define a new stage with FROM
  using ARG from global scope as a workaround.

Also force BuildKit extension to be installed, legacy build is no longer
supported.

Closes https://github.com/searxng/searxng/issues/5219
2025-09-23 20:34:28 +02:00
Ivan Gabaldon
a57b29b009 [enh] container: compact venv (#5225)
We can leverage the immutable nature of containers to add additional
optimizations.

No debugging or tinkering inside containers, so stripping all unused symbols
inside `venv` should be fine. We are also going to compile the bytecode
ourselves to modify some parameters related to reproducibility.

With these small changes, we have reduced the `venv` layer size by 10MB~
2025-09-23 09:50:42 +02:00
Ivan Gabaldon
b7ecc1c240 [enh] container: reproducible layers (#5222)
* [enh] container: reproducible layers

We are not aiming for reproducibility compliance, but we look to make most
builder layers reproducible without caching at least for a short period of time
(until the builder's base image changes or the child dependencies of a
requirements.txt package are updated).

This feature is only available on Podman.

This targets https://github.com/searxng/searxng/pull/5086 main goal.

* [fix] misc: apply suggestions

Suggested: https://github.com/searxng/searxng/pull/5222#discussion_r2364630496
Suggested: https://github.com/searxng/searxng/pull/5222#discussion_r2364630511

* [enh] container: prevent useless layer
2025-09-20 11:33:23 +02:00
Ivan Gabaldon
164167dea0 [mod] py: remove uvloop (#5220)
We get some good stuff without uvloop, 13MB~ less of dependencies, 3
minutes of build time for armv7 saved, and we are one step closer to NT
compatibility. Although it's true that theoretically the raw performance
have worsened on network side (we only used uvloop for that), the latest
cpython versions have been improving on asyncio performance.
2025-09-20 11:12:34 +02:00
github-actions[bot]
b3eb7657b9 [l10n] update translations from Weblate (#5216)
a0783e1a1 - 2025-09-16 - recreationalprogamer <recreationalprogamer@noreply.codeberg.org>
130f66498 - 2025-09-13 - artnay <artnay@noreply.codeberg.org>

Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-09-20 10:57:35 +02:00
Markus Heiser
d2b4bff856 [mod] demo engines: smaller improvement
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-20 10:56:46 +02:00
Markus Heiser
1520a8d545 [mod] ADS engine: revision of the engine (Paper result)
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 10:56:46 +02:00
Markus Heiser
f8f7adce6b [mod] Z-Library engine: revision of the engine (Paper result)
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 10:56:46 +02:00
Markus Heiser
4c42704c80 [mod] Springer Nature engine: revision of the engine (Paper result)
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 10:56:46 +02:00
Markus Heiser
4b4bf0ecaf [mod] Semantic Scholar engine: revision of the engine (Paper result)
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 10:56:46 +02:00
Markus Heiser
bb22bb1831 [mod] PubMed engine: revision of the engine (Paper result)
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 10:56:46 +02:00
Markus Heiser
96e63df8ca [mod] Open Library engine: revision of the engine (Paper result)
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 10:56:46 +02:00
Markus Heiser
0691e50e13 [mod] OpenAlex engine: revision of the engine (Paper result)
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 10:56:46 +02:00
Markus Heiser
599d9488c5 [mod] Google Scholar engine: revision of the engine (Paper result)
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 10:56:46 +02:00
Markus Heiser
078c9fcb68 [mod] Crossref engine: revision of the engine (Paper result)
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 10:56:46 +02:00
Markus Heiser
3ec6d65f9b [mod] CORE engine: revision of the engine (Paper result)
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 10:56:46 +02:00
Markus Heiser
22e73727c0 [mod] Anna's Archive engine: revision of the engine (Paper result)
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 10:56:46 +02:00
Markus Heiser
6c3fb9e42b [mod] arXiv engine: revision of the engine (Paper result)
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 10:56:46 +02:00
Markus Heiser
f9b4869426 [build] /static 2025-09-20 10:56:46 +02:00
Markus Heiser
7eedd44f5f [mod] typification of SearXNG: add new result type Paper
This patch adds a new result type: Paper

- Python class:   searx/result_types/paper.py
- Jinja template: searx/templates/simple/result_templates/paper.html
- CSS (less)      client/simple/src/less/result_types/paper.less

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-20 10:56:46 +02:00
Léon Tiekötter
57ef342ad1 [fix] image proxy: object has no attribute 'status_code' (#5212)
Commit 8f8343d [1] introduced a bug in the network logic of SearXNG where stream
requests (such as the one from the image proxy) would fail because a wrapper was
returned instead of a response object with the correct attribute.

This is just a quick in place fix I implemented to get it working again. It
would be better to implement corresponding logic to give stream requests the
correct object.

[1] https://github.com/searxng/searxng/pull/5204
2025-09-20 07:54:58 +02:00
Ivan Gabaldon
0ce0d957b1 [mod] ci: add cp3.14 (#5217) 2025-09-19 19:41:32 +02:00
dependabot[bot]
a54b862f00 [upd] pypi: Bump the minor group with 3 updates (#5213)
Bumps the minor group with 3 updates: [whitenoise](https://github.com/evansd/whitenoise), [granian[reload]](https://github.com/emmett-framework/granian) and [granian](https://github.com/emmett-framework/granian).


Updates `whitenoise` from 6.10.0 to 6.11.0
- [Changelog](https://github.com/evansd/whitenoise/blob/main/docs/changelog.rst)
- [Commits](https://github.com/evansd/whitenoise/compare/6.10.0...6.11.0)

Updates `granian[reload]` from 2.5.3 to 2.5.4
- [Release notes](https://github.com/emmett-framework/granian/releases)
- [Commits](https://github.com/emmett-framework/granian/compare/v2.5.3...v2.5.4)

Updates `granian` from 2.5.3 to 2.5.4
- [Release notes](https://github.com/emmett-framework/granian/releases)
- [Commits](https://github.com/emmett-framework/granian/compare/v2.5.3...v2.5.4)

---
updated-dependencies:
- dependency-name: whitenoise
  dependency-version: 6.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: granian[reload]
  dependency-version: 2.5.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: granian
  dependency-version: 2.5.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-19 11:20:05 +02:00
dependabot[bot]
aeab5ac546 [upd] web-client (simple): Bump the minor group in /client/simple with 3 updates (#5215)
* [upd] web-client (simple): Bump the minor group

Bumps the minor group in /client/simple with 3 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [browserslist](https://github.com/browserslist/browserslist) and [sharp](https://github.com/lovell/sharp).


Updates `@types/node` from 24.3.1 to 24.5.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `browserslist` from 4.25.4 to 4.26.2
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.25.4...4.26.2)

Updates `sharp` from 0.34.3 to 0.34.4
- [Release notes](https://github.com/lovell/sharp/releases)
- [Commits](https://github.com/lovell/sharp/compare/v0.34.3...v0.34.4)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 24.5.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: browserslist
  dependency-version: 4.26.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: sharp
  dependency-version: 0.34.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* update rolldown-vite

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ivan Gabaldon <igabaldon@inetol.net>
2025-09-19 10:44:59 +02:00
Markus Heiser
09fddfde24 [mod] demo engines: smaller corrections and improvements
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-18 19:40:03 +02:00
Markus Heiser
8f8343dc0d [mod] addition of various type hints / engine processors
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-18 19:40:03 +02:00
dependabot[bot]
23257bddce [upd] pypi: Bump the minor group with 5 updates (#5200)
Bumps the minor group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.6` | `1.3.7` |
| [typer-slim](https://github.com/fastapi/typer) | `0.17.3` | `0.17.4` |
| [whitenoise](https://github.com/evansd/whitenoise) | `6.9.0` | `6.10.0` |
| [granian[reload]](https://github.com/emmett-framework/granian) | `2.5.2` | `2.5.3` |
| [granian](https://github.com/emmett-framework/granian) | `2.5.2` | `2.5.3` |


Updates `setproctitle` from 1.3.6 to 1.3.7
- [Changelog](https://github.com/dvarrazzo/py-setproctitle/blob/master/HISTORY.rst)
- [Commits](https://github.com/dvarrazzo/py-setproctitle/compare/version-1.3.6...version-1.3.7)

Updates `typer-slim` from 0.17.3 to 0.17.4
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](https://github.com/fastapi/typer/compare/0.17.3...0.17.4)

Updates `whitenoise` from 6.9.0 to 6.10.0
- [Changelog](https://github.com/evansd/whitenoise/blob/main/docs/changelog.rst)
- [Commits](https://github.com/evansd/whitenoise/compare/6.9.0...6.10.0)

Updates `granian[reload]` from 2.5.2 to 2.5.3
- [Release notes](https://github.com/emmett-framework/granian/releases)
- [Commits](https://github.com/emmett-framework/granian/compare/v2.5.2...v2.5.3)

Updates `granian` from 2.5.2 to 2.5.3
- [Release notes](https://github.com/emmett-framework/granian/releases)
- [Commits](https://github.com/emmett-framework/granian/compare/v2.5.2...v2.5.3)
2025-09-14 10:48:04 +02:00
Ivan Gabaldon
a0d2ecf434 [enh] container: build with uv (#5199)
This commit replaces `pip` in container builds with `uv` pip compat
with a 1:1 parity. The only thing that changes is the installation speed of the
wheels, which seems to be considerably faster, although I haven't been able to
properly quantify this yet.

uv also gives us more tools to manage the cache. We can revert the prior cache
changes in `container.yml` as we won't have duplicated wheels anymore.
2025-09-14 10:36:21 +02:00
dependabot[bot]
687121d584 [upd] web-client (simple): Bump the minor group in /client/simple with 2 updates (#5202)
* [upd] web-client (simple): Bump the minor group

Bumps the minor group in /client/simple with 2 updates: [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) and [stylelint](https://github.com/stylelint/stylelint).


Updates `@biomejs/biome` from 2.2.2 to 2.2.4
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.2.4/packages/@biomejs/biome)

Updates `stylelint` from 16.23.1 to 16.24.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.23.1...16.24.0)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.2.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: stylelint
  dependency-version: 16.24.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* update biome schema

* update rolldown

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ivan Gabaldon <igabaldon@inetol.net>
2025-09-12 10:59:25 +02:00
dependabot[bot]
4694ba202a [upd] github-actions: Bump github/codeql-action from 3.30.0 to 3.30.3 (#5201)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.0 to 3.30.3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](2d92b76c45...192325c861)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.30.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-12 10:15:21 +02:00
github-actions[bot]
d79ad7457f [l10n] update translations from Weblate (#5203)
2ea8fc600 - 2025-09-11 - eudemo <eudemo@noreply.codeberg.org>
169797e8b - 2025-09-10 - alexgabi <alexgabi@noreply.codeberg.org>
822f66416 - 2025-09-11 - grumpyoldtechie <grumpyoldtechie@noreply.codeberg.org>
daba8370d - 2025-09-07 - EmilyOrSomething <emilyorsomething@noreply.codeberg.org>
2025-09-12 09:53:37 +02:00
Ivan Gabaldon
7c1ebc0148 [fix] container: add musl-locales packages 2025-09-11 06:38:45 +02:00
Ivan Gabaldon
7b02369a12 [fix] container: add tzdata package
https://github.com/searxng/searxng/pull/5192
2025-09-11 06:38:45 +02:00
Markus Heiser
a9b088d832 [feat] engines yacy & piped: enable individual configuration of URLs (#5195)
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-10 12:57:36 +02:00
Markus Heiser
97ed5ef9f1 [fix] links in the README (link file in GH-UI / not the raw file) 2025-09-09 21:00:36 +02:00
Ivan Gabaldon
57b74beeea [enh] docs: update information (#5185)
README should be concise, everything else goes to CONTRIBUTING, docs
page ...
2025-09-09 20:51:22 +02:00
Austin-Olacsi
905b13aa7e [feat] naver engine: add video embeds 2025-09-09 17:04:21 +02:00
Brock Vojkovic
314924bc0e [upd] disable public domain image archive engine by default 2025-09-09 16:58:27 +08:00
dependabot[bot]
e7501eaedf [upd] pypi: Bump the minor group across 1 directory with 5 updates (#5184)
Bumps the minor group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [typer-slim](https://github.com/fastapi/typer) | `0.16.1` | `0.17.3` |
| [granian[reload]](https://github.com/emmett-framework/granian) | `2.5.1` | `2.5.2` |
| [basedpyright](https://github.com/detachhead/basedpyright) | `1.31.3` | `1.31.4` |
| [types-lxml](https://github.com/abelcheung/types-lxml) | `2025.3.30` | `2025.8.25` |
| [granian](https://github.com/emmett-framework/granian) | `2.5.1` | `2.5.2` |



Updates `typer-slim` from 0.16.1 to 0.17.3
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](https://github.com/fastapi/typer/compare/0.16.1...0.17.3)

Updates `granian[reload]` from 2.5.1 to 2.5.2
- [Release notes](https://github.com/emmett-framework/granian/releases)
- [Commits](https://github.com/emmett-framework/granian/compare/v2.5.1...v2.5.2)

Updates `basedpyright` from 1.31.3 to 1.31.4
- [Release notes](https://github.com/detachhead/basedpyright/releases)
- [Commits](https://github.com/detachhead/basedpyright/compare/v1.31.3...v1.31.4)

Updates `types-lxml` from 2025.3.30 to 2025.8.25
- [Release notes](https://github.com/abelcheung/types-lxml/releases)
- [Commits](https://github.com/abelcheung/types-lxml/compare/2025.03.30...2025.08.25)

Updates `granian` from 2.5.1 to 2.5.2
- [Release notes](https://github.com/emmett-framework/granian/releases)
- [Commits](https://github.com/emmett-framework/granian/compare/v2.5.1...v2.5.2)
2025-09-05 13:23:01 +02:00
dependabot[bot]
25953fa32e [upd] github-actions: Bump actions/setup-python from 5.6.0 to 6.0.0 (#5181)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.6.0 to 6.0.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](a26af69be9...e797f83bcb)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-05 11:42:40 +02:00
dependabot[bot]
a966e10bf5 [upd] web-client (simple): Bump the minor group in /client/simple with 2 updates (#5179)
* [upd] web-client (simple): Bump the minor group

Bumps the minor group in /client/simple with 2 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) and [vite-bundle-analyzer](https://github.com/nonzzz/vite-bundle-analyzer).


Updates `@types/node` from 24.3.0 to 24.3.1
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `vite-bundle-analyzer` from 1.2.2 to 1.2.3
- [Release notes](https://github.com/nonzzz/vite-bundle-analyzer/releases)
- [Changelog](https://github.com/nonzzz/vite-bundle-analyzer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nonzzz/vite-bundle-analyzer/compare/v1.2.2...v1.2.3)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 24.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: vite-bundle-analyzer
  dependency-version: 1.2.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* update rolldown-vite

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ivan Gabaldon <igabaldon@inetol.net>
2025-09-05 11:38:54 +02:00
dependabot[bot]
d4173f129f [upd] github-actions: Bump actions/setup-node from 4.4.0 to 5.0.0 (#5180)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.4.0 to 5.0.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](49933ea528...a0853c2454)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-05 11:13:40 +02:00
dependabot[bot]
02473b68df [upd] github-actions: Bump github/codeql-action from 3.29.11 to 3.30.0 (#5182)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.11 to 3.30.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](3c3833e0f8...2d92b76c45)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.30.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-05 11:11:04 +02:00
github-actions[bot]
5a0caf2663 [l10n] update translations from Weblate (#5183)
8b8b8007b - 2025-09-03 - choonarine <choonarine@noreply.codeberg.org>
2853b3d20 - 2025-09-03 - pywc <pywc@noreply.codeberg.org>
d5a641cda - 2025-09-02 - choonarine <choonarine@noreply.codeberg.org>
270a2efa1 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
356889a32 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
8623e089f - 2025-09-01 - Outbreak2096 <outbreak2096@noreply.codeberg.org>
ea0f92a74 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
864f485f8 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
b3a8ada39 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
2f322377d - 2025-09-01 - return42 <return42@noreply.codeberg.org>
5a4e08e13 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
2099c05fb - 2025-09-01 - return42 <return42@noreply.codeberg.org>
0d4dbe2e8 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
a85407137 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
8631fa640 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
bb9d32a1a - 2025-09-01 - return42 <return42@noreply.codeberg.org>
cd7998051 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
b1cc25fdc - 2025-09-01 - return42 <return42@noreply.codeberg.org>
a822989a3 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
6820b338b - 2025-09-01 - return42 <return42@noreply.codeberg.org>
f06ff0b86 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
17c0a4870 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
e74406e3d - 2025-09-01 - return42 <return42@noreply.codeberg.org>
fb8f1077b - 2025-09-01 - return42 <return42@noreply.codeberg.org>
d14309568 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
a24a3b03a - 2025-09-01 - return42 <return42@noreply.codeberg.org>
080a57782 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
1623f6626 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
fb5177b4d - 2025-09-01 - return42 <return42@noreply.codeberg.org>
f3df8b069 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
9f317f05b - 2025-09-01 - return42 <return42@noreply.codeberg.org>
55161e8ac - 2025-09-01 - return42 <return42@noreply.codeberg.org>
0ac1c3f8f - 2025-09-01 - return42 <return42@noreply.codeberg.org>
c905ec37d - 2025-09-01 - return42 <return42@noreply.codeberg.org>
176dc7ea3 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
b2760ff5f - 2025-09-01 - return42 <return42@noreply.codeberg.org>
9759e2dc2 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
0e5d0c729 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
3ac66987f - 2025-09-01 - return42 <return42@noreply.codeberg.org>
e3d7caf59 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
48b2f1261 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
17d1a44bd - 2025-09-01 - return42 <return42@noreply.codeberg.org>
ed29ae1a3 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
a385f79e8 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
e1bb2681a - 2025-09-01 - return42 <return42@noreply.codeberg.org>
be70384be - 2025-09-01 - return42 <return42@noreply.codeberg.org>
87770e507 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
9d31b74f7 - 2025-09-01 - return42 <return42@noreply.codeberg.org>
2025-09-05 11:09:02 +02:00
Markus Heiser
f91c998aa0 [docs] fix some typos in the description of result class Code (#5174)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-03 14:53:01 +02:00
Markus Heiser
f24d85bc4b [mod] drop: from __future__ import annotations
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-03 13:37:36 +02:00
Markus Heiser
57b9673efb [mod] addition of various type hints / tbc
- 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 13:37:36 +02:00
Butui Hu
09500459fe [fix} engine chinaso - parse_images ImageInfo key error (#5175)
Signed-off-by: Butui Hu <hot123tea123@gmail.com>
2025-09-03 05:59:18 +02:00
Bnyro
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
Markus Heiser
501327ddf1 [fix] engine: searchcode.com is offline (inactive) (#5170)
Searchcode.com is offline, and its future is still uncertain [1], so the engine
will be deactivated for the time being. If Searchcode.com doesn't come back
online soon, we can remove the engine entirely.

[1] https://boyter.org/posts/searchcode-is-being-rebooted/
[2] https://github.com/searxng/searxng/pull/5131#issuecomment-3239156555


Reported-by: Bnyro <bnyro@tutanota.com> [2]

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-09-01 15:35:55 +02:00
Butui Hu
932fb22c80 [fix] chinaoso: add random uid to cookie (#5173)
Signed-off-by: Butui Hu <hot123tea123@gmail.com>
2025-09-01 15:34:17 +02:00
Markus Heiser
e5d2685d8d [build] /static 2025-09-01 14:51:15 +02:00
Markus Heiser
fb5fd8c819 [mod] simple client: pygments.less - switched dark theme to monokai
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-09-01 14:51:15 +02:00
Markus Heiser
9ac9c8c4f5 [mod] typification of SearXNG: add new result type Code
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-09-01 14:51:15 +02:00
dependabot[bot]
b8085d27ac [upd] web-client (simple): Bump the minor group in /client/simple with 3 updates (#5165)
* [upd] web-client (simple): Bump the minor group

Bumps the minor group in /client/simple with 3 updates: [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome), [browserslist](https://github.com/browserslist/browserslist) and [vite-bundle-analyzer](https://github.com/nonzzz/vite-bundle-analyzer).


Updates `@biomejs/biome` from 2.2.0 to 2.2.2
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.2.2/packages/@biomejs/biome)

Updates `browserslist` from 4.25.3 to 4.25.4
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.25.3...4.25.4)

Updates `vite-bundle-analyzer` from 1.2.1 to 1.2.2
- [Release notes](https://github.com/nonzzz/vite-bundle-analyzer/releases)
- [Changelog](https://github.com/nonzzz/vite-bundle-analyzer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nonzzz/vite-bundle-analyzer/compare/v1.2.1...v1.2.2)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.2.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: browserslist
  dependency-version: 4.25.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: vite-bundle-analyzer
  dependency-version: 1.2.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* [upd] simple client: lift biomejs schemas up to version 2.2.2

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2025-08-29 10:22:25 +02:00
dependabot[bot]
31322a49b6 [upd] pypi: Bump the minor group with 3 updates (#5166)
Bumps the minor group with 3 updates: [lxml](https://github.com/lxml/lxml), [granian[reload]](https://github.com/emmett-framework/granian) and [granian](https://github.com/emmett-framework/granian).


Updates `lxml` from 6.0.0 to 6.0.1
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-6.0.0...lxml-6.0.1)

Updates `granian[reload]` from 2.5.0 to 2.5.1
- [Release notes](https://github.com/emmett-framework/granian/releases)
- [Commits](https://github.com/emmett-framework/granian/compare/v2.5.0...v2.5.1)

Updates `granian` from 2.5.0 to 2.5.1
- [Release notes](https://github.com/emmett-framework/granian/releases)
- [Commits](https://github.com/emmett-framework/granian/compare/v2.5.0...v2.5.1)
2025-08-29 09:13:44 +02:00
github-actions[bot]
7e353f74f7 [l10n] update translations from Weblate (#5168)
87a404001 - 2025-08-28 - hhadi34 <hhadi34@noreply.codeberg.org>
86cd8cd7a - 2025-08-29 - lucasmz.dev <lucasmz.dev@noreply.codeberg.org>
7488333e6 - 2025-08-29 - ghose <ghose@noreply.codeberg.org>
d03da377c - 2025-08-29 - return42 <return42@noreply.codeberg.org>
c63fa5248 - 2025-08-28 - kratos <makesocialfoss32@keemail.me>
db35c0bfe - 2025-08-28 - Artiman <artiman@noreply.codeberg.org>
13028fa72 - 2025-08-28 - return42 <return42@noreply.codeberg.org>
d984f1cef - 2025-08-28 - return42 <return42@noreply.codeberg.org>
4ec477015 - 2025-08-28 - SomeTr <sometr@noreply.codeberg.org>
a74603ff8 - 2025-08-28 - sprinklerillicitly <sprinklerillicitly@noreply.codeberg.org>
2025-08-29 09:12:35 +02:00
github-actions[bot]
fde4fac3ca [data] update searx.data - update_external_bangs.py (#5158) 2025-08-29 07:07:46 +02:00
github-actions[bot]
a9263fd063 [data] update searx.data - update_wikidata_units.py (#5159) 2025-08-29 07:07:00 +02:00
github-actions[bot]
146cefe7fa [data] update searx.data - update_firefox_version.py (#5160) 2025-08-29 07:05:08 +02:00
github-actions[bot]
2a7d26b714 [data] update searx.data - update_ahmia_blacklist.py (#5161) 2025-08-29 07:04:41 +02:00
github-actions[bot]
480914d736 [data] update searx.data - update_currencies.py (#5162) 2025-08-29 07:04:12 +02:00
github-actions[bot]
edc50768cc [data] update searx.data - update_engine_traits.py (#5163) 2025-08-29 07:03:29 +02:00
github-actions[bot]
a519a13bfa [data] update searx.data - update_engine_descriptions.py (#5164) 2025-08-29 07:02:31 +02:00
Bnyro
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
Bnyro
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
Markus Heiser
90e602b349 [fix] typo in the docs about HTML method POST versus GET 2025-08-27 10:17:24 +02:00
Markus Heiser
71f90755c4 [doc] fix missing link in `default_http_headers` description
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Format: reST
2025-08-26 08:20:56 +02:00
Markus Heiser
92463ce6a7 [doc] adds the missing documentation of the server.method settings.
TL;DR; For all the issues that comes with HTTP POST I recommend instance
maintainers to switch to GET and lock the property in the preferences:

```yaml
server:
  method: GET

preferences:
  lock:
    - method
```

We don't want this in the defaults of the SearXNG distributions for the pros vs
cons listed in this discussion:

- https://github.com/searxng/searxng/pull/3619
2025-08-26 08:20:56 +02:00
Markus Heiser
a369fe8f29 [mod] py3.9 EOL (#5148)
[1] https://devguide.python.org/versions/
[2] https://peps.python.org/pep-0596/

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-08-26 07:46:20 +02:00
muthukumaran R
a0ff173799 [feat] engines: add OpenAlex Works engine (#5102)
- 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-24 14:17:30 +02:00
dependabot[bot]
11ea1a8134 [upd] web-client (simple): Bump the minor group (#5144)
Bumps the minor group in /client/simple with 2 updates: [browserslist](https://github.com/browserslist/browserslist) and [less](https://github.com/less/less.js).


Updates `browserslist` from 4.25.2 to 4.25.3
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.25.2...4.25.3)

Updates `less` from 4.4.0 to 4.4.1
- [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: browserslist
  dependency-version: 4.25.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: less
  dependency-version: 4.4.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-22 10:04:37 +02:00
dependabot[bot]
e22ebd8817 [upd] github-actions: Bump github/codeql-action from 3.29.9 to 3.29.11 (#5143)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.9 to 3.29.11.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](df559355d5...3c3833e0f8)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.29.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-22 10:01:53 +02:00
dependabot[bot]
d8048dc75b [upd] pypi: Bump the minor group with 4 updates (#5142)
Bumps the minor group with 4 updates: [flask](https://github.com/pallets/flask), [typer-slim](https://github.com/fastapi/typer), [pylint](https://github.com/pylint-dev/pylint) and [basedpyright](https://github.com/detachhead/basedpyright).


Updates `flask` from 3.1.1 to 3.1.2
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/3.1.1...3.1.2)

Updates `typer-slim` from 0.16.0 to 0.16.1
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](https://github.com/fastapi/typer/compare/0.16.0...0.16.1)

Updates `pylint` from 3.3.7 to 3.3.8
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.3.7...v3.3.8)

Updates `basedpyright` from 1.31.0 to 1.31.3
- [Release notes](https://github.com/detachhead/basedpyright/releases)
- [Commits](https://github.com/detachhead/basedpyright/compare/v1.31.0...v1.31.3)
2025-08-22 09:53:26 +02:00
github-actions[bot]
b1e461eb4b [l10n] update translations from Weblate (#5141)
a4922b114 - 2025-08-21 - KOUSTAV <koustav@noreply.codeberg.org>
3f61bddd1 - 2025-08-18 - reis2724 <reis2724@noreply.codeberg.org>
7313a683d - 2025-08-19 - Kemystra <kemystra@noreply.codeberg.org>
92e1bce48 - 2025-08-19 - Artiman <artiman@noreply.codeberg.org>
0f27c1bc2 - 2025-08-18 - youtherthyf <youtherthyf@noreply.codeberg.org>
60496bc76 - 2025-08-16 - alexgabi <alexgabi@noreply.codeberg.org>
742982d00 - 2025-08-15 - lucasmz.dev <lucasmz.dev@noreply.codeberg.org>
2025-08-22 09:51:03 +02:00
Markus Heiser
cfb6649b90 [build] /static 2025-08-21 14:04:13 +02:00
Amit Katyal
5ca70ca17e [feat] client/simple: move cursor to end of search input on mobile
On mobile devices, when the search input is focused, move the cursor
to the end of the existing text. This improves the user experience by
making it easier to edit or append to the current query without
manually moving the cursor first.

Closes: https://github.com/searxng/searxng/issues/5112
2025-08-21 14:04:13 +02:00
Markus Heiser
22c2c93274 [build] /static 2025-08-21 09:07:08 +02:00
Markus Heiser
d2b3c92e81 [fix] move initial "JS is enabled?" (no-js) to client side
To avoid an `unsafe-inline` in the CSP header, the JS code must be moved to the
client side [1].

The `<script>` tag at the end of the HTML originates from the old implementation
of the JS client. Since PR-5073 [2] was merged, the `type` is now `module`, and
the tag must be moved to the beginning of the HTML.

> We need to inline this "JS is enabled?" thing to prevent layout shifts and
> temporary "no JS enabled" visuals as ESM scripts loads and evals everything
> deferred from initial DOM render [3]

That's true in theory, but in practice, this effect is unnoticeable because it's
masked by another effect (which we can't avoid): If we load the page with a
severely throttled connection, the HTML (result list) takes a long time to
load. Then the CSS is loaded, which also takes longer. Until the CSS has loaded,
there's no layout. A layout shift is therefore largely determined by the loading
of the HTML and CSS itself.

The running times of the ESM script can be neglected compared to the loading
times of HTML & CSS.

[1] https://github.com/searxng/searxng-docker/pull/424#issuecomment-3199494256
[2] https://github.com/searxng/searxng/pull/5073
[3] https://github.com/searxng/searxng-docker/pull/424#issuecomment-3199622504
2025-08-21 09:07:08 +02:00
Ivan Gabaldon
41a4a3e224 [fix] template: safesearch uses the wrong type (#5136)
This fixes a regression from
60bd8b9#diff-1b714182564ef1fa942ff81b28f9ba3365ab76f75346f4255398bf9d6064b4cc

Closes https://github.com/searxng/searxng/issues/5135
2025-08-20 18:04:13 +02:00
Bnyro
3649917ce6 [fix] webapp: safesearch uses wrong default value (#5134)
- this fixes a regression from 60bd8b90f0 (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
Filip Mikina
6b57705e50 [feat] engines: add GitHub Code Search engine (#5074)
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-20 07:35:31 +02:00
Markus Heiser
25647c20d1 [mod] switching from pyright to basedpyright (plus first rules)
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-19 12:04:35 +02:00
dependabot[bot]
9bb04e288d [upd] web-client (simple): Bump the minor group across 1 directory with 6 updates (#5128)
* [upd] web-client (simple): Bump the minor group across 1 directory with 6 updates

Bumps the minor group with 6 updates in the /client/simple directory:

| Package | From | To |
| --- | --- | --- |
| [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) | `2.1.3` | `2.2.0` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `24.2.0` | `24.3.0` |
| [browserslist](https://github.com/browserslist/browserslist) | `4.25.1` | `4.25.2` |
| [edge.js](https://github.com/edge-js/edge) | `6.2.1` | `6.3.0` |
| [stylelint](https://github.com/stylelint/stylelint) | `16.23.0` | `16.23.1` |
| [vite-bundle-analyzer](https://github.com/nonzzz/vite-bundle-analyzer) | `1.1.0` | `1.2.1` |



Updates `@biomejs/biome` from 2.1.3 to 2.2.0
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.2.0/packages/@biomejs/biome)

Updates `@types/node` from 24.2.0 to 24.3.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `browserslist` from 4.25.1 to 4.25.2
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.25.1...4.25.2)

Updates `edge.js` from 6.2.1 to 6.3.0
- [Release notes](https://github.com/edge-js/edge/releases)
- [Changelog](https://github.com/edge-js/edge/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/edge-js/edge/compare/v6.2.1...v6.3.0)

Updates `stylelint` from 16.23.0 to 16.23.1
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.23.0...16.23.1)

Updates `vite-bundle-analyzer` from 1.1.0 to 1.2.1
- [Release notes](https://github.com/nonzzz/vite-bundle-analyzer/releases)
- [Changelog](https://github.com/nonzzz/vite-bundle-analyzer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nonzzz/vite-bundle-analyzer/compare/v1.1.0...v1.2.1)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: "@types/node"
  dependency-version: 24.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: browserslist
  dependency-version: 4.25.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: edge.js
  dependency-version: 6.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: stylelint
  dependency-version: 16.23.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: vite-bundle-analyzer
  dependency-version: 1.2.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* [fix] themes/simple: recreate lock

* [fix] themes/simple: promote from nursery

- noAwaitInLoop
- noBitwiseOperators
- noConstantBinaryExpression
- noGlobalDirnameFilename
- noImplicitCoercion
- noUnassignedVariables
- noUselessBackrefInRegex
- noUselessEscapeInString
- useAdjacentGetterSetter
- useConsistentObjectDefinition
- useConsistentResponse
- useIndexOf
- useIterableCallbackReturn
- useJsonImportAttribute
- useNumericSeparators
- useObjectSpread
- useParseIntRadix
- useReadonlyClassProperties
- useSingleJsDocAsterisk
- useUnifiedTypeSignature

* [fix] themes/simple: build static

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ivan Gabaldon <igabaldon@inetol.net>
2025-08-18 23:17:50 +02:00
Ivan Gabaldon
5f364ad999 [fix] container: change mirror (#5127)
`mirrors.edge.kernel.org` has weird issues, use the official mirror and avoid
future issues.
2025-08-18 21:33:27 +02:00
dependabot[bot]
547d9dcee7 [upd] pypi: Bump the minor group across 1 directory with 2 updates (#5126)
Bumps the minor group with 2 updates in the / directory: [valkey](https://github.com/valkey-io/valkey-py) and [selenium](https://github.com/SeleniumHQ/Selenium).


Updates `valkey` from 6.1.0 to 6.1.1
- [Release notes](https://github.com/valkey-io/valkey-py/releases)
- [Commits](https://github.com/valkey-io/valkey-py/compare/v6.1.0...v6.1.1)

Updates `selenium` from 4.34.2 to 4.35.0
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits/selenium-4.35.0)

---
updated-dependencies:
- dependency-name: valkey
  dependency-version: 6.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: selenium
  dependency-version: 4.35.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-18 20:00:37 +02:00
github-actions[bot]
4304150d7f [l10n] update translations from Weblate (#5117)
b0a695592 - 2025-08-14 - zymurge <zymurge@noreply.codeberg.org>
17c30fdae - 2025-08-14 - c2qd <c2qd@noreply.codeberg.org>
a1dc25ec1 - 2025-08-12 - Kemystra <kemystra@noreply.codeberg.org>
a6c4a30e3 - 2025-08-12 - ijxp <ijxp@noreply.codeberg.org>

Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-08-18 19:42:38 +02:00
Markus Heiser
9b4ea64429 [build] /static 2025-08-18 16:38:32 +02:00
Markus Heiser
4e586a7eca [fix] add missing nvm environment to the "./manage dev.env" command 2025-08-18 16:38:32 +02:00
Markus Heiser
48cec1fff6 [fix] drop obsolte client/simple/static/ 2025-08-18 16:38:32 +02:00
Markus Heiser
34e993a854 [license] client/simple: SPDX-License-Identifier: AGPL-3.0-or-later
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-08-18 16:38:32 +02:00
Ivan Gabaldon
60bd8b90f0 [enh] theme/simple: custom router
Lay the foundation for loading scripts granularly depending on the endpoint it's
on.

Remove vendor specific prefixes as there are now managed by browserslist and
LightningCSS.

Enabled quite a few rules in Biome that don't come in recommended to better
catch issues and improve consistency.

Related:

- https://github.com/searxng/searxng/pull/5073#discussion_r2256037965
- https://github.com/searxng/searxng/pull/5073#discussion_r2256057100
2025-08-18 16:38:32 +02:00
Ivan Gabaldon
adc4361eb9 [fix] theme/simple: broken highlightResult
From `mod-simple-strict`
2025-08-18 16:38:32 +02:00
Ivan Gabaldon
7e1c7096ce [enh] theme/simple: package.json revision
Set minor versioning for most of the packages that iterate fast or we know won't
cause problems, and fixed versioning for the rest.

Packages going into bundles should be placed in "dependencies".

The inspection of prod bundles is necessary. Although it does not make a lot of
sense right now, it will be useful in later PR and will give us a reference to
start with.
2025-08-18 16:38:32 +02:00
Ivan Gabaldon
0b913053a7 [mod] theme/simple: migrate codebase to TypeScript
TypeScript is a superset of JavaScript, converting the entire theme to
TypeScript allows us to receive much more feedback on possible issues made in
package updates or our own typos, furthermore, it allows to transpile properly
to lower specs. This PR couldn't be done in smaller commits, a lot of work
needed to make everything *work properly*:

- A browser baseline has been set that requires minimum **Chromium 93, Firefox
  92 and Safari 15** (proper visuals/operation on older browser versions is not
  guaranteed)
- LightningCSS now handles minification and prefix creation for CSS.
- All hardcoded polyfills and support for previous browser baseline versions
  have been removed.
- Convert codebase to TypeScript.
- Convert IIFE to ESM, handling globals with IIFE is cumbersome, ESM is the
  standard for virtually any use of JS nowadays.
- Vite now builds the theme without the need for `vite-plugin-static-copy`.
- `searxng.ready` now accepts an array of conditions for the callback to be
  executed.
- Replace `leaflet` with `ol` as there were some issues with proper Vite
  bundling.
- Merged `head` with `main` script, as head was too small now.
- Add `assertElement` to properly check the existence of critical DOM elements.
- `searxng.on` renamed to `searxng.listen` with some handling improvements.
2025-08-18 16:38:32 +02:00
Markus Heiser
4fb6105d69 [fix] revision of utils.HTMLTextExtractor (#5125)
Related:

- https://github.com/searxng/searxng/pull/5073#issuecomment-3196282632
2025-08-18 16:30:51 +02:00
Ishbir Singh
b606103352 [fix] reuters: published date not parsed correctly in some cases
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-16 15:50:38 +00:00
dependabot[bot]
792ec2afea [upd] github-actions: Bump actions/checkout from 4.2.2 to 5.0.0 (#5118)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 5.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](11bd71901b...08c6903cd8)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-15 18:06:22 +02:00
dependabot[bot]
90f997c181 [upd] github-actions: Bump github/codeql-action from 3.29.6 to 3.29.9 (#5119)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.6 to 3.29.9.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](a4e1a019f5...df559355d5)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.29.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-15 18:05:43 +02:00
Zhijie He
6b1516d6ad [fix] baidu captcha detection (#5111)
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-12 15:18:46 +02:00
Markus Heiser
6cccb46f2b [fix] replace X-Scheme by X-Forwarded-Proto header (#5107)
The HTTP X-Forwarded-Proto (XFP) request header is a *de-facto* standard header
for identifying the protocol (HTTP or HTTPS) that a client used to connect to a
proxy or load balancer.[1]

The ``X-Scheme`` header was added 10 years ago, why ``X-Scheme`` was used back
then and not ``X-Forwarded-Proto``, nobody knows today / possibly because
``X-Forwarded-Proto`` wasn't a *de-facto* standard back then.

[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Forwarded-Proto
[2] https://github.com/searx/searx/commit/6ef7c3276
2025-08-10 13:05:40 +02:00
Markus Heiser
a0dd416e8a [fix] use X-Forwarded-Proto header if the URL scheme is unknown (#5106)
The HTTP X-Forwarded-Proto (XFP) request header is a de-facto standard header
for identifying the protocol (HTTP or HTTPS) that a client used to connect to a
proxy or load balancer.[1]

In our documentation[2] we recommend to set the `X-Scheme` header. This header
is not required if the `server.base_url` is set correctly.[3]

If none of these URL scheme details exist, then the header X-Forwarded-Proto is
evaluated as a third alternative.

[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Forwarded-Proto
[2] https://docs.searxng.org/admin/installation-apache.html#apache-s-searxng-site
[3] https://docs.searxng.org/admin/settings/settings_server.html

Closes: https://github.com/searxng/searxng/issues/5105
2025-08-10 11:08:57 +02:00
Markus Heiser
935f3fe332 [fix] limiter: trusted proxies doc-string (#5104) 2025-08-09 23:30:48 +02:00
Ivan Gabaldon
ce8929cabe [mod] limiter: trusted proxies (#4911)
Replaces `x_for` functionality with `trusted_proxies`. This allows defining
which IP / ranges to trust extracting the client IP address from X-Forwarded-For
and X-Real-IP headers.

We don't know if the proxy chain will give us the proper client
address (REMOTE_ADDR in the WSGI environment), so we rely on reading the headers
of the proxy before SearXNG (if there is one, in that case it must be added to
trusted_proxies) hoping it has done the proper checks. In case a proxy in the
chain does not check the client address correctly, integrity is compromised and
this should be fixed by whoever manages the proxy, not us.

Closes:

- https://github.com/searxng/searxng/issues/4940
- https://github.com/searxng/searxng/issues/4939
- https://github.com/searxng/searxng/issues/4907
- https://github.com/searxng/searxng/issues/3632
- https://github.com/searxng/searxng/issues/3191
- https://github.com/searxng/searxng/issues/1237

Related:

- https://github.com/searxng/searxng-docker/issues/386
- https://github.com/inetol-infrastructure/searxng-container/issues/81
2025-08-09 23:03:30 +02:00
Markus Heiser
341d718c7f [fix] duckduckgo weather: add type hints and fix WEATHERKIT_TO_CONDITION (#5101) 2025-08-09 12:24:19 +02:00
Markus Heiser
6172beba1a [doc] Development Quickstart: debug with the Python Debugger pdb (#5100)
Related:

- https://github.com/searxng/searxng/pull/5037#issuecomment-3166851578
2025-08-09 12:16:19 +02:00
Austin-Olacsi
cf5061dc70 [feat] engines: add Marginalia (#5087)
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-09 08:38:11 +02:00
github-actions[bot]
5e7109cd26 [l10n] update translations from Weblate (#5096)
0fbf5aa2d - 2025-08-07 - alexgabi <alexgabi@noreply.codeberg.org>
d18d3ed1c - 2025-08-07 - return42 <return42@noreply.codeberg.org>
7927a63a0 - 2025-08-06 - pikzim <pikzim@noreply.codeberg.org>
27c8b4013 - 2025-08-05 - nhthinh <nhthinh@noreply.codeberg.org>
83262e748 - 2025-08-04 - IcewindX <icewindx@noreply.codeberg.org>
2025-08-08 17:19:22 +02:00
Bnyro
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
Ivan Gabaldon
dd170964c7 [mod] ci: strict(er) exec (#5099)
All actions are pulled using the version hash, versions are handled by
dependabot, and we'll have control over which actions get updated.

Replaces Trivy scanner with Docker Scout, we have recently begun analyzing the
images there, and the action will keep us in sync about the problems on GHCS
dashboard.
2025-08-08 11:26:45 +02:00
Ivan Gabaldon
1f619248b6 [mod] ci: docker task unused (#5098)
We always use the latest versions of our base images, so this dependabot task
is unneeded.
2025-08-08 10:07:14 +02:00
dependabot[bot]
77f10f09f9 [upd] pypi: Bump certifi from 2025.7.14 to 2025.8.3 in the minor group (#5097)
Bumps the minor group with 1 update: [certifi](https://github.com/certifi/python-certifi).


Updates `certifi` from 2025.7.14 to 2025.8.3
- [Commits](https://github.com/certifi/python-certifi/compare/2025.07.14...2025.08.03)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.8.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-08 09:36:24 +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
Bnyro
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
Ivan Gabaldon
4942c9b914 [fix] ci: cache is not overwritten (#5089)
Due to current limitations of `actions/cache`, the cache cannot be overwritten.
In our case, we need to accumulate cached wheels from different architectures.
To solve this, we simply delete the key before storing the cache again.
2025-08-07 16:53:37 +02:00
Ivan Gabaldon
3de7a6da2d [enh] container: tidy builds (#5086)
Building the container currently does not work properly.
When rebuilding several times with `make container`, `version_frozen.py`
is recreated, which wouldn't be an issue if the file’s timestamp was constant.
Now, when creating `version_frozen.py`, it will have the same timestamp as the
commit when it was created. (`version_frozen.py` is moved to a dedicated layer).

Reusing "builder" cache when building "dist" could be slow
(CD reports 2 seconds, but locally I've seen it take up to 10 seconds),
so the Dockerfile is now split and we save a couple steps
by importing the "builder" image directly.

The last changes made it possible to remove the layer cache in "builder",
since the overhead is now greater than building the layers from scratch.

Until now, all "dist" layers were squashed into a single layer,
which in most cases is a good idea
(except for storage/delivery pricing/overhead), but in our case,
since we manage the entire pipeline, we can ignore this
and share layers between builds.
This means (for example) that if we change files unrelated to the container
in several consecutive commits (documentation changes), we don't have to push
the entire image to registry, but only the different layers
(`version_frozen.py` in this example).
The same applies when pulling, as only the layers that have changed
compared to the local layers will be downloaded (that's the theory,
we'll see if this works as expected or if we need to tweak something else).
2025-08-07 10:46:26 +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
Markus Heiser
2e62eb5d68 [fix] engine yummly: website were taken offline in December 2024 (#5080)
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-03 10:49:14 +02:00
Ivan Gabaldon
3d96414482 [enh] container: latest tag should be last (#5078)
With this change, the "latest" tag will be visually higher (on registry tag list). Right now, it appears under the "DOCKER_TAG" manifest tag, which can be confusing.
2025-08-01 14:51:28 +02:00
Markus Heiser
664aab0ec9 [fix] CI task "update_engine_traits.py" fails (#5069)
* [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-08-01 12:08:27 +02:00
dependabot[bot]
dcb1e20007 [upd] pypi: Bump the minor group with 2 updates (#5077)
* [upd] pypi: Bump the minor group with 2 updates

Bumps the minor group with 2 updates: [granian[reload]](https://github.com/emmett-framework/granian) and [granian](https://github.com/emmett-framework/granian).


Updates `granian[reload]` from 2.4.2 to 2.5.0
- [Release notes](https://github.com/emmett-framework/granian/releases)
- [Commits](https://github.com/emmett-framework/granian/compare/v2.4.2...v2.5.0)

Updates `granian` from 2.4.2 to 2.5.0
- [Release notes](https://github.com/emmett-framework/granian/releases)
- [Commits](https://github.com/emmett-framework/granian/compare/v2.4.2...v2.5.0)

---
updated-dependencies:
- dependency-name: granian[reload]
  dependency-version: 2.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: granian
  dependency-version: 2.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* [enh] py: use humanized duration

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ivan Gabaldon <igabaldon@inetol.net>
2025-08-01 10:55:45 +02:00
github-actions[bot]
c2d4e3c49a [l10n] update translations from Weblate (#5076)
17e9fcd68 - 2025-07-29 - musabustun <musabustun@noreply.codeberg.org>
90b302e3e - 2025-07-29 - return42 <return42@noreply.codeberg.org>
023a22292 - 2025-07-29 - return42 <return42@noreply.codeberg.org>
17d37ede6 - 2025-07-30 - gkalathas <gkalathas@noreply.codeberg.org>
3c64c165f - 2025-07-29 - return42 <return42@noreply.codeberg.org>
d8f65cdc7 - 2025-07-26 - IcewindX <icewindx@noreply.codeberg.org>
2025-08-01 10:02:49 +02:00
benpiano800
46f41d2138 [feat] statistics answerer: add the ability to calculate the range of a set 2025-07-31 20:13:24 +02:00
Markus Heiser
6b9e12e4c1 [test] calculator plugin: report the DeprecationWarning once (#5070)
Reporting the DeprecationWarning once should be sufficient when running tests.
2025-07-29 16:31:28 +02:00
github-actions[bot]
40b78ad06c [data] update searx.data - update_wikidata_units.py (#5062) 2025-07-29 07:26:01 +02:00
github-actions[bot]
db83a39544 [data] update searx.data - update_external_bangs.py (#5061) 2025-07-29 07:25:26 +02:00
github-actions[bot]
bb3bea829d [data] update searx.data - update_ahmia_blacklist.py (#5064) 2025-07-29 07:24:09 +02:00
github-actions[bot]
dc9ad0a493 [data] update searx.data - update_currencies.py (#5065) 2025-07-29 07:23:38 +02:00
github-actions[bot]
5db7b70dc7 [data] update searx.data - update_engine_descriptions.py (#5066) 2025-07-29 07:22:58 +02:00
github-actions[bot]
2ad35421d7 [data] update searx.data - update_firefox_version.py (#5063)
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-07-29 07:22:21 +02:00
Markus Heiser
f32e91e51a [fix] duckduckgo engine: logger.error / missing argument (#5057)
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-28 15:36:52 +02:00
Markus Heiser
17f2027c4f [fix] NotImplementedError raised by ResultContainer (#5058)
If the ``on_result`` handle returns False, then the ``else`` was always jumped
to, which throws the NotImplementedError exception::

    File "/usr/local/searxng/searxng-src/searx/results.py", line 99, in extend
      raise NotImplementedError(f"no handler implemented to process the result of type {result}")
    NotImplementedError: no handler implemented to process the result of type MainResult(title=...
2025-07-28 15:36:26 +02:00
Markus Heiser
8084a86784 [upd] update to gecko driver v36
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-28 12:53:26 +02:00
Markus Heiser
8c2c3430da [fix] apply shell formating / shfmt (make format.shell)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-28 12:53:26 +02:00
Markus Heiser
cd062d7349 [fix] don't install pyright twice and do some clean up
Pyright has been installed twice so far, once via `package.json` and once in the
test script via `npx --no-install`. Separating the type checks in the CI and on
the developer desktop is also not necessary.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-28 12:53:26 +02:00
Markus Heiser
67e423edb2 [enh] CI - add shell script formatter
Implement rules and functions to format shell scripts:

    $ make format.shell

or alternatively to format all source code:

    $ make format

The formatter `shfmt` reads the rules from the editorconfig[1]

  If any EditorConfig files are found, they will be used to apply formatting
  options.  If any parser or printer flags are given to the tool, no
  EditorConfig files will be used.

[1] https://github.com/patrickvane/shfmt?tab=readme-ov-file#description

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-28 12:53:26 +02:00
Markus Heiser
7ee3dc9d74 [mod] dependabot: add searxng.org/devtools from Go and Node.js
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-28 12:53:26 +02:00
Markus Heiser
cf2cc87594 [mod] create a Go project with the developer tools from Go
The `go.mod` was created by::

   $ ./manage dev.env
   (dev.env)$ go mod init searxng.org/devtools
   (dev.env)$ go get -tool mvdan.cc/sh/v3/cmd/shfmt@v3.12.0

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-28 12:53:26 +02:00
Markus Heiser
20a193f04c [mod] add Golang ecosystem to the SearXNG toolchain
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-28 12:53:26 +02:00
Markus Heiser
ae0fcf3a42 [chore] overdue maintenance of shell scripts
Removes obsolete scripts and fix various leftovers.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-28 12:53:26 +02:00
mggh0139
54a2b553f4 [fix] tracker pattern: let startup continue if url fetch fails (#5055)
Use Python exception to prevent startup crash in case of fetch ClearURL
failure. Also add some logs.

Closes: https://github.com/searxng/searxng/issues/5054
2025-07-28 07:03:01 +02:00
Fjara
f04c273732 [fix] correct comment in settings.yml for value to disable scheduling (#5052)
settings.yml correct value to disable scheduling
2025-07-27 17:36:39 +02:00
Bnyro
1baf3dcd1c [fix] webapp.py: info (and other) page(s) don't load properly (#5051) 2025-07-26 17:58:53 +02:00
Markus Heiser
649a8dd577 [fix] cleanup: rename searx leftovers to SearXNG (#5049)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-26 06:22:46 +02:00
SeriousConcept1134
02cbdf468b [fix] google video: refactor broken engine to work again
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-25 21:40:53 +02:00
Markus Heiser
168fa9b09b [mod] make run: start granian server and versioning by Dependabot (#5037)
The new ``requirements-server.txt`` (granian) is installed into the virtualenv
of Dockerfile.

When ``make run`` is called, a granian server is started with auto reload on
application's files changes / requires granian[reload] extra, see
``requirements-dev.txt``.

Dependabot supports updates to any ``.txt`` file [1].

[1] https://docs.github.com/en/code-security/dependabot/ecosystems-supported-by-dependabot/supported-ecosystems-and-repositories#pip-and-pip-compile

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-25 17:40:33 +02:00
github-actions[bot]
83adda8567 [l10n] update translations from Weblate (#5047)
19de4a735 - 2025-07-23 - eudemo <eudemo@noreply.codeberg.org>
4504f8600 - 2025-07-22 - IcewindX <icewindx@noreply.codeberg.org>
2b4ec6d2c - 2025-07-22 - lucasmz.dev <lucasmz.dev@noreply.codeberg.org>
69b3590de - 2025-07-22 - Fjuro <fjuro@alius.cz>
f48c7b9ac - 2025-07-21 - alexgabi <alexgabi@noreply.codeberg.org>
f8bc97254 - 2025-07-21 - alexgabi <alexgabi@noreply.codeberg.org>
7bd4b6441 - 2025-07-21 - Juno Takano <jutty@noreply.codeberg.org>
527bc690c - 2025-07-20 - 0ko <0ko@noreply.codeberg.org>
dd242f579 - 2025-07-20 - IcewindX <icewindx@noreply.codeberg.org>
f2a3cdb26 - 2025-07-19 - ledjfou <ledjfou@noreply.codeberg.org>
6781d5611 - 2025-07-20 - alexgabi <alexgabi@noreply.codeberg.org>
df82ea943 - 2025-07-18 - zbbhzdaajc <zbbhzdaajc@noreply.codeberg.org>
7892aac02 - 2025-07-18 - Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
2025-07-25 12:20:58 +02:00
Markus Heiser
84c3a832a4 [fix] false is an invalid value for wiki_url in settings.yml (#5046)
Closes: https://github.com/searxng/searxng/issues/5045
2025-07-24 17:47:09 +02:00
Ivan Gabaldon
802bf4f9e7 [fix] py: absolute static path (#5043)
The path to static should be relative (If sxng is served under "/sxng", the static route passed to the client won't be "/sxng/static/..." as expected but "/static/...")

Closes https://github.com/searxng/searxng/issues/5042
2025-07-24 14:55:04 +02:00
Bnyro
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
Ivan Gabaldon
b01d32d69d [fix] py: restore application for uWSGI (#5040)
Was removed on https://github.com/searxng/searxng/pull/5032
2025-07-23 23:55:50 +02:00
Ivan Gabaldon
f7c8e4c353 [fix] py: overwrite version_frozen on explicit freeze (#5020)
Once version_frozen.py has been created, it will never be updated again unless the file is manually deleted.
2025-07-23 18:17:58 +02:00
Ivan Gabaldon
42f102ce1b [enh] py: whitenoise for static handling (#5032)
While looking at ways to better handle static files, I saw a package that replaces Flask `static_folder` functionality. Not only it's considerably faster, but already includes the capability to serve sidecars without having to intercept. This also replaces the uWSGI folder mapping functionality.

Closes https://github.com/searxng/searxng/issues/4977
2025-07-23 18:16:10 +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
Ivan Gabaldon
b95a3e905d [fix] container: remove static path mount (#5006)
I've seen that by default Granian sets a `Cache-Control` header for 1 day IF `GRANIAN_STATIC_PATH_MOUNT` is set. This option is not a hard requirement, but it's set because I found to be faster when serving the static files.

Another thing is that by removing `GRANIAN_STATIC_PATH_MOUNT`, the headers set by the application are present again in the static files, which was not the case before.

Related https://github.com/searxng/searxng/pull/5004
2025-07-19 10:18:50 +02:00
github-actions[bot]
be392a45fc [l10n] update translations from Weblate (#5023)
fce853a65 - 2025-07-16 - return42 <return42@noreply.codeberg.org>
234a91155 - 2025-07-16 - return42 <return42@noreply.codeberg.org>
162ff0369 - 2025-07-16 - return42 <return42@noreply.codeberg.org>
3307e81ab - 2025-07-16 - return42 <return42@noreply.codeberg.org>
7948181fb - 2025-07-15 - Juno Takano <jutty@noreply.codeberg.org>
e88a0b264 - 2025-07-15 - muha7a <muha7a@noreply.codeberg.org>
7b37b944e - 2025-07-14 - Cookie_Monster <cookie_monster@noreply.codeberg.org>
d6c61f1ff - 2025-07-14 - kolegacik <kolegacik@noreply.codeberg.org>
5bd662542 - 2025-07-15 - lucasmz.dev <lucasmz.dev@noreply.codeberg.org>
4ddad097c - 2025-07-14 - yoonhahwang <yoonhahwang@noreply.codeberg.org>
a8d319c18 - 2025-07-13 - norizou <norizou@noreply.codeberg.org>
e7e471f65 - 2025-07-13 - Hēphaistos <hephaistos@noreply.codeberg.org>
b6b198f0a - 2025-07-12 - return42 <return42@noreply.codeberg.org>
9da60d355 - 2025-07-11 - sourdragon <sourdragon@noreply.codeberg.org>
632b879ba - 2025-07-12 - return42 <return42@noreply.codeberg.org>
a543b2b87 - 2025-07-12 - return42 <return42@noreply.codeberg.org>
7e418d9cc - 2025-07-12 - return42 <return42@noreply.codeberg.org>
6e78fbd5c - 2025-07-12 - return42 <return42@noreply.codeberg.org>
917b27bad - 2025-07-12 - return42 <return42@noreply.codeberg.org>
82e69afbf - 2025-07-12 - return42 <return42@noreply.codeberg.org>
096c36ef7 - 2025-07-12 - return42 <return42@noreply.codeberg.org>
2048ef8e2 - 2025-07-12 - return42 <return42@noreply.codeberg.org>

Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-07-19 07:14:26 +02:00
Ivan Gabaldon
ff2e0ea278 [mod] py: don't append "-dirty" to DOCKER_TAG (#5021)
We don't expect tags to have "-dirty", just the GIT_VERSION regardless of how the container is built.
2025-07-18 10:42:44 +02:00
dependabot[bot]
22c6cd4121 [upd] pypi: Bump certifi from 2025.7.9 to 2025.7.14 in the minor group (#5022)
Bumps the minor group with 1 update: [certifi](https://github.com/certifi/python-certifi).


Updates `certifi` from 2025.7.9 to 2025.7.14
- [Commits](https://github.com/certifi/python-certifi/compare/2025.07.09...2025.07.14)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.7.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-18 10:41:18 +02:00
Markus Heiser
e851bc1269 [fix] calculator plugin: filtering real calculation tasks (#5016)
Whether the query is a real calculation tasks is currently only detected in the
AST, resulting in unnecessary creatins of subprocesses. This problem is
mitigated with this patch: if the query contains letters, it is obviously not a
math problem, and the plugin can return without further action.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-17 19:50:02 +02:00
Markus Heiser
62fac1c6a9 [fix] custom plugins: settings must not be merged.
In customizing it should be decided which plugin modules should be loaded and
which should not.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-16 20:55:39 +02:00
mrpaulblack
a0a2f0fd42 [build] /static 2025-07-16 11:02:12 +02:00
mrpaulblack
23d6f59771 [fix] simple theme: display image detail view fullscreen on landscape phones 2025-07-16 11:02:12 +02:00
Ivan Gabaldon
d574339853 [mod] container: remove Cache-Control header (#5005)
Granian shouldn't actually handle the cache, we leave that to the upstream proxy.

Related https://github.com/searxng/searxng/pull/5004
2025-07-11 17:34:07 +02:00
Markus Heiser
574b285efa [mod] remove option ui.static_use_hash (cache busting) (#5004)
Cache busting has caused serious problems for users in the past, here are two
examples:

- https://github.com/searxng/searxng/issues/4419
- https://github.com/searxng/searxng/issues/4481

And it makes development and deployment significantly more complex because it
binds the client side to the server side:

- https://github.com/searxng/searxng/pull/4466

In the light of a decoupled development of the WEB clients from the server side:

- https://github.com/searxng/searxng/pull/4988

is it appropriate to abandon this feature. In fact,  it has been ineffective
since #4436 anyway.

However, the benefit has always been questionable, since at best only a few kB
of data are saved (at least in the context of an image_proxy, the effect is below
the detection limit). Ultimately, the client is responsible for caching.

Related: https://github.com/searxng/searxng/issues?q=label%3A%22clear%20browser%20cache%22

Closes: https://github.com/searxng/searxng/pull/4466
Closes: https://github.com/searxng/searxng/issues/1326
Closes: https://github.com/searxng/searxng/issues/964

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-11 16:53:36 +02:00
Ivan Gabaldon
9149175ff2 [fix] devcontainers: missing Valkey package (#4997)
Use specific branch as `valkey-server` package is only available in trixie and bookworm backports.

Reported https://github.com/searxng/searxng/discussions/4995
Closes https://github.com/searxng/searxng/issues/4996
2025-07-11 16:51:58 +02:00
dependabot[bot]
d8c74c830b [upd] pypi: Bump the minor group with 2 updates (#5000)
Bumps the minor group with 2 updates: [selenium](https://github.com/SeleniumHQ/Selenium) and [certifi](https://github.com/certifi/python-certifi).


Updates `selenium` from 4.34.0 to 4.34.2
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits)

Updates `certifi` from 2025.6.15 to 2025.7.9
- [Commits](https://github.com/certifi/python-certifi/compare/2025.06.15...2025.07.09)

---
updated-dependencies:
- dependency-name: selenium
  dependency-version: 4.34.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: certifi
  dependency-version: 2025.7.9
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor
2025-07-11 11:16:22 +02:00
github-actions[bot]
b5ae3a047d [l10n] update translations from Weblate (#4998)
6c74fe951 - 2025-07-08 - janindu-t <janindu-t@noreply.codeberg.org>
a17afd1fd - 2025-07-06 - ajiou <ajiou@noreply.codeberg.org>
6424a07ea - 2025-07-05 - aindriu80 <aindriu80@noreply.codeberg.org>
e62b0059e - 2025-07-05 - kratos <makesocialfoss32@keemail.me>

Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-07-11 11:15:07 +02:00
Bnyro
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
Markus Heiser
2fe8540903 [fix] prevent multiple, parallel initializations of tables in the cache DB (#4991)
Depending on the respective runtime behavior, it could happen that the initial
loading of the DB tables in the cache was performed multiple times and in
parallel. The concurrent accesses then led to the `sqlite3.OperationalError:
database is locked` exception as in #4951.

Since this problem depends significantly on the runtimes (e.g., how long it
takes to retrieve the content for a table), this error could not be observed in
all installations.

Closes: https://github.com/searxng/searxng/issues/4951

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-09 17:32:10 +02:00
Gaspard d'Hautefeuille
f798ddd492 [mod] migrate from Redis to Valkey (#4795)
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-09 07:55:37 +02:00
Markus Heiser
bd593d0bad [fix] granian: enabling debug on searxng-docker causes server crash (#4985)
When debugging is enabled, the context in which the process is running (uWSGI or
`Flask.run` server) was previously checked [1]. This check has not yet taken the
granian server into account.

----

The check is actually only required for the developer environment (`make run`)
[2] and is intended to prevent double loading of modules when initializing a
Flask server [3].

In the long term, we should find a more robust solution that explicitly enables
the specific features of a development environment via switches. Further
information on this problematic code can be found in [4][5][6].

[1] https://github.com/searxng/searxng/issues/4973#issuecomment-3047890957
[2] https://flask.palletsprojects.com/en/stable/api/#flask.Flask.run
[3] https://github.com/pallets/flask/issues/5307#issuecomment-1774646119
[4] https://github.com/searxng/searxng/pull/1656#issuecomment-1214198941
[5] https://github.com/searxng/searxng/pull/1616#issuecomment-1206137468
[6] https://stackoverflow.com/a/25504196

- closes: https://github.com/searxng/searxng/issues/4973

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-08 13:46:39 +02:00
Markus Heiser
fe52290e65 [fix] calculator plugin: subrocess is not closed on timeout (#4983)
The issue was introduced in commit: edfbf1e

Problematic code::

    def timeout_func(timeout, func, *args, **kwargs):
        ...
        if not p.is_alive():
            ret_val = que.get()
        else:
            logger.debug("terminate function after timeout is exceeded")  # type: ignore
            p.terminate()
        p.join()
        p.close()

The `logger` function in the `else` path is not defined.  Was accidentally
removed in commit edfbf1e without providing an appropriate replacement.::

    File "/usr/local/searxng/searx/plugins/calculator.py", line 216, in timeout_func
      logger.debug("terminate function after timeout is exceeded")  # type: ignore
      ^^^^^^
    NameError: name 'logger' is not defined

The exception triggered by this prevents the `p.terminate()` from being
executed. As a result, the processes accumulate in memory (memory leak).

Related: https://github.com/searxng/searx-instances/discussions/708#discussioncomment-13688168

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-08 09:30:41 +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
Bnyro
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
Ivan Gabaldon
01be2612ab [mod] container: replace uWSGI with Granian (#4820)
* [mod] container: replace uWSGI with Granian

The configuration in Granian is handled with ENVs, much more convenient and practical for updating. The settings have been tested for over two months in a production instance, being usable on small to somewhat large instances without having to modify anything.

It also removes the patch functions and ENVs abstraction from the entrypoint, this makes it possible to run the container with immutable configuration.

In some setups, It may be desired to have the volumes/files under a specific uid/gid (other than searxng:searxng), if the entrypoint has root permissions it will chown automatically on every start, which may not be desired. Explicitly setting the new ENV `FORCE_OWNERSHIP=false` will prevent ownership from being modified.

No manual migration is necessary **unless** the user has changed the default uWSGI configuration or has a very specific setup.

Closes https://github.com/searxng/searxng/issues/4894
Closes https://github.com/searxng/searxng/issues/4818
Closes https://github.com/searxng/searxng/issues/4802

Supersedes https://github.com/searxng/searxng/pull/4596

Related https://github.com/searxng/searxng/discussions/4479

* [mod] docs: add container/granian

All container documentation has been recreated.

A new documentation page has been created for Granian.

* [enh] misc: apply suggestions

Minor documentation changes.

Suggested https://github.com/searxng/searxng/pull/4820#discussion_r2134539259
Suggested https://github.com/searxng/searxng/pull/4820#discussion_r2134538610
Suggested https://github.com/searxng/searxng/pull/4820#discussion_r2134827964
Suggested https://github.com/searxng/searxng/pull/4820#discussion_r2134544300
Suggested https://github.com/searxng/searxng/pull/4820#discussion_r2149387388

---------

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Co-authored-by: Ivan Gabaldon <igabaldon@inetol.net>
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-04 14:35:28 +02:00
dependabot[bot]
6ca8db5e67 [upd] web-client (simple): Bump the minor group across 1 directory with 4 updates (#4970)
Bumps the minor group with 4 updates in the /client/simple directory: [ionicons](https://github.com/ionic-team/ionicons), [sort-package-json](https://github.com/keithamus/sort-package-json), [stylelint](https://github.com/stylelint/stylelint) and [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).


Updates `ionicons` from 8.0.9 to 8.0.10
- [Release notes](https://github.com/ionic-team/ionicons/releases)
- [Commits](https://github.com/ionic-team/ionicons/compare/v8.0.9...v8.0.10)

Updates `sort-package-json` from 3.3.1 to 3.4.0
- [Release notes](https://github.com/keithamus/sort-package-json/releases)
- [Commits](https://github.com/keithamus/sort-package-json/compare/v3.3.1...v3.4.0)

Updates `stylelint` from 16.21.0 to 16.21.1
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.21.0...16.21.1)

Updates `vite` from 7.0.1 to 7.0.2
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.0.2/packages/vite)

---
updated-dependencies:
- dependency-name: ionicons
  dependency-version: 8.0.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: sort-package-json
  dependency-version: 3.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: stylelint
  dependency-version: 16.21.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: vite
  dependency-version: 7.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-04 12:17:51 +02:00
dependabot[bot]
b44a360947 [upd] pypi: Bump selenium from 4.33.0 to 4.34.0 in the minor group (#4968)
Bumps the minor group with 1 update: [selenium](https://github.com/SeleniumHQ/Selenium).


Updates `selenium` from 4.33.0 to 4.34.0
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.33.0...selenium-4.34.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-version: 4.34.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-04 12:02:21 +02:00
dependabot[bot]
db8d4d3877 [upd] web-client (simple): Bump vite from 6.3.5 to 7.0.0 in /client/simple (#4944)
* [upd] web-client (simple): Bump vite in /client/simple

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* [fix] theme/simple: api sync

CSS sourcemap generation doesn't work right now anyway.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ivan Gabaldon <igabaldon@inetol.net>
2025-07-04 11:04:22 +02:00
dependabot[bot]
08d8fb7146 [upd] github-actions: Bump aquasecurity/trivy-action (#4969)
Bumps [aquasecurity/trivy-action](https://github.com/aquasecurity/trivy-action) from 0.31.0 to 0.32.0.
- [Release notes](https://github.com/aquasecurity/trivy-action/releases)
- [Commits](https://github.com/aquasecurity/trivy-action/compare/0.31.0...0.32.0)

---
updated-dependencies:
- dependency-name: aquasecurity/trivy-action
  dependency-version: 0.32.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-04 11:01:23 +02:00
github-actions[bot]
eeed75b715 [l10n] update translations from Weblate (#4966) 2025-07-04 10:20:18 +02:00
Markus Heiser
34728ae097 [build] /static 2025-07-03 17:35:05 +02:00
Ivan Gabaldon
879ac4e60f [mod] theme/simple: fmt/lint major pass
*Not so safe* changes, no behaviour changes.

- More ES5 to ES2015+ conversion.
- Make Biome not cry anymore applying remaining changes.
2025-07-03 17:35:05 +02:00
Ivan Gabaldon
95172213f6 [mod] theme/simple: fmt/lint minor pass
*Safe* changes, no behaviour changes.

- Initial ES5 to ES2015+ conversion.
- Plenty of styling diff changes.
2025-07-03 17:35:05 +02:00
Ivan Gabaldon
a947d5b3cf [mod] theme/simple: improve fmt/lint tech
This is one of various PR to refactor the simple theme internally.

Replace eslint tool with Biome. I have been using this for quite some time, and
it will help us to have more consistent and valid code without extending on
other third party plugins.

Removes unused dependencies.
2025-07-03 17:35:05 +02:00
Bnyro
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
Bnyro
99033f548e [feat] calculator: add support for math constants (e, pi) 2025-07-03 13:57:31 +02:00
Bnyro
27466faadb [feat] calculator: add support for comparation operators (<, <=, ==, ...) 2025-07-03 13:57:31 +02:00
Bnyro
a0fca8c21b [feat] calculator: add some operations (mod, shifts, bitwise and/or) 2025-07-03 13:57:31 +02:00
Markus Heiser
39c50dc013 [fix] sec-fetch-* headers cannot be verified for non-secure requests (#4962)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-06-30 13:31:45 +02:00
github-actions[bot]
60be0f453e [data] update searx.data - update_firefox_version.py (#4954)
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-06-29 08:17:46 +02:00
github-actions[bot]
4fd3217786 [data] update searx.data - update_external_bangs.py (#4955)
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-06-29 08:17:06 +02:00
github-actions[bot]
a8cc4ad877 [data] update searx.data - update_wikidata_units.py (#4956)
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-06-29 08:16:07 +02:00
github-actions[bot]
c475508a1b [data] update searx.data - update_ahmia_blacklist.py (#4957)
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-06-29 08:15:38 +02:00
github-actions[bot]
2c0bda729a [data] update searx.data - update_currencies.py (#4958)
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-06-29 08:15:05 +02:00
github-actions[bot]
8de4119179 [data] update searx.data - update_engine_traits.py (#4959)
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-06-29 08:14:42 +02:00
github-actions[bot]
6df862a4c7 [data] update searx.data - update_engine_descriptions.py (#4960)
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-06-29 08:14:18 +02:00
dependabot[bot]
df76647c52 [upd] pypi: Bump lxml from 5.4.0 to 6.0.0 (#4948)
* [upd] pypi: Bump lxml from 5.4.0 to 6.0.0

Bumps [lxml](https://github.com/lxml/lxml) from 5.4.0 to 6.0.0.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-5.4.0...lxml-6.0.0)

---
updated-dependencies:
- dependency-name: lxml
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* [enh] container: remove unneeded dependencies

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ivan Gabaldon <igabaldon@inetol.net>
2025-06-28 15:31:27 +02:00
dependabot[bot]
467536cc2d [upd] web-client (simple): Bump svgo from 3.3.2 to 4.0.0 in /client/simple (#4945)
* [upd] web-client (simple): Bump svgo in /client/simple

---
updated-dependencies:
- dependency-name: svgo
  dependency-version: 4.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* [build] /static

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2025-06-28 15:30:30 +02:00
Markus Heiser
657237dac4 [fix] leftover from PR #4947 - ./manage vite.simple.build (#4953)
PR #4947 upgraded the pygment, but forgot to apply the change to the static
files::

    $ ./manage vite.simple.build

Related:

- https://github.com/searxng/searxng/pull/4947
2025-06-28 13:34:36 +02:00
dependabot[bot]
9ee1ca89e7 [upd] pypi: Bump pygments from 2.19.1 to 2.19.2 in the minor group (#4947)
Bumps the minor group with 1 update: [pygments](https://github.com/pygments/pygments).


Updates `pygments` from 2.19.1 to 2.19.2
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.19.1...2.19.2)

---
updated-dependencies:
- dependency-name: pygments
  dependency-version: 2.19.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-27 18:13:32 +02:00
Ivan Gabaldon
49fdf4edd9 [fix] utils: truncated result (#4949)
Make sure to prase everything before returning.

Related: \
```
FAIL: test_html_to_text (tests.unit.test_utils.TestUtils.test_html_to_text)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/searxng/searxng/tests/unit/test_utils.py", line 53, in test_html_to_text
    self.assertEqual(utils.html_to_text(r"regexp: (?<![a-zA-Z]"), "regexp: (?<![a-zA-Z]")
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 'regexp: (?' != 'regexp: (?<![a-zA-Z]'
- regexp: (?
+ regexp: (?<![a-zA-Z]
```
2025-06-27 17:52:12 +02:00
dependabot[bot]
a76ccba9c5 [upd] web-client (simple): Bump vite-plugin-static-copy (#4943)
---
updated-dependencies:
- dependency-name: vite-plugin-static-copy
  dependency-version: 3.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-27 16:14:32 +02:00
github-actions[bot]
d47ff4d026 [l10n] update translations from Weblate (#4946)
66f385590 - 2025-06-26 - AndersNordh <andersnordh@noreply.codeberg.org>
2f0d725c7 - 2025-06-27 - MaheAlif <mahealif@noreply.codeberg.org>
3b8c842d2 - 2025-06-25 - SomeTr <sometr@noreply.codeberg.org>
88c5a918b - 2025-06-25 - Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
306e1f8a4 - 2025-06-25 - Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
f1314daea - 2025-06-25 - return42 <return42@noreply.codeberg.org>
f4d3905d2 - 2025-06-25 - Linerly <linerly@noreply.codeberg.org>
790dbb51c - 2025-06-25 - return42 <return42@noreply.codeberg.org>
4c59a2801 - 2025-06-24 - Outbreak2096 <outbreak2096@noreply.codeberg.org>
2b70aab75 - 2025-06-24 - ghose <ghose@noreply.codeberg.org>
dade2fbb2 - 2025-06-24 - SomeTr <sometr@noreply.codeberg.org>
930f76d9d - 2025-06-24 - AndersNordh <andersnordh@noreply.codeberg.org>
f2f5bfa28 - 2025-06-24 - SecularSteve <secularsteve@noreply.codeberg.org>
14bcf9a7b - 2025-06-24 - SecularSteve <secularsteve@noreply.codeberg.org>
ba266aa82 - 2025-06-24 - SecularSteve <secularsteve@noreply.codeberg.org>
c25b3788c - 2025-06-24 - SecularSteve <secularsteve@noreply.codeberg.org>

Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-06-27 14:47:34 +02:00
Ivan Gabaldon
c6e0ad930d [fix] container: remove HEALTHCHECK (#4941)
This is a poorly designed instruction, which is hardcoded and cannot be easily modified or maintained on a rolling release sw like ours. This *should* be set in the SearXNG Docker Compose template, not in the image itself.

The OCI format is now used since we no longer have the HEALTHCHECK on the Dockerfile.

Closes https://github.com/searxng/searxng/issues/4906
Closes https://github.com/searxng/searxng/issues/4722
2025-06-26 14:46:59 +02:00
useralias
8757655644 [fix] restore startpage autocompleter
Changes:
- Undo deletions of the autocompleter in settings and logic
- Add fixed autocomplete function in autocomplete.py

Related:
- https://github.com/searxng/searxng/issues/4334
2025-06-25 17:38:31 +02:00
Markus Heiser
776ac0add8 [docs] Docker's entrypoint.sh does no longer have an help option -h
The new Docker entrypoint.sh script implemented in PR:

- https://github.com/searxng/searxng/pull/4793

does no longer have a `-h` option [1].  When building the `make docs` a warming
is shown::

  WARNING: Unexpected return code 2 from command Command(command=('../container/entrypoint.sh', '-h') .. (output='../container/entrypoint.sh: 152: SEARXNG_VERSION: parameter not set')

[1] https://github.com/searxng/searxng/pull/4793/files#diff-694a402a03e8de5aa227b1c0294ffdc072b6bac09b4dcbe144dc7d97d4e07159L35

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-06-25 09:32:01 +02:00
Markus Heiser
39474b392a [fix] debian: install apt package python-is-python3
On debian the 'python-is-python3' packages restores an appropriate
'/usr/bin/python' symlink for third-party scripts[1]

[1] https://github.com/searxng/searxng/issues/3235#issuecomment-1954459081

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-06-25 08:29:57 +02:00
benpiano800
b47ee0a4e3 [chore] docs: various grammatical fixes 2025-06-23 23:01:29 +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
Markus Heiser
2dd4f7b972 [mod] data: implement a simple tracker URL (SQL) database
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 22:12:18 +02:00
Markus Heiser
58c10f758b [mod] plugins: activate tracker url plugin by default
With the new implementation for removing tracker arguments from URLs, we use the
tracker definitions of the ClearURLs project [1].  These definitions are
regularly updated and significantly improve data protection, which is why we
should now also enable this plugin by default.

[1] https://github.com/ClearURLs

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-06-23 22:12:18 +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
Bnyro
58df3e8e97 [build] /static 2025-06-22 09:41:16 +02:00
Bnyro
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
Robert M. Clabough
ec892d3836 [feat] engines: add Tube Archivist engine (#4889)
Tube Archivist [1] is a self-hosted project which archives youtube videos on
your own local server.  This engine connects with Tube Archivist's search API to
allow searching from SearXNG into your own hosted videos.

[1] https://www.tubearchivist.com/

Signed-off-by:  Robert M. Clabough <robert@claobugh.tech>
Co-authored-by: Bnyro <bnyro@tutanota.com>
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2025-06-22 09:40:42 +02:00
useralias
cc61d0833c [refactor] yahoo engine: fix missing results and improve request code structure (#4923)
Changes:
- Add required iscqry, pz and bct search parameters
- Remove unused/optional search parameters (ei, fr2, age)
- Fix offset calculation
- Use new sB cookie for filters (time, safesearch, language)
- Group related parameter assignments together
- Restructure request parameter building to better match a real request
- Use f-strings for string formatting
- Add logging of domain and cookies used

Related:
- https://github.com/searxng/searxng/issues/4910
2025-06-22 08:56:25 +02:00
Nanashi
64f00bf5fd [fix] remove dissem.in due to its closure (#4930)
remove dissem.in due to its closure [1]

[1] https://association.dissem.in/dissemin-closure.html
2025-06-22 08:52:46 +02:00
dependabot[bot]
3c3f06aafe [upd] pypi: Bump certifi from 2025.4.26 to 2025.6.15 in the minor group (#4927)
Bumps the minor group with 1 update: [certifi](https://github.com/certifi/python-certifi).


Updates `certifi` from 2025.4.26 to 2025.6.15
- [Commits](https://github.com/certifi/python-certifi/compare/2025.04.26...2025.06.15)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.6.15
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-22 07:36:49 +02:00
dependabot[bot]
105dfad66d [upd] web-client (simple): Bump the minor group (#4926)
Bumps the minor group in /client/simple with 4 updates: [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js), [eslint](https://github.com/eslint/eslint), [stylelint](https://github.com/stylelint/stylelint) and [vite-plugin-static-copy](https://github.com/sapphi-red/vite-plugin-static-copy).


Updates `@eslint/js` from 9.28.0 to 9.29.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.29.0/packages/js)

Updates `eslint` from 9.28.0 to 9.29.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.28.0...v9.29.0)

Updates `stylelint` from 16.20.0 to 16.21.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.20.0...16.21.0)

Updates `vite-plugin-static-copy` from 3.0.0 to 3.0.2
- [Release notes](https://github.com/sapphi-red/vite-plugin-static-copy/releases)
- [Changelog](https://github.com/sapphi-red/vite-plugin-static-copy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sapphi-red/vite-plugin-static-copy/compare/vite-plugin-static-copy@3.0.0...vite-plugin-static-copy@3.0.2)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.29.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: eslint
  dependency-version: 9.29.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: stylelint
  dependency-version: 16.21.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: vite-plugin-static-copy
  dependency-version: 3.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-22 07:35:52 +02:00
github-actions[bot]
174faa342a [l10n] update translations from Weblate (#4925)
9c4f336a6 - 2025-06-19 - itsmrxyz <itsmrxyz@noreply.codeberg.org>
f639499e2 - 2025-06-18 - Adiker <adiker@noreply.codeberg.org>
67ddeb0b8 - 2025-06-19 - Fjuro <git@alius.cz>
2f37218d3 - 2025-06-17 - Linerly <linerly@noreply.codeberg.org>
b6b11a88e - 2025-06-16 - aindriu80 <aindriu80@noreply.codeberg.org>
23d4b17ed - 2025-06-16 - Shihfu Juan <xlion@xlion.tw>
b6e19a4a7 - 2025-06-16 - Juno Takano <jutty@noreply.codeberg.org>
9fe7bb4b4 - 2025-06-16 - artens <artens@noreply.codeberg.org>
a52c6a9ed - 2025-06-17 - radekjuthner <radekjuthner@noreply.codeberg.org>
91aafaa77 - 2025-06-16 - French <french@noreply.codeberg.org>
f00ea030c - 2025-06-15 - Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
0ff16bbad - 2025-06-14 - French <french@noreply.codeberg.org>
1785f8d3b - 2025-06-13 - SomeTr <sometr@noreply.codeberg.org>
2c394a6f4 - 2025-06-13 - AndersNordh <andersnordh@noreply.codeberg.org>
136e3016d - 2025-06-13 - ghose <ghose@noreply.codeberg.org>
c29cfab40 - 2025-06-13 - AndersNordh <andersnordh@noreply.codeberg.org>
cf982efb8 - 2025-06-13 - L33P <l33p@noreply.codeberg.org>

Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-06-22 07:32:29 +02:00
github-actions[bot]
e52e9bb4b6 [l10n] update translations from Weblate (#4914)
0c960fb83 - 2025-06-13 - Outbreak2096 <outbreak2096@noreply.codeberg.org>

Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-06-14 08:42:06 +02:00
benpiano800
0b877f1fb8 [mod] Hash plugin: List the available hash functions in the description
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-06-12 21:05:49 +02:00
benpiano800
a6d0333e30 [chore] Preferences: Make autocomplete description sound less casual (#4908) 2025-06-12 02:07:30 +02:00
benpiano800
e58ed0fdba [chore] Preferences: Fix grammatical error in results_on_new_tab.html (#4909) 2025-06-12 01:51:24 +02:00
Brock Vojkovic
8888d71ab9 [mod] disable wallhaven by default 2025-06-10 15:57:39 +00:00
Ivan Gabaldon
c081447d06 [fix] CI: prevent manifest removal (#4905)
The action does not take into account all cases of how an image is stored, causing errors like the ones below on image pull. I exclude `base` until I find a solution.

*Error: internal error: unable to copy from source ...: initializing source ...: reading manifest ... in ghcr.io/searxng/base: manifest unknown*
2025-06-10 13:49:36 +02:00
Markus Heiser
d0bb977c48 [fix] .editorconfig: correction of the settings from the realities (#4892)
The code formatter allows up to 120 characters per line, but for better
readability the editor should prefer 80 characters per line

In the HTML templates (jinja) we usually use an indentation of two and no tabs.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-06-09 07:19:50 +02:00
0xhtml
6a2cb45791 [feat] bing: raise error upon receiving wrong results page 2025-06-08 22:09:27 +02:00
benpiano800
49a1f08a17 [feat] engines: add Minecraft Wiki (#4896) 2025-06-06 17:05:30 +02:00
dependabot[bot]
33891e5367 [upd] github-actions: Bump aquasecurity/trivy-action (#4898)
Bumps [aquasecurity/trivy-action](https://github.com/aquasecurity/trivy-action) from 0.30.0 to 0.31.0.
- [Release notes](https://github.com/aquasecurity/trivy-action/releases)
- [Commits](https://github.com/aquasecurity/trivy-action/compare/0.30.0...0.31.0)

---
updated-dependencies:
- dependency-name: aquasecurity/trivy-action
  dependency-version: 0.31.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-06 10:34:07 +02:00
dependabot[bot]
13132c0769 [upd] web-client (simple): Bump the minor group (#4899)
Bumps the minor group in /client/simple with 3 updates: [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js), [eslint](https://github.com/eslint/eslint) and [ionicons](https://github.com/ionic-team/ionicons).


Updates `@eslint/js` from 9.27.0 to 9.28.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.28.0/packages/js)

Updates `eslint` from 9.27.0 to 9.28.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.27.0...v9.28.0)

Updates `ionicons` from 8.0.8 to 8.0.9
- [Release notes](https://github.com/ionic-team/ionicons/releases)
- [Commits](https://github.com/ionic-team/ionicons/compare/v8.0.8...v8.0.9)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.28.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: eslint
  dependency-version: 9.28.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: ionicons
  dependency-version: 8.0.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-06 10:03:54 +02:00
github-actions[bot]
3f1504a913 [l10n] update translations from Weblate (#4897)
1abc876b1 - 2025-06-06 - Linerly <linerly@noreply.codeberg.org>
8e107bf1a - 2025-06-06 - realkendrick_fr <realkendrick_fr@noreply.codeberg.org>
3ea971192 - 2025-06-03 - LinuxWizard <linuxwizard@noreply.codeberg.org>
455f80f14 - 2025-06-02 - ghose <ghose@noreply.codeberg.org>
aab313207 - 2025-06-02 - wags07 <wags07@noreply.codeberg.org>
1f1390745 - 2025-06-02 - aindriu80 <aindriu80@noreply.codeberg.org>
c098e4d67 - 2025-06-02 - Shihfu Juan <xlion@xlion.tw>
a30395996 - 2025-06-01 - AndersNordh <andersnordh@noreply.codeberg.org>
a1648feed - 2025-06-02 - yurtpage <yurtpage@noreply.codeberg.org>
985d3f23c - 2025-06-02 - rodgui <rodgui@noreply.codeberg.org>
1526dbc88 - 2025-06-02 - rodgui <rodgui@noreply.codeberg.org>
2d6baae9e - 2025-06-02 - artens <artens@noreply.codeberg.org>
bb5344f55 - 2025-06-02 - Haraldher <haraldher@noreply.codeberg.org>
08991138c - 2025-06-01 - Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
94952bbd5 - 2025-06-01 - AndersNordh <andersnordh@noreply.codeberg.org>
e4a792010 - 2025-06-01 - Fjuro <git@alius.cz>
0bd241620 - 2025-06-02 - thenack0 <thenack0@noreply.codeberg.org>
3bdff93bc - 2025-06-01 - pochinki <pochinki@noreply.codeberg.org>
091107dc4 - 2025-06-01 - Outbreak2096 <outbreak2096@noreply.codeberg.org>
ac147f2cc - 2025-05-31 - SomeTr <sometr@noreply.codeberg.org>
dd0b77eee - 2025-06-01 - ngf <ngf@noreply.codeberg.org>
db2aa378b - 2025-06-01 - return42 <return42@noreply.codeberg.org>

Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-06-06 09:50:34 +02:00
Ivan Gabaldon
eb36de8d91 [mod] container: revert to alpine (#4893)
I'm not too pleased to reverse this, but issues like https://github.com/searxng/searxng/issues/4792 have not been foreseen, and we can't just turn away. It has become apparent over the last weeks that there are still quite a few people with an incompatible CPU or having SearXNG on some random VM provider who can't (or won't) modify the configuration of their machines to expose the features needed for x86_64v2 march.

As I don't want to trash the work with apko and base images, I thought about trying building Alpine again now that we have all the container related workflow refactored.

There will still be the discussion of whether to use musl and its drawbacks, but right now I don't know any other alternatives.

The nice part of this is that both Dockerfiles (mainline and legacy) can now be unified under the same umbrella again.

Closes https://github.com/searxng/searxng/issues/4792
Closes https://github.com/searxng/searxng/issues/4753
2025-06-03 21:24:47 +02:00
useralias
b73ac81815 [fix] startpage engine: resolve instant CAPTCHA issues (#4890)
Changes:
- Improve log messages for better debugging of future CAPTCHA issues
- Fixed erroneous get_sc_url variable where sc was always blank (when no cached value)
- Move Origin and Referer headers to request() function
- Add missing form parameters (abp, abd, abe) required by Startpage
  to avoid being flagged as automated requests
- Include segment parameter for paginated requests
- Clean up unnecessary commented-out headers
- Fix minor typos e.g. "time-stamp" → "timestamp", "scrap" → "scrapes"

Related:
- https://github.com/searxng/searxng/issues/4673
2025-06-03 09:58:52 +02:00
Markus Heiser
d63bdcd773 [mod] CI: exclude SearXNG checker and build & deploy of online docs (#4875)
checker.yml

1. The checker is not yet of sufficient quality to allow the results of the
   check to be evaluated / we do not evaluate them ourselves.

2. The checker sends hundreds of requests to the search engines and causes
   problems there / we either overload small providers or we train their bot
   defenses to use the SearXNG signature.

documentation.yml

Building the documentation and deploying it on GH-docs of a clones (GH forks) is
generally not desirable either --> We have >2k clones, but we only need one
up-to-date documentation and that is the one from the master branch of the
searxng/searxng repo.

If search engines like Google start linking to the documentation in the clones,
SearXNG users may no longer find the original documentation or be lost in the
flood of options.

Related:

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

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-06-01 19:47:56 +02:00
benpiano800
93751b6379 [chore] engine preferences: fix grammar mistakes (#4883) 2025-05-31 21:09:31 +02:00
Markus Heiser
6e2d3e05c4 [build] /static 2025-05-31 20:34:59 +02:00
Markus Heiser
ff206e9679 [mod] weather results: add types, i18n/l10n, symbols & unit conversions
The types necessary for weather information such as GeoLocation, DateTime,
Temperature,Pressure, WindSpeed, RelativeHumidity, Compass (wind direction) and
symbols for the weather have been implemented.

There are unit conversions and translations for weather property labels.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-31 20:34:59 +02:00
Markus Heiser
a800dd0473 [mod] implement searx.wikidata_units for unit converters 2025-05-31 20:34:59 +02:00
Bnyro
cf59ee2efc [feat] open meteo: use new weather answerer 2025-05-31 20:34:59 +02:00
Bnyro
d70f0a3321 [feat] result types: add weather result answerer and template 2025-05-31 20:34:59 +02:00
benpiano800
37d851fb23 [mod] UI footer: correct capitalization of "SearXNG" in base.html 2025-05-30 09:33:57 +02:00
dependabot[bot]
1b424b8d54 [upd] pypi: Bump the minor group with 2 updates
Bumps the minor group with 2 updates: [selenium](https://github.com/SeleniumHQ/Selenium) and [typer-slim](https://github.com/fastapi/typer).


Updates `selenium` from 4.32.0 to 4.33.0
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.32.0...selenium-4.33.0)

Updates `typer-slim` from 0.15.4 to 0.16.0
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](https://github.com/fastapi/typer/compare/0.15.4...0.16.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-version: 4.33.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: typer-slim
  dependency-version: 0.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-30 09:23:11 +02:00
dependabot[bot]
b991688fcb [upd] web-client (simple): Bump the minor group
Bumps the minor group in /client/simple with 2 updates: [globals](https://github.com/sindresorhus/globals) and [stylelint](https://github.com/stylelint/stylelint).


Updates `globals` from 16.1.0 to 16.2.0
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v16.1.0...v16.2.0)

Updates `stylelint` from 16.19.1 to 16.20.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.19.1...16.20.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 16.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: stylelint
  dependency-version: 16.20.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-30 09:16:49 +02:00
searxng-bot
44471bef35 [l10n] update translations from Weblate
0f55f2438 - 2025-05-29 - sandijs <sandijs@noreply.codeberg.org>
109f7dcb8 - 2025-05-26 - ngf <ngf@noreply.codeberg.org>
d2ba9b3d0 - 2025-05-26 - artnay <artnay@noreply.codeberg.org>
33c6f23bf - 2025-05-26 - realkendrick_fr <realkendrick_fr@noreply.codeberg.org>
2025-05-30 09:13:36 +02:00
dependabot[bot]
0b4c47a123 [upd] web-client (simple): Bump the minor group
Bumps the minor group in /client/simple with 4 updates: [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js), [eslint](https://github.com/eslint/eslint), [sharp](https://github.com/lovell/sharp) and [webpack](https://github.com/webpack/webpack).


Updates `@eslint/js` from 9.26.0 to 9.27.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.27.0/packages/js)

Updates `eslint` from 9.26.0 to 9.27.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.26.0...v9.27.0)

Updates `sharp` from 0.34.1 to 0.34.2
- [Release notes](https://github.com/lovell/sharp/releases)
- [Commits](https://github.com/lovell/sharp/compare/v0.34.1...v0.34.2)

Updates `webpack` from 5.99.8 to 5.99.9
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.99.8...v5.99.9)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.27.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: eslint
  dependency-version: 9.27.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: sharp
  dependency-version: 0.34.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: webpack
  dependency-version: 5.99.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-29 09:00:15 +02:00
Markus Heiser
913dfbde3c [fix] plugins: currency processor bug
Fix C&P typo from  https://github.com/searxng/searxng/pull/4836

Closes: https://github.com/searxng/searxng/issues/4861
2025-05-29 07:37:59 +02:00
searxng-bot
7448a18efa [data] update searx.data - update_ahmia_blacklist.py 2025-05-29 07:11:55 +02:00
searxng-bot
23396f5a1d [data] update searx.data - update_firefox_version.py 2025-05-29 07:10:22 +02:00
searxng-bot
dbe6a6f4fa [data] update searx.data - update_wikidata_units.py 2025-05-29 07:08:32 +02:00
searxng-bot
b2727e1be9 [data] update searx.data - update_currencies.py 2025-05-29 07:07:55 +02:00
searxng-bot
9d8592afd7 [data] update searx.data - update_engine_traits.py 2025-05-29 07:07:05 +02:00
searxng-bot
70a387a48f [data] update searx.data - update_engine_descriptions.py 2025-05-29 07:06:38 +02:00
Bnyro
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
Bnyro
7a5a499795 [build] /static 2025-05-25 18:04:18 +02:00
Bnyro
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 32823ecb69
- closes https://github.com/searxng/searxng/issues/4846
2025-05-25 18:04:18 +02:00
Ivan Gabaldon
14b8a999f3 [mod] ci: exclude some workflows from forks (#4849)
Excludes some workflows/jobs unneeded on forks.

Closes https://github.com/searxng/searxng/issues/4847
2025-05-25 14:54:27 +02:00
Markus Heiser
848c8d0544 [mod] data: implement a simple currencies (SQL) database (#4836)
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-05-25 10:40:57 +02:00
github-actions[bot]
e46187e3ce [l10n] update translations from Weblate (#4840)
51e0a154c - 2025-05-22 - Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
256b8cb8e - 2025-05-16 - wetinee <wetinee@noreply.codeberg.org>
ac12b76a8 - 2025-05-16 - wetinee <wetinee@noreply.codeberg.org>

Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-05-25 10:36:27 +02:00
Markus Heiser
064eb50473 [mod] engines: Yahoo in different languages (#4826)
BTW fix issue reported in [1]

[1] https://github.com/searxng/searxng/pull/4814#issuecomment-2896948787

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-05-24 13:14:13 +02:00
Alexandre Flament
9ed9a9aa53 [fix] searx.network: don't trigger DeprecationWarning (#4845)
Avoid a confusing warning:

    DeprecationWarning: Setting per-request cookies=<...> is being deprecated

Code based on httpx unit test [1]

[1] 6a99f6f2b3/tests/client/test_cookies.py (L123-L137)

Closes: https://github.com/searxng/searxng/issues/4833
2025-05-24 12:40:05 +02:00
Markus Heiser
230215c250 [fix] preferences: description not localized for all UI languages (#4844)
The previous implementation for determining the description of an engine did not
take into account that the UI languages ​​can also have a region tag and/or a
script tag:

    el-GR:      Ελληνικά, Ελλάδα (Greek, Greece)
    fa-IR:      فارسی, ایران (Persian, Iran)
    nb-NO:      Norsk bokmål, Norge (Norwegian bokmål, Norway)
    nl-BE:      Nederlands, België (Dutch, Belgium)
    pt-BR:      Português, Brasil (Portuguese, Brazil)
    zh-HK:      中文, 中國香港特別行政區 (Chinese, Hong Kong SAR China)
    zh-Hans-CN: 中文, 中国 (Chinese, China)
    zh-Hant-TW: 中文, 台灣 (Chinese, Taiwan)

Closes: https://github.com/searxng/searxng/issues/4842

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-23 17:11:41 +02:00
Markus Heiser
1ef5c03962 [fix] ddg engine: IndexError exception is raised on empty contend (#4843)
Sometimes (e.g. when ddg does not have a result item) there is no content and
the engine will fail with an IndexError:

  * Error: IndexError
  * Percentage: 10
  * Parameters: `()`
  * File name: `searx/engines/duckduckgo.py:375`
  * Function: `response`
  * Code: `item["content"] = extract_text(eval_xpath(div_result, './/a[contains(@class, "result__snippet")]')[0])`

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-23 14:55:22 +02:00
useralias
4fa7de8033 [refactor] duckduckgo engine: improve request logic and code structure (#4837)
Changes:
- Add trailing slash to base URL to prevent potential redirects
- Remove advanced search syntax filtering (no longer guarantees a CAPTCHA)
- Correct pagination offset calculation: Page 2 now starts at offset 10,
  subsequent pages use 10 + (n-2)*15 formula instead of the previous
  broken 20 + (n-2)*50 calculation that caused CAPTCHAs
- Restructure request parameter building to better match a real request
- "kt" cookie is no longer an empty string if the language/region is "all"
- Group related parameter assignments together
- Add header logging to debugging output

Related:

- https://github.com/searxng/searxng/issues/4824
2025-05-23 13:01:10 +02:00
Markus Heiser
98badc9cd0 [fix] searx.data: fetch-traits - z-library (httpx.ConnectError) (#4835)
There is currently no known z-library, and all known URLs are dead [1]. To avoid
interrupting automated updates, a connection error to a z-library is treated as
a *known error*, and the old properties of the z-library are retained.

[1] https://github.com/searxng/searxng/issues/3610

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-22 17:43:11 +02:00
Markus Heiser
d29cf64ce4 [mod] searx.data: lazy load of the data objects (databases) (#4834)
In the previous implementation, all databases were loaded into memory when
importing the searx.data package, regardless of whether they were ever needed.

Regardless of this, it is an antipattern to load entire databases into memory
when importing a package or module; databases should be loaded when needed.

Lazy loading is a first step toward improving memory usage and also improves
performance when setting up the runtime environment.  Building on this,
subsequent PRs will be able to further optimize memory behavior, e.g., by using
a real database application such as the one already available via

    searx.cache.ExpireCache

Related:

- https://github.com/searxng/searxng/discussions/1892
- https://github.com/searxng/searxng/pull/3458
- https://github.com/searxng/searxng/pull/4650

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-22 16:23:30 +02:00
Markus Heiser
861f9c4be5 [build] /static 2025-05-22 15:16:54 +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
Zhijie He
156d1eb8c8 [feat] engines: add Naver engine (#4573)
Refactor Naver engine (Web, News, Images, Videos, Autocomplete)

- ref: https://search.naver.com/
- lang: `ko`
- Wikidata: https://www.wikidata.org/wiki/Q485639

Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-05-21 18:25:02 +02:00
Markus Heiser
365b9426f1 [fix] engines: disable those with known issues (#4813)
- z-library https://github.com/searxng/searxng/issues/3610
- library of congress: https://github.com/searxng/searxng/issues/4810
- qwant: https://github.com/searxng/searxng/issues/3929

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-21 15:50:29 +02:00
Ivan Gabaldon
9ffe23ecf3 [mod] container: remove -e flag
Temporarily remove the -e flag from set to prevent entrypoint.sh from stopping execution if any command returns a non-zero status. This doesn't solve anything but relaxes the script checks.

Related https://github.com/searxng/searxng/issues/4818
2025-05-21 15:27:26 +02:00
Bnyro
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
Bnyro
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
Bnyro
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
Jost Alemann
7420706a50 [chore] fix some docstring typos (#4815) 2025-05-20 21:03:54 +02:00
useralias
6ec554cb5b [fix] yahoo: url and title xpath 2025-05-20 21:02:40 +02:00
Alexandre Flament
7a3742ae56 [mod] upgrade to httpx 0.28.1 (#4674) 2025-05-20 18:18:07 +02:00
Markus Heiser
ca67f1dffe [fix] duckduckgo engines: issue when get_vqd() is used by ddg-images and ddg-videos (#4809)
The global variable CACHE is not initialized when DDG images or DDG videos
import the get_vqd() function (please remember: the engine modules are imported
using the importlib method and not via the `import` keyword).

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-20 16:10:10 +02:00
Ivan Gabaldon
749de829d5 [mod] container: refactor entrypoint script
That entrypoint is prone to screw things up, especially with permission handling. The new script handles initialization better and fixes some issues like delayed settings update via ENVs and timestamp overwriting, also adjusts what should be copied into the container.

Related https://github.com/searxng/searxng/pull/4721#issuecomment-2850272129
2025-05-20 11:49:30 +02:00
Ivan Gabaldon
a195f52412 [fix] container: base-builder should have essentials
The wolfi-base metapackage includes busybox, ca-certificates-bundle and the package manager. The change is to make the use of base-builder image more flexible.
2025-05-20 11:31:45 +02:00
dependabot[bot]
5dff826937 [upd] web-client (simple): Bump vite-plugin-static-copy (#4791)
Bumps [vite-plugin-static-copy](https://github.com/sapphi-red/vite-plugin-static-copy) from 2.3.1 to 3.0.0.
- [Release notes](https://github.com/sapphi-red/vite-plugin-static-copy/releases)
- [Changelog](https://github.com/sapphi-red/vite-plugin-static-copy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sapphi-red/vite-plugin-static-copy/compare/vite-plugin-static-copy@2.3.1...vite-plugin-static-copy@3.0.0)
2025-05-18 13:22:48 +02:00
Markus Heiser
b8b857d24c [mod] engine invidious: commented out / no public API available nowadays (#4800)
Reported-by: @unifox https://github.com/searxng/searxng/issues/2722#issuecomment-2884993248

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-18 13:20:27 +02:00
Ivan Gabaldon
86373e7c87 [mod] container: build custom base images (#4799)
Instead of using Wolfi base images from cgr.dev and making that mess on the Dockerfile, why don't we build the base images ourselves from Wolfi repos with apko? The intention of this is to simplify the main Dockerfile and avoid having to patch the base image every time, it also simplifies some steps like image ownership management and provides extremely fast builds.
2025-05-17 18:21:04 +02:00
github-actions[bot]
1b08324f26 [l10n] update translations from Weblate (#4788) 2025-05-16 09:40:45 +02:00
dependabot[bot]
b8682ffc69 [upd] pypi: Bump typer-slim from 0.15.3 to 0.15.4 in the minor group (#4789)
Bumps the minor group with 1 update: [typer-slim](https://github.com/fastapi/typer).


Updates `typer-slim` from 0.15.3 to 0.15.4
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](https://github.com/fastapi/typer/compare/0.15.3...0.15.4)

---
updated-dependencies:
- dependency-name: typer-slim
  dependency-version: 0.15.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-16 09:20:44 +02:00
Ivan Gabaldon
03083f07da [enh] container: use Wolfi OS as base image
Wolfi OS images are specifically designed for container use. Using a specially designed base image for containers not only reduces maintenance burdens, but improves overall experience for developers (fewer packages we have to track) and end users (smaller images).

Discussion here: https://github.com/searxng/searxng/issues/4753
2025-05-15 22:56:31 +02:00
Ivan Gabaldon
cd64fb966e [enh] container: support multiple registries
Allows to push the manifests to other registries, this allows to push both docker.io and ghcr.io registries.
2025-05-15 11:37:18 +02:00
Ivan Gabaldon
743f24d8c6 [fix] CI: commit author should be searxng-bot
If the workflow is executed with the "workflow_dispatch" trigger, the user who executed the workflow becomes the author of the commit on the PR, this is not intended.

It also reverts the body param so that the default text of the action does not appear.
2025-05-15 11:19:28 +02:00
Ivan Gabaldon
bec76bc2e3 [fix] CI: prevent race condition
`checker.yml` and `integration.yml` are the only workflows that are currently safe to be executed simultaneously, the others present a risk that the order of completion may not be expected. The ones that are chained from `integration.yml` can be called as many times as `integration.yml` workflows are running at that moment, the same with the trigger "workflow_dispatch".

This can be fatal for workflows like `container.yml` that use a centralized cache to store and load the candidate images in a common tag called "searxng-<arch>".

* For example, a `container.yml` workflow is executed after being chained from `integration.yml` (called "~1"), and seconds later it may be triggered again because another PR merged some breaking changes (called "~2"). While "~1" has already passed the test job successfully and is about to start the release job, "~2" finishes building the container and overwrites the references on the common tag. When "~1" in the release job loads the images using the common tag, it will load the container of "~2" instead of "~1" having skipped the whole test job process.

The example is only set for the container workflow, but the other workflows might occur in a similar way.
2025-05-15 11:19:28 +02:00
Ivan Gabaldon
d0b7f26f4b [fix] CI: container-mounts bad hash
This is a typo, but if there are multiple patterns in hashFiles, they should be separated by commas.

https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/evaluate-expressions-in-workflows-and-actions#examples-with-multiple-patterns
2025-05-15 11:19:28 +02:00
Ivan Gabaldon
b42f812c57 [fix] CI: handle old cache images from registry
Currently, we have 1100~ cache images uploaded to GHCR that weigh more than 300 MB each (most of them are layers from the second phase of the Dockerfile that were uploaded by mistake, read below). To avoid problems, I have set up a new job in a new workflow to be run weekly purging all images older than 1 week, but leaving always the 100 most recent ones.

Only the builder images should be uploaded to cache, the actual behaviour not only slows down the time for building the container, but also wastes lots of space by saving large and useless layers to GHCR that will never be used again.
2025-05-14 22:42:36 +02:00
dependabot[bot]
c73b469ce7 Bump flask from 3.1.0 to 3.1.1 (#4780)
Bumps [flask](https://github.com/pallets/flask) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/3.1.0...3.1.1)
2025-05-14 08:18:03 +02:00
Ivan Gabaldon
1a8884fa26 [enh] tidy: clean old morty, filtron, searx references
Everyone should have already switched from legacy methods.
2025-05-13 21:10:02 +02:00
dependabot[bot]
4fb29aae81 [upd] pypi: Bump the minor group with 2 updates (#4776)
Bumps the minor group with 2 updates: [selenium](https://github.com/SeleniumHQ/Selenium) and [redis](https://github.com/redis/redis-py).


Updates `selenium` from 4.31.0 to 4.32.0
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.31.0...selenium-4.32.0)

Updates `redis` from 5.0.8 to 5.2.1
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v5.0.8...v5.2.1)
2025-05-13 17:44:10 +02:00
dependabot[bot]
c303da55b0 [upd] web-client (simple): Bump the minor group (#4775)
Bumps the minor group in /client/simple with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.25.1` | `9.26.0` |
| [eslint](https://github.com/eslint/eslint) | `9.25.1` | `9.26.0` |
| [globals](https://github.com/sindresorhus/globals) | `16.0.0` | `16.1.0` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `6.3.4` | `6.3.5` |
| [webpack](https://github.com/webpack/webpack) | `5.99.7` | `5.99.8` |


Updates `@eslint/js` from 9.25.1 to 9.26.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.26.0/packages/js)

Updates `eslint` from 9.25.1 to 9.26.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.25.1...v9.26.0)

Updates `globals` from 16.0.0 to 16.1.0
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v16.0.0...v16.1.0)

Updates `vite` from 6.3.4 to 6.3.5
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.5/packages/vite)

Updates `webpack` from 5.99.7 to 5.99.8
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.99.7...v5.99.8)
2025-05-13 17:38:46 +02:00
Ivan Gabaldon
2cfd3fc44b [enh] tidy: clean old morty, filtron, searx references
Everyone should have already switched from legacy methods
2025-05-13 10:37:02 +02:00
Markus Heiser
9006866019 [fix] engine archlinux: avoid Anubis challenge by User-Agent "SearXNG" (#4779)
Of the archlinux wikis only wiki.archlinux.org has a has Anubis challenge.

About Anubis[1]:

> Anubis decides to present a challenge using this logic:
>
> - User-Agent contains "Mozilla"
> ...
> This should ensure that git clients, RSS readers, and other low-harm clients
> can get through without issue ..

[1] 6c0ff3f4d5/docs/docs/design/how-anubis-works.mdx (challenge-presentation)


Suggested-by: @unixfox https://github.com/searxng/searxng/issues/4646#issuecomment-2855322406
Closes: https://github.com/searxng/searxng/issues/4646

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-13 10:18:28 +02:00
Ivan Gabaldon
5d99373bc6 [fix] DOCKERHUB_USERNAME env reference (#4778)
When making the container rework, I unknowingly deleted the section where an env with the same name as the secret was defined on the job scope, making it look like it was originally defined as an organization env.

Since we can't validate the secrets in a condition directly, it's better to let docker/login-action take care of failing the entire job if the credentials are invalid.

Reported in: https://github.com/searxng/searxng/issues/4777
2025-05-12 23:43:47 +02:00
Ivan Gabaldon
945b30a1c4 [mod] lib_sxng_container.sh: replace echo commands with heredoc
Suggested-by: @return42 https://github.com/searxng/searxng/pull/4764#discussion_r2083571202
2025-05-12 17:11:35 +02:00
Ivan Gabaldon
64a5b6920f [mod] lib_sxng_container.sh use required_commands() helper
Suggested-by: @return42 https://github.com/searxng/searxng/pull/4764#discussion_r2083564489
2025-05-12 17:11:35 +02:00
Markus Heiser
346d7fe019 [mod] CI: dependabot group updates by minor & patch and major updates (#4773)
By default, Dependabot opens a new pull request to update each dependency and we
have a very large number of Dependabot pull requests to review and merge, which
can quickly become difficult to manage.

The intention of this patch to dependabot is to have:

- one PR for all minor & patch level updates
- one PR for every dependency with a major update

[1] https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/optimizing-pr-creation-version-updates
[2] https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference#groups

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-12 16:42:43 +02:00
Markus Heiser
750a7b4d6f [doc] add chapter on the purpose of (git) commits (#4729)
Chapter on the purpose of (git) commits

The commits and their messages are elementary for the traceability of changes
and are unfortunately still too often given too little attention.

It therefore seems necessary to dedicate a chapter to this topic in the context
of development.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-12 08:27:16 +02:00
Ivan Gabaldon
da3c640cef revert using null keyword
env.DOCKERHUB_USERNAME shouldn't be an empty string as it's defined and set (I think, I can't see this). Even if wasn't defined, GitHub Org/Repo wide envs/secrets should return an empty string (?)
2025-05-11 19:28:51 +02:00
Ivan Gabaldon
d16854e67a [mod] rework container deployment (#4764)
container.yml will run after integration.yml COMPLETES successfully and in master branch.

Style changes, cleanup and improved integration with CI by leveraging the use of
shared cache between all workflows.

* Podman is now supported to build the container images (Docker also received a refactor, merging both build and buildx)
* Container images are being built by Buildah instead of Docker BuildKit.
* Container images are tested before release.
* Splitting "modern" (amd64 & arm64) and "legacy" (armv7) arches on different Dockerfiles allowing future optimizations.
2025-05-11 18:12:51 +02:00
Ivan Gabaldon
1b787ed35e [mod] refactor integration.yml (#4763)
Style changes, cleanup and improved integration with CI by leveraging the use of
shared cache between all workflows.
2025-05-10 13:59:31 +02:00
Ivan Gabaldon
8e2e7774d7 [mod] new l10n.yml workflow (#4734)
l10n.yml will run after integration.yml finishes successfully (will defer anything depending on integration.yml until heavy loads like container building are moved to separate workflows) and in master branch.

* After every integration.yml workflow completes successfully, only the `update` job runs.
* Dispatch and Crontab triggers only the `pr` job.

Style changes, cleanup and improved integration with CI by leveraging the use of shared cache between all workflows (not functional until all workflows have been refactored).
2025-05-10 13:08:20 +02:00
Ivan Gabaldon
e982b9f732 [fix] documentation should run on push/pr
Instead of executing the workflow after integration.yml completes correctly, let's run this workflow parallel to integration.yml restoring the original behaviour.
2025-05-10 07:41:42 +02:00
Émilien (perso)
48456caeb3 chore: docker + github-actions dependabot (#4754)
* chore: docker dependabot

* Add github actions too
2025-05-09 20:46:20 +02:00
Markus Heiser
ef158ce1f4 [build] /static 2025-05-09 12:40:34 +02:00
Markus Heiser
cbf9ec7bf4 [fix] static.build.commit: add missing searx/templates/simple/icons.html
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-09 12:40:34 +02:00
Markus Heiser
409ede1530 [fix] simple client: jinja_svg_catalog addClassesToSVGElement
Starting with ionicons-8.0.8 the SVG already contains a class attribute and
instaed of using SVGO plugin ``addAttributesToSVGElement`` we habve to use
``addClassesToSVGElement`` to add out ``__jinja_class_placeholder__``.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-09 12:40:34 +02:00
dependabot[bot]
1326ec7429 [upd] web-client (simple): Bump ionicons in /client/simple
Bumps [ionicons](https://github.com/ionic-team/ionicons) from 7.4.0 to 8.0.8.
- [Release notes](https://github.com/ionic-team/ionicons/releases)
- [Commits](https://github.com/ionic-team/ionicons/compare/v7.4.0...v8.0.8)

---
updated-dependencies:
- dependency-name: ionicons
  dependency-version: 8.0.8
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-09 12:40:34 +02:00
dependabot[bot]
50406d4b46 [upd] pypi: Bump pylint from 3.3.6 to 3.3.7 (#4750)
Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.3.6 to 3.3.7.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.3.6...v3.3.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-09 11:10:37 +02:00
dependabot[bot]
5ce3aa3acf [upd] pypi: Bump yamllint from 1.37.0 to 1.37.1 (#4752)
Bumps [yamllint](https://github.com/adrienverge/yamllint) from 1.37.0 to 1.37.1.
- [Release notes](https://github.com/adrienverge/yamllint/releases)
- [Changelog](https://github.com/adrienverge/yamllint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/adrienverge/yamllint/compare/v1.37.0...v1.37.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-09 11:09:44 +02:00
SearXNG Bot
76ebad0b21 [l10n] update translations from Weblate (#4744)
6f8c520f2 - 2025-05-08 - polskiecus <polskiecus@noreply.codeberg.org>
05dd91d5b - 2025-05-08 - return42 <return42@noreply.codeberg.org>
686b8e5fb - 2025-05-08 - return42 <return42@noreply.codeberg.org>
f40b42bd8 - 2025-05-05 - ehsanrs2 <ehsanrs2@noreply.codeberg.org>
b8013bc99 - 2025-05-03 - polskiecus <polskiecus@noreply.codeberg.org>
5affaa104 - 2025-05-02 - SomeTr <sometr@noreply.codeberg.org>

Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2025-05-09 09:31:50 +02:00
github-actions[bot]
d76f030cb3 [data] update searx.data - update_wikidata_units.py (#4738) 2025-05-09 07:09:58 +02:00
github-actions[bot]
b3b15ecc72 [data] update searx.data - update_ahmia_blacklist.py (#4739)
Co-authored-by: inetol <inetol@users.noreply.github.com>
2025-05-09 07:09:00 +02:00
github-actions[bot]
1319b250af [data] update searx.data - update_currencies.py (#4740)
Co-authored-by: inetol <inetol@users.noreply.github.com>
2025-05-09 07:08:26 +02:00
github-actions[bot]
198928de05 [data] update searx.data - update_engine_traits.py (#4741)
Co-authored-by: inetol <inetol@users.noreply.github.com>
2025-05-09 07:07:33 +02:00
github-actions[bot]
11d9c830b8 [data] update searx.data - update_engine_descriptions.py (#4742)
Co-authored-by: inetol <inetol@users.noreply.github.com>
2025-05-09 07:06:52 +02:00
Ivan Gabaldon
743f90514b [fix] missing PR perm data-update.yml workflow (#4737)
We actually don't need to keep the token on checkout because `peter-evans/create-pull-request` will read from `github.token`. The obvious `pull-requests` write permission wasn't set in the last fix, so I added it now.
2025-05-08 23:55:23 +02:00
Ivan Gabaldon
48801dbc9a [mod] CI move build of online docs to dedicated workflow documentation.yml (#4733)
documentation.yml will run after integration.yml COMPLETES successfully (will
defer anything depending on integration.yml until heavy loads like container
building are moved to separate workflows) and in master branch.

Style changes, cleanup and improved integration with CI by leveraging the use of
shared cache between all workflows (not functional until all workflows have been
refactored).
2025-05-08 17:40:05 +02:00
Ivan Gabaldon
5451ab243a [fix] fix security.yml workflow (#4735)
Uploading SARIFs needs to write into the repository GitHub security tab
2025-05-08 17:13:07 +02:00
Ivan Gabaldon
7ca24eee45 [fix] missing perm data-update.yml workflow (#4736)
We need to keep the token on checkout and allow writing into the repository to create the branch
2025-05-08 16:51:21 +02:00
Ivan Gabaldon
c6a70782b2 [mod] CI: refactor data-update.yml - searxng_extra/update scripts (#4732)
Style changes, cleanup and improved integration with CI by leveraging the use of
shared cache between all workflows (not functional until all workflows have been
refactored).
2025-05-08 15:13:22 +02:00
Ivan Gabaldon
01a07f34b2 [mod] CI refactor security.yml - style and cleanup changes (#4731) 2025-05-08 14:44:22 +02:00
Ivan Gabaldon
f32fcb1243 [mod] CI: refactor checker.yml - make search.checker (#4730)
Style changes, cleanup and improved integration with CI by leveraging the use of
shared cache between all workflows (not functional until all workflows have been
refactored).
2025-05-08 13:58:06 +02:00
benpiano800
bc06b1aece [enh] plugins: tor_check: Add more keywords (#4726)
Previously, there was only one usable keyword for the tor_check plugin. Adding more keywords eliminates confusion.
2025-05-07 10:39:46 +02:00
Brock Vojkovic
ff60fe635f [fix] sec-fetch-* blocking infinite scroll (#4728) 2025-05-07 10:38:21 +02:00
Markus Heiser
6e7119fa4e [fix] references from searx.botdetection.http_sec_fetch (#4723) 2025-05-07 10:25:47 +02:00
Ivan Gabaldon
f52cd3f008 missing dependency for armv7 (#4727) 2025-05-07 08:53:34 +02:00
Ivan Gabaldon
a2fa7de880 [mod] Rework Dockerfile - migrate to glibc (debian) (#4721) 2025-05-06 11:56:59 +02:00
Bnyro
0315988f5a fix] revert searxng/searxng#4699 due to breaking issues (#4720)
This reverts commit 2e74d86321.
2025-05-05 09:46:37 +02:00
Ivan Gabaldon
2e74d86321 Rework Dockerfile (#4699)
This is one of various PR to refactor the entire SearXNG Docker workflow.

Switches to Python glibc based images, all dependencies are installed via pip and not from system repositories, and several minor changes.

This PR will increase the image size from 194.9 MB to 345.47 MB (amd64), this is due to ARMv7 images (needs dependencies for wheels compilation and runtime (?)) and uWSGI webserver. Later PR will reduce the final image size.
2025-05-04 22:27:53 +02:00
Émilien (perso)
19b116f1d7 fix: check if the browser supports Sec-Fetch headers (#4696) 2025-05-04 10:12:25 +02:00
Markus Heiser
fe08bb1d90 [mod] botdetection: HTTP Fetch Metadata Request Headers
HTTP Fetch Metadata Request Headers [1][2] are used to detect bot requests. Bots
with invalid *Fetch Metadata* will be redirected to the intro (`index`)  page.

[1] https://www.w3.org/TR/fetch-metadata/
[2] https://developer.mozilla.org/en-US/docs/Glossary/Fetch_metadata_request_header

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-04 02:07:26 +02:00
Markus Heiser
8ef5fbca4e [fix] cache.ExpireCache: definition of a context name for the key
The definition of a context name belongs in the abstract base class (was
previously only in the concrete implementation for the SQLite adapter).

Suggested-by: @dalf https://github.com/searxng/searxng/pull/4650#discussion_r2069873853
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-03 08:39:12 +02:00
Markus Heiser
7351c38e6c [fix] (armv7) cache.ExpireCache: remove option ENCRYPT_VALUE
Prophylactic encryption of the value currently makes no sense; on the contrary,
since the ``cryptography`` package is not available on armv7, it would cause
further problems.

Suggested-by: @dalf https://github.com/searxng/searxng/pull/4650#issuecomment-2830786661
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-03 08:39:12 +02:00
Markus Heiser
bdfe1c2a15 [mod] engines: migration of the individual cache solutions to EngineCache
The EngineCache class replaces all previously individual solutions for caches in
the context of the engines.

- demo_offline.py
- duckduckgo.py
- radio_browser.py
- soundcloud.py
- startpage.py
- wolframalpha_api.py
- wolframalpha_noapi.py

Search term to test most of the modified engines::

    !ddg !rb !sc !sp !wa test

    !ddg !rb !sc !sp !wa foo

For introspection of the DB, jump into developer environment and run command to
show cache state::

    $ ./manage pyenv.cmd bash --norc --noprofile
    (py3) python -m searx.enginelib cache state

    cache tables and key/values
    ===========================
    [demo_offline        ] 2025-04-22 11:32:50 count        --> (int) 4
    [startpage           ] 2025-04-22 12:32:30 SC_CODE      --> (str) fSOBnhEMlDfE20
    [duckduckgo          ] 2025-04-22 12:32:31 4dff493e.... --> (str) 4-128634958369380006627592672385352473325
    [duckduckgo          ] 2025-04-22 12:40:06 3e2583e2.... --> (str) 4-263126175288871260472289814259666848451
    [radio_browser       ] 2025-04-23 11:33:08 servers      --> (list) ['https://de2.api.radio-browser.info',  ...]
    [soundcloud          ] 2025-04-29 11:40:06 guest_client_id --> (str) EjkRJG0BLNEZquRiPZYdNtJdyGtTuHdp
    [wolframalpha        ] 2025-04-22 12:40:06 code         --> (str) 5aa79f86205ad26188e0e26e28fb7ae7
    number of tables: 6
    number of key/value pairs: 7

In the "cache tables and key/values" section, the table name (engine name) is at
first position on the second there is the calculated expire date and on the
third and fourth position the key/value is shown.

About duckduckgo: The *vqd coode* of ddg depends on the query term and therefore
the key is a hash value of the query term (to not to store the raw query term).

In the "properties of ENGINES_CACHE" section all properties of the SQLiteAppl /
ExpireCache and their last modification date are shown::

    properties of ENGINES_CACHE
    ===========================
    [last modified: 2025-04-22 11:32:27] DB_SCHEMA           : 1
    [last modified: 2025-04-22 11:32:27] LAST_MAINTENANCE    :
    [last modified: 2025-04-22 11:32:27] crypt_hash          : ca612e3566fdfd7cf7efe2b1c9349f461158d07cb78a3750e5c5be686aa8ebdc
    [last modified: 2025-04-22 11:32:30] CACHE-TABLE--demo_offline: demo_offline
    [last modified: 2025-04-22 11:32:30] CACHE-TABLE--startpage: startpage
    [last modified: 2025-04-22 11:32:31] CACHE-TABLE--duckduckgo: duckduckgo
    [last modified: 2025-04-22 11:33:08] CACHE-TABLE--radio_browser: radio_browser
    [last modified: 2025-04-22 11:40:06] CACHE-TABLE--soundcloud: soundcloud
    [last modified: 2025-04-22 11:40:06] CACHE-TABLE--wolframalpha: wolframalpha

These properties provide information about the state of the ExpireCache and
control the behavior.  For example, the maintenance intervals are controlled by
the last modification date of the LAST_MAINTENANCE property and the hash value
of the password can be used to detect whether the password has been changed (in
this case the DB entries can no longer be decrypted and the entire cache must be
discarded).

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-03 08:39:12 +02:00
Markus Heiser
4cbfba9d7b [mod] ExpireCache - sqlite based key/value cache with expire time 2025-05-03 08:39:12 +02:00
Markus Heiser
4a594f1b53 [fix] ResourceWarning: unclosed database in sqlite3
Reported:

- https://github.com/inetol-infrastructure/searxng-container/issues/5

Related:

- https://github.com/searxng/searxng/issues/4405#issuecomment-2692352352

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-03 08:39:12 +02:00
Bnyro
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
return42
41e3a0baa7 [data] update searx.data - update_engine_descriptions.py 2025-05-02 16:45:47 +02:00
dependabot[bot]
11204459da [upd] web-client (simple): Bump less-loader in /client/simple
Bumps [less-loader](https://github.com/webpack-contrib/less-loader) from 12.2.0 to 12.3.0.
- [Release notes](https://github.com/webpack-contrib/less-loader/releases)
- [Changelog](https://github.com/webpack-contrib/less-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/less-loader/compare/v12.2.0...v12.3.0)

---
updated-dependencies:
- dependency-name: less-loader
  dependency-version: 12.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 16:06:36 +02:00
Markus Heiser
03787b2e5a [docs] fix link searx/languages.py to new file searx/sxng_locales.py
The language settings page in the documentation reference languages.py which was
removed in commit c9cd376

Closes: https://github.com/searxng/searxng/issues/4690
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-02 15:19:55 +02:00
dependabot[bot]
72294a9ffa [upd] web-client (simple): Bump webpack in /client/simple
Bumps [webpack](https://github.com/webpack/webpack) from 5.99.6 to 5.99.7.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.99.6...v5.99.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 14:50:13 +02:00
BrandonStudio
d47cf9db24 [feat] engine ChinaSo: support source filter for ChinaSo-News
* filtering ChinaSo-News results by source, option ``chinaso_news_source``
* add ChinaSo engine to the online docs https://docs.searxng.org/dev/engines/online/chinaso.html
* fix SearXNG categories in the settings.yml
* deactivate ChinaSo engines ``inactive: true`` until [1] is fixed
* configure network of the ChinaSo engines

[1] https://github.com/searxng/searxng/issues/4694

Signed-off-by: @BrandonStudio
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2025-05-02 14:22:51 +02:00
dependabot[bot]
705ebe64b5 [upd] pypi: Bump typer-slim from 0.15.2 to 0.15.3
Bumps [typer-slim](https://github.com/fastapi/typer) from 0.15.2 to 0.15.3.
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](https://github.com/fastapi/typer/compare/0.15.2...0.15.3)

---
updated-dependencies:
- dependency-name: typer-slim
  dependency-version: 0.15.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 13:46:47 +02:00
dependabot[bot]
b072b0f66b [upd] pypi: Bump setproctitle from 1.3.5 to 1.3.6
Bumps [setproctitle](https://github.com/dvarrazzo/py-setproctitle) from 1.3.5 to 1.3.6.
- [Changelog](https://github.com/dvarrazzo/py-setproctitle/blob/master/HISTORY.rst)
- [Commits](https://github.com/dvarrazzo/py-setproctitle/compare/version-1.3.5...version-1.3.6)

---
updated-dependencies:
- dependency-name: setproctitle
  dependency-version: 1.3.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 13:37:39 +02:00
dependabot[bot]
4beb5523f5 [upd] pypi: Bump certifi from 2025.1.31 to 2025.4.26
Bumps [certifi](https://github.com/certifi/python-certifi) from 2025.1.31 to 2025.4.26.
- [Commits](https://github.com/certifi/python-certifi/compare/2025.01.31...2025.04.26)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.4.26
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 13:37:11 +02:00
dependabot[bot]
54e6e2a96d [upd] web-client (simple): Bump stylelint in /client/simple
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.19.0 to 16.19.1.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.19.0...16.19.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 13:36:01 +02:00
searxng-bot
abcf8ca073 [l10n] update translations from Weblate
244e1f3f2 - 2025-04-30 - return42 <return42@noreply.codeberg.org>
2025-05-02 13:29:05 +02:00
dependabot[bot]
1a16281490 Bump vite from 6.3.3 to 6.3.4 in /client/simple
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.3.3 to 6.3.4.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.4/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.3.4
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 09:43:39 +02:00
Bnyro
fd33559cfb [fix] brave: fix images and videos engines 2025-04-30 08:28:04 +02:00
Denperidge
60e31eacfc [fix] pdia: dynamically fetch API key config file location
As suggested by @Bnyro at
https://github.com/searxng/searxng/pull/4652#discussion_r2055760390 !
2025-04-29 20:45:08 +02:00
return42
c45b970546 [data] update searx.data - update_currencies.py 2025-04-29 09:12:06 +02:00
Markus Heiser
a4251be397 [data] update searx.data - make data.traits
Related:

- https://github.com/searxng/searxng/pull/4687

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-29 09:11:33 +02:00
Markus Heiser
c20038e7c3 [fix] engine yahoo: replace fetch_traits by a list of languages
The Yahoo engine's fetch_traits function has been encountering an error in CI
jobs for several months [1], thus aborting the process for all other engines as
well.

The language selection dialog (which fetch_traits calls) requires an `EuConsent`
cookie. Strangely, the cookie is not needed for searching, which is why the
engine itself still works.

Since Yahoo won't be conquering any new marketplaces in the foreseeable future,
it should be sufficient to hard-implement the list of currently available
languages ​​(`yahoo_languages`).

[1] https://github.com/searxng/searxng/actions/runs/14720458830/job/41313149268

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-29 08:48:56 +02:00
return42
20e40ded6d [data] update searx.data - update_wikidata_units.py 2025-04-29 07:07:15 +02:00
return42
4de0766b76 [data] update searx.data - update_ahmia_blacklist.py 2025-04-29 07:06:49 +02:00
return42
6de83ca47f [data] update searx.data - update_firefox_version.py 2025-04-29 07:06:26 +02:00
return42
a32bcd54c5 [data] update searx.data - update_external_bangs.py 2025-04-29 07:06:10 +02:00
searxng-bot
c733aa83e8 [l10n] update translations from Weblate
bec89c8a4 - 2025-04-24 - Atul_Eterno <atul_eterno@noreply.codeberg.org>
97edb4d63 - 2025-04-23 - whytf <whytf@noreply.codeberg.org>
e7111d6ec - 2025-04-22 - prashere <prashere@noreply.codeberg.org>
f5eeda966 - 2025-04-20 - return42 <return42@noreply.codeberg.org>
2025-04-27 17:13:43 +02:00
dependabot[bot]
9dfc6f38d5 [upd] web-client (simple): Bump vite in /client/simple
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.3.2 to 6.3.3.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.3/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-27 10:16:44 +02:00
dependabot[bot]
e1076f5c35 [upd] web-client (simple): Bump @eslint/js in /client/simple
Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.24.0 to 9.25.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.25.1/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.25.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-27 10:16:26 +02:00
dependabot[bot]
8489817561 [upd] web-client (simple): Bump webpack in /client/simple
Bumps [webpack](https://github.com/webpack/webpack) from 5.99.5 to 5.99.6.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.99.5...v5.99.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-27 10:16:03 +02:00
dependabot[bot]
38ff1e4a7d [upd] web-client (simple): Bump stylelint in /client/simple
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.18.0 to 16.19.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.18.0...16.19.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 16.19.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-27 10:15:40 +02:00
dependabot[bot]
21cdb0332b [upd] web-client (simple): Bump eslint in /client/simple
Bumps [eslint](https://github.com/eslint/eslint) from 9.24.0 to 9.25.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.24.0...v9.25.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.25.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-27 10:15:33 +02:00
dependabot[bot]
30330617d9 [upd] pypi: Bump lxml from 5.3.2 to 5.4.0
Bumps [lxml](https://github.com/lxml/lxml) from 5.3.2 to 5.4.0.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-5.3.2...lxml-5.4.0)

---
updated-dependencies:
- dependency-name: lxml
  dependency-version: 5.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-26 13:46:56 +02:00
Markus Heiser
33729439c5 [fix] is_werkzeug_reload_active is not realted to python -m
Werkzeug's reloader is not active when was server is launched by uWSGI.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-24 17:24:51 +02:00
Markus Heiser
20ce88a274 Revert "[fix] is_werkzeug_reload_active is not realted to python -m"
This reverts commit 3392beb914.
2025-04-24 17:03:20 +02:00
Zhijie He
8595e467ce [fix] fix Quark engine calling 2025-04-24 16:17:34 +02:00
Markus Heiser
3392beb914 [fix] is_werkzeug_reload_active is not realted to python -m
Werkzeug's reloader is not active when was server is launched by::

    python -m searx.webapp

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-24 15:33:59 +02:00
Markus Heiser
c6c6d3027c [mod] internal ! and external !! bangs: ignore upper/lower case
Closes: https://github.com/searxng/searxng/issues/1223

Suggested-by: @dalf https://github.com/searxng/searxng/issues/1223#issuecomment-1133772363
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-24 10:40:18 +02:00
Markus Heiser
d19eb3903e [clean] drop unusable engine: server/project on curlie.org is broken
The websites of https://curlie.org are no longer usable, long runtimes and
recurring "Bad Gateway" messages .. the project is no longer maintained and is
therefore no longer useful in SearXNG.

Related: https://github.com/searxng/searxng/issues/1190
Closes: https://github.com/searxng/searxng/issues/3482

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-24 09:57:50 +02:00
Markus Heiser
f45d4145e6 [fix] typo in soundcloud engine
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-23 18:42:40 +02:00
Markus Heiser
937eb907d3 [data] update searx.data - make data.traits (mullvad leta)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-23 14:06:32 +02:00
Grant Lanham
851c0e5cc0 [fix] engine: re-implement mullvad leta integration
Re-writes the Mullvad Leta integration to work with the new breaking changes.

Mullvad Leta is a search engine proxy.  Currently Leta only offers text search
results not image, news or any other types of search result.  Leta acts as a
proxy to Google and Brave search results.

- Remove docstring comments regarding requiring the use of Mullvad VPN, which is
  no longer a hard requirement.

- configured two engines: ``mullvadleta`` (uses google) and
  ``mullvadleta brave`` (uses brave)

- since leta may not provide up-to-date search results, both search engines are
  disabled by default.

.. hint::

   Leta caches each search for up to 30 days.  For example, if you use search
   terms like ``news``, contrary to your intention you'll get very old results!

Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
Signed-off-by: Grant Lanham <contact@grantlanham.com>
2025-04-23 14:06:32 +02:00
Aadniz
07a94d4d2e [mod] include SEARXNG_METHOD environment variable 2025-04-23 07:29:26 +02:00
Markus Heiser
e9157b3c1a [fix] issues when launching a local development server
A local development server can be launched by one of these command lines::

    $ flask --app searx.webapp run
    $ python -m searx.webapp

The different ways of starting the server should lead to the same result, which
is generally the case.  However, if the modules are reloaded after code
changes (reload option), it must be avoided that the application is initialized
twice at startup.  We have already discussed this in 2022 [1][2].

Further information on this topic can be found in [3][4][5].

To test a bash in the ./local environment was started and the follwing commands
had been executed::

    $ ./manage pyenv.cmd bash --norc --noprofile
    (py3) SEARXNG_DEBUG=1 flask --app searx.webapp run --reload
    (py3) SEARXNG_DEBUG=1 python -m searx.webapp

Since the generic parts of the docs also initialize the app to generate doc from
it, the build of the docs was also tested::

    $ make docs.clean docs.live

[1] https://github.com/searxng/searxng/pull/1656#issuecomment-1214198941
[2] https://github.com/searxng/searxng/pull/1616#issuecomment-1206137468
[3] https://flask.palletsprojects.com/en/stable/api/#flask.Flask.run
[4] https://github.com/pallets/flask/issues/5307#issuecomment-1774646119
[5] https://stackoverflow.com/a/25504196

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-22 14:26:11 +02:00
dependabot[bot]
5ae3b3f17e [upd] web-client (simple): Bump vite-plugin-static-copy
Bumps [vite-plugin-static-copy](https://github.com/sapphi-red/vite-plugin-static-copy) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/sapphi-red/vite-plugin-static-copy/releases)
- [Changelog](https://github.com/sapphi-red/vite-plugin-static-copy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sapphi-red/vite-plugin-static-copy/compare/vite-plugin-static-copy@2.3.0...vite-plugin-static-copy@2.3.1)

---
updated-dependencies:
- dependency-name: vite-plugin-static-copy
  dependency-version: 2.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-18 09:46:01 +02:00
dependabot[bot]
50ac76ce94 [upd] web-client (simple): Bump vite in /client/simple
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.6 to 6.3.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.3.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-18 09:43:05 +02:00
searxng-bot
5aea044eb5 [l10n] update translations from Weblate
f290f4ffe - 2025-04-15 - return42 <return42@noreply.codeberg.org>
4a9134b03 - 2025-04-14 - DZDevelopers <dzdevelopers@noreply.codeberg.org>
a8c86581d - 2025-04-14 - aindriu80 <aindriu80@noreply.codeberg.org>
2b5395719 - 2025-04-11 - ayame30 <ayame30@noreply.codeberg.org>
448a443fa - 2025-04-11 - ayame30 <ayame30@noreply.codeberg.org>
2025-04-18 09:30:55 +02:00
Zhijie He
808dcaf1e2 [feat] engine: add Steam engine 2025-04-18 09:30:17 +02:00
Markus Heiser
777ba6ddf8 [fix] disable engine ansa by default
Reported-by: https://github.com/searxng/searxng/pull/4575#issuecomment-2813007107
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-17 16:50:57 +02:00
Tommaso Colella
8ca57748ff [fix] docs: changed "many" to "some" for clarity in contribution guide's privacy by design section 2025-04-17 16:47:52 +02:00
Tommaso Colella
30399c50e2 [fix] docs: typos and minor refinements in contribution_guide.rst 2025-04-17 16:47:52 +02:00
Tommaso Colella
e6467bce7c [fix] docs: better phrasing for many sections of contribution_guide.rst 2025-04-17 16:47:52 +02:00
Tommaso Colella
8ca2bbc4e9 [fix] docs: typos in dev contrib guide "it's might be because
of the tool" -> "it might be because the tool"
2025-04-17 16:47:52 +02:00
Tommaso Colella
a74593419f [fix] docs: typo in templates dev doc developerat -> developer at 2025-04-17 16:47:52 +02:00
Zhijie He
f94802f2d2 [feat] engines: add Hugging Face engine 2025-04-17 16:43:32 +02:00
Tommaso Colella
d1c584b961 [feat] engine: add engine for italian press agency ansa 2025-04-17 15:33:57 +02:00
Markus Heiser
81f3d15665 [fix] settings.yml files: doc & obsolete settings in the template
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-17 13:31:10 +02:00
Tommaso Colella
99ad69450d [fix] Result type: remove rstrip "/" form url normalization 2025-04-17 10:24:05 +02:00
RobinFrcd
087da66565 [feat] add SensCritique (FR) engine
Closes: https://github.com/searxng/searxng/issues/4623
2025-04-17 10:19:22 +02:00
Markus Heiser
b84ae39978 [fix] doc of setting server.base_url, env is SEARXNG_BASE_URL
Related:

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

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-16 14:54:46 +02:00
Tommaso Colella
391bb1268d [feat] engine: add microsoft learn engine 2025-04-12 11:14:13 +02:00
dependabot[bot]
2287a6826a Bump vite from 6.2.5 to 6.2.6 in /client/simple
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.5 to 6.2.6.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.6/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.2.6
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-11 18:23:56 +02:00
dependabot[bot]
b3971f89e2 [upd] web-client (simple): Bump less in /client/simple
Bumps [less](https://github.com/less/less.js) from 4.2.2 to 4.3.0.
- [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/compare/v4.2.2...v4.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-11 16:02:15 +02:00
Markus Heiser
a4e08a5c2f [upd] web-client (simple): Bump eslint, sharp, webpack
Closes: https://github.com/searxng/searxng/pull/4618
Closes: https://github.com/searxng/searxng/pull/4617
Closes: https://github.com/searxng/searxng/pull/4616
Closes: https://github.com/searxng/searxng/pull/4615

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-11 15:57:01 +02:00
grasdk
8ee51cc0f3 [fix] engine dokuwiki: basedir duplication
Dokuwiki searches behind reverse proxy had duplicate base path in the url,
creating a wrong url.

This patch exchanges string concat of URLs with urljoin [1] from urllib.parse.  This
eliminates the dual problem, while retaining the old functionality designed to
concatenate protocol, hostname and port (as base_url) with path.

[1] https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urljoin

Closes: https://github.com/searxng/searxng/issues/4598
2025-04-11 09:47:25 +02:00
dependabot[bot]
ed2953c59f [upd] pypi: Bump lxml from 5.3.1 to 5.3.2
Bumps [lxml](https://github.com/lxml/lxml) from 5.3.1 to 5.3.2.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-5.3.1...lxml-5.3.2)

---
updated-dependencies:
- dependency-name: lxml
  dependency-version: 5.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-11 09:25:19 +02:00
dependabot[bot]
e2fac7f306 [upd] pypi: Bump selenium from 4.30.0 to 4.31.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.30.0 to 4.31.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.30.0...selenium-4.31.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-version: 4.31.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-11 09:23:45 +02:00
dependabot[bot]
8db2a15307 [upd] pypi: Bump sphinx-issues from 5.0.0 to 5.0.1
Bumps [sphinx-issues](https://github.com/sloria/sphinx-issues) from 5.0.0 to 5.0.1.
- [Commits](https://github.com/sloria/sphinx-issues/compare/5.0.0...5.0.1)

---
updated-dependencies:
- dependency-name: sphinx-issues
  dependency-version: 5.0.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-11 09:23:30 +02:00
searxng-bot
92b8f71780 [l10n] update translations from Weblate
63157cd1f - 2025-04-10 - pfaca <pfaca@noreply.codeberg.org>
e50166782 - 2025-04-10 - return42 <return42@noreply.codeberg.org>
f7ed39011 - 2025-04-09 - Kita Ikuyo <kitakita@disroot.org>
c8786066f - 2025-04-08 - return42 <return42@noreply.codeberg.org>
dd4adf136 - 2025-04-08 - return42 <return42@noreply.codeberg.org>
df50952f0 - 2025-04-08 - return42 <return42@noreply.codeberg.org>
d9a9a0bad - 2025-04-06 - eatyourglory <eatyourglory@noreply.codeberg.org>
2025-04-11 09:21:14 +02:00
Markus Heiser
15384e8fc5 [fix] make docs - ERROR: Unknown target name: "auth_key"
BTW: fix a bug with sys.path: repo-root (not util) needs to added to generate
autodoc from scripts in ./searxng_extra

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-09 17:28:18 +02:00
Markus Heiser
b146b745a7 [fix] Meilisearch engine: Authorization Token When Integrating Meilisearch
`X-Meili-API-Key` has  been changed to `Authorization` [1]

[1] https://www.meilisearch.com/docs/reference/api/overview#authorization

Suggested-by: https://github.com/searxng/searxng/issues/4416#issuecomment-2781254841
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-07 08:44:00 +02:00
Markus Heiser
c185d07689 [build] /static 2025-04-06 19:21:07 +02:00
Markus Heiser
5a54372368 [fix] images cropped in Safari (webkit)
- Closes: https://github.com/searxng/searxng/issues/4156

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-06 19:21:07 +02:00
Markus Heiser
8c8aba8cf5 [fix] engine radio browser: get servers from DNS api.radio-browser.info
Do a DNS-lookup of 'all.api.radio-browser.info', add reverse lookup and select
randomly a URL from available servers

Closes: https://github.com/searxng/searxng/issues/4576
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-06 18:59:10 +02:00
Ivan Gabaldon
9424bac031 Don't hardcode uWSGI parameters (#4578)
* Initial update

* fix

* add todo note
2025-04-04 14:57:53 +02:00
dependabot[bot]
59228fb1db [upd] web-client (simple): Bump vite in /client/simple
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.4 to 6.2.5.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.5/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.5/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-04 11:47:26 +02:00
searxng-bot
f630a24311 [l10n] update translations from Weblate
faf95be5a - 2025-04-03 - sakistzimas <sakistzimas@noreply.codeberg.org>
e42efee66 - 2025-04-02 - Juno Takano <jutty@noreply.codeberg.org>
c1fbb26c4 - 2025-04-02 - return42 <return42@noreply.codeberg.org>
562d21fb9 - 2025-04-02 - ghose <ghose@noreply.codeberg.org>
1ea9e67c5 - 2025-04-01 - return42 <return42@noreply.codeberg.org>
daaa0b41e - 2025-03-31 - wags07 <wags07@noreply.codeberg.org>
52635ec5f - 2025-03-31 - return42 <return42@noreply.codeberg.org>
589ad13f2 - 2025-03-31 - return42 <return42@noreply.codeberg.org>
1f063c96e - 2025-03-31 - return42 <return42@noreply.codeberg.org>
c001e606d - 2025-03-31 - return42 <return42@noreply.codeberg.org>
9bc14f1a0 - 2025-03-31 - wags07 <wags07@noreply.codeberg.org>
6a524ecb4 - 2025-03-31 - return42 <return42@noreply.codeberg.org>
508fe79c7 - 2025-03-31 - return42 <return42@noreply.codeberg.org>
8c8db80e7 - 2025-03-31 - return42 <return42@noreply.codeberg.org>
c9f551913 - 2025-03-31 - AndersNordh <andersnordh@noreply.codeberg.org>
6c56adc71 - 2025-03-31 - artens <artens@noreply.codeberg.org>
15526190b - 2025-03-31 - Linerly <linerly@noreply.codeberg.org>
2102783df - 2025-03-31 - AndersNordh <andersnordh@noreply.codeberg.org>
fee510d78 - 2025-03-30 - kratos <makesocialfoss32@keemail.me>
d5c9b970c - 2025-03-30 - Fjuro <fjuro@noreply.codeberg.org>
94259815b - 2025-03-30 - return42 <return42@noreply.codeberg.org>
a448cf7da - 2025-03-29 - Outbreak2096 <outbreak2096@noreply.codeberg.org>
0c3ef7929 - 2025-03-29 - Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
ce2fbffe8 - 2025-03-29 - SomeTr <sometr@noreply.codeberg.org>
2025-04-04 10:21:19 +02:00
dependabot[bot]
4452358e87 Bump vite from 6.2.3 to 6.2.4 in /client/simple
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.3 to 6.2.4.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.4/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.4/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-03 09:25:43 +02:00
Markus Heiser
7546f88b1e [build] /static 2025-04-03 09:03:35 +02:00
Markus Heiser
d4c6c9401d [fix] client/simple: add missing "swiped-events" devDependencies (import)
In commit 1a3543d4b in PR-4284 [1] the swiped-events [2] were forgotten to be
migrated.  In this patch, the event library is added to the ``devDependencies``
and imported by::

    import "../../../node_modules/swiped-events/src/swiped-events.js

[1] https://github.com/searxng/searxng/pull/4284
[2] https://www.npmjs.com/package/swiped-events

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Reported-by: https://github.com/searxng/searxng/pull/4198#issuecomment-2770734321
2025-04-03 09:03:35 +02:00
Markus Heiser
e6308b8167 [fix] hardening against arguments of type None, where str or dict is expected
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-04-01 11:13:47 +02:00
Zhijie He
08885d0614 [feat] add Quark autocomplete support
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-03-31 14:59:49 +02:00
Zhijie He
7b4612e862 [feat] engines: add Ollama engine 2025-03-30 14:25:58 +02:00
Bnyro
9ffa9fb730 [feat] engines: add reuters news engine 2025-03-30 13:56:09 +02:00
Tommaso Colella
5daa4f0460 [feat] engine: add engine for italian online newspaper "il post" 2025-03-30 13:45:06 +02:00
Zhijie He
33661cc5c3 [feat] engines: add Quark engine
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-03-30 13:20:35 +02:00
Zhijie He
b231cb4b59 [feat] engines: add Niconico videos engine
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-03-30 12:42:31 +02:00
naughtymommy42069
c8b419fcbb [feat] engine: add bitchute 2025-03-30 12:41:43 +02:00
Markus Heiser
237267ffbe [data] update searx.data - update_engine_descriptions.py 2025-03-30 09:54:03 +02:00
Markus Heiser
50f92779bd [refactor] migrate plugins from "module" to class SXNGPlugin
This patch brings two major changes:

- ``Result.filter_urls(..)`` to pass a filter function for URL fields
- The ``enabled_plugins:`` section in SearXNG's settings do no longer exists.

To understand plugin development compile documentation:

    $ make docs.clean docs.live

and read http://0.0.0.0:8000/dev/plugins/development.html

There is no longer a distinction between built-in and external plugin, all
plugins are registered via the settings in the ``plugins:`` section.

In SearXNG, plugins can be registered via a fully qualified class name.  A
configuration (`PluginCfg`) can be transferred to the plugin, e.g. to activate
it by default / *opt-in* or *opt-out* from user's point of view.

built-in plugins
================

The built-in plugins are all located in the namespace `searx.plugins`.

.. code:: yaml

    plugins:

      searx.plugins.calculator.SXNGPlugin:
        active: true

      searx.plugins.hash_plugin.SXNGPlugin:
        active: true

      searx.plugins.self_info.SXNGPlugin:
        active: true

      searx.plugins.tracker_url_remover.SXNGPlugin:
        active: true

      searx.plugins.unit_converter.SXNGPlugin:
        active: true

      searx.plugins.ahmia_filter.SXNGPlugin:
        active: true

      searx.plugins.hostnames.SXNGPlugin:
        active: true

      searx.plugins.oa_doi_rewrite.SXNGPlugin:
        active: false

      searx.plugins.tor_check.SXNGPlugin:
        active: false

external plugins
================

SearXNG supports *external plugins* / there is no need to install one, SearXNG
runs out of the box.

- Only show green hosted results: https://github.com/return42/tgwf-searx-plugins/

To get a developer installation in a SearXNG developer environment:

.. code:: sh

   $ git clone git@github.com:return42/tgwf-searx-plugins.git
   $ ./manage pyenv.cmd python -m \
         pip install -e tgwf-searx-plugins

To register the plugin in SearXNG add ``only_show_green_results.SXNGPlugin`` to
the ``plugins:``:

.. code:: yaml

    plugins:
      # ...
      only_show_green_results.SXNGPlugin:
        active: false

Result.filter_urls(..)
======================

The ``Result.filter_urls(..)`` can be used to filter and/or modify URL fields.
In the following example, the filter function ``my_url_filter``:

.. code:: python

   def my_url_filter(result, field_name, url_src) -> bool | str:
       if "google" in url_src:
           return False              # remove URL field from result
       if "facebook" in url_src:
           new_url = url_src.replace("facebook", "fb-dummy")
           return new_url            # return modified URL
       return True                   # leave URL in field unchanged

is applied to all URL fields in the :py:obj:`Plugin.on_result` hook:

.. code:: python

   class MyUrlFilter(Plugin):
       ...
       def on_result(self, request, search, result) -> bool:
           result.filter_urls(my_url_filter)
           return True

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-29 10:16:43 +01:00
return42
d36da0a6c3 [data] update searx.data - update_ahmia_blacklist.py 2025-03-29 09:49:27 +01:00
return42
d7ca257fcd [data] update searx.data - update_firefox_version.py 2025-03-29 09:48:39 +01:00
return42
98024d8518 [data] update searx.data - update_wikidata_units.py 2025-03-29 09:48:06 +01:00
return42
96d0854a50 [data] update searx.data - update_currencies.py 2025-03-29 09:47:33 +01:00
Aadniz
ecee73eafd [fix] presearch engine: Unexpected crash if duration not in videos 2025-03-28 16:26:39 +01:00
searxng-bot
1189b1906c [l10n] update translations from Weblate
9a0c9e142 - 2025-03-27 - return42 <return42@noreply.codeberg.org>
8e06fb05a - 2025-03-27 - return42 <return42@noreply.codeberg.org>
8e683ef69 - 2025-03-27 - return42 <return42@noreply.codeberg.org>
3588715a0 - 2025-03-27 - return42 <return42@noreply.codeberg.org>
acf531db2 - 2025-03-27 - return42 <return42@noreply.codeberg.org>
b4b09bdef - 2025-03-27 - return42 <return42@noreply.codeberg.org>
8bef57082 - 2025-03-27 - return42 <return42@noreply.codeberg.org>
239bae388 - 2025-03-27 - return42 <return42@noreply.codeberg.org>
ca6a6fc4f - 2025-03-27 - return42 <return42@noreply.codeberg.org>
2a19a52db - 2025-03-27 - return42 <return42@noreply.codeberg.org>
7b217fad1 - 2025-03-24 - Haraldher <haraldher@noreply.codeberg.org>
649d15f55 - 2025-03-24 - Haraldher <haraldher@noreply.codeberg.org>
2025-03-28 08:51:09 +01:00
dependabot[bot]
4a0ff84a40 [upd] pypi: Bump selenium from 4.29.0 to 4.30.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.29.0 to 4.30.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.29.0...selenium-4.30.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-28 08:50:32 +01:00
dependabot[bot]
d02d432862 [upd] pypi: Bump yamllint from 1.36.2 to 1.37.0
Bumps [yamllint](https://github.com/adrienverge/yamllint) from 1.36.2 to 1.37.0.
- [Release notes](https://github.com/adrienverge/yamllint/releases)
- [Changelog](https://github.com/adrienverge/yamllint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/adrienverge/yamllint/compare/v1.36.2...v1.37.0)

---
updated-dependencies:
- dependency-name: yamllint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-28 08:50:10 +01:00
dependabot[bot]
3c537f958f [upd] web-client (simple): Bump stylelint in /client/simple
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.16.0 to 16.17.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.16.0...16.17.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-28 08:49:44 +01:00
dependabot[bot]
a2ad1bed00 [upd] web-client (simple): Bump eslint in /client/simple
Bumps [eslint](https://github.com/eslint/eslint) from 9.22.0 to 9.23.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.22.0...v9.23.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-28 08:48:46 +01:00
Markus Heiser
f62f6194e3 [build] /static 2025-03-27 12:27:37 +01:00
Markus Heiser
68d871dea0 [fix] image deatils view: vertical overflow in results.image-detail-open
overflow-y: scroll
  If the information on the image exceeds the visible area in the detail view,
  there must be a way to access this information via scroll.

max-height: -17rem versus 7rem
  There are new fields in the lower area, so the height of the image (top) must
  be reduced

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-27 12:27:37 +01:00
Markus Heiser
150b2e21fd [fix] make docs -> ERROR: Unknown target name: "google: max 50 pages".
Fix the issues reported by sphinx build::

    docstring of searx.engines.google.max_page:1: ERROR: Unknown target name: "google: max 50 pages".
    docstring of searx.engines.google_images.max_page:1: ERROR: Unknown target name: "google: max 50 pages".
    docstring of searx.engines.google_scholar.max_page:1: ERROR: Unknown target name: "google: max 50 pages".

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-27 06:57:28 +01:00
Aadniz
02f5002a5f [fix] baidu engine: properly decoding HTML escape codes 2025-03-27 06:11:39 +01:00
Bnyro
4dfc47584d [refactor] duration strings: move parsing logic to utils.py 2025-03-25 16:48:44 +01:00
Bnyro
c28d35c7fc [fix] duckduckgo news: unescaped html sequences in description 2025-03-25 16:14:36 +01:00
dependabot[bot]
2ad987c711 Bump vite from 6.2.2 to 6.2.3 in /client/simple
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.2 to 6.2.3.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.3/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.3/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-25 16:04:41 +01:00
Markus Heiser
5986629c6b [fix] make data.traits - partial revert of commit 30a8204
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] 96a6e3dcb2/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-22 07:52:36 +01:00
dependabot[bot]
7e680d8e8e [upd] web-client (simple): Bump stylelint in /client/simple
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.15.0 to 16.16.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.15.0...16.16.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-21 11:43:46 +01:00
Ikko Eltociear Ashimine
2482646323 [fix] typo in doc-str: offical -> official 2025-03-21 11:05:54 +01:00
Markus Heiser
96a6e3dcb2 [fix] Results.url: don't normalize www.example.com to example.com
Hostname "www" in URL results can't be normalized to an empty string:

- https://www.tu-darmstadt.de/
- https://tu-darmstadt.de/

Reported-By: @Bnyro <bnyro@tutanota.com>
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-21 10:28:34 +01:00
searxng-bot
ef99cc472d [l10n] update translations from Weblate
efbb54229 - 2025-03-16 - gkkulik <gkkulik@noreply.codeberg.org>
f76dddd02 - 2025-03-15 - cc5efd7b0 <cc5efd7b0@noreply.codeberg.org>
2025-03-21 08:40:14 +01:00
dependabot[bot]
64b52d485b [upd] pypi: Bump yamllint from 1.36.0 to 1.36.2
Bumps [yamllint](https://github.com/adrienverge/yamllint) from 1.36.0 to 1.36.2.
- [Release notes](https://github.com/adrienverge/yamllint/releases)
- [Changelog](https://github.com/adrienverge/yamllint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/adrienverge/yamllint/compare/v1.36.0...v1.36.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-21 08:39:32 +01:00
dependabot[bot]
de6b027ec7 [upd] pypi: Bump tomli from 2.0.2 to 2.2.1
Bumps [tomli](https://github.com/hukkin/tomli) from 2.0.2 to 2.2.1.
- [Changelog](https://github.com/hukkin/tomli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hukkin/tomli/compare/2.0.2...2.2.1)

---
updated-dependencies:
- dependency-name: tomli
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-21 08:38:48 +01:00
dependabot[bot]
f687306a95 [upd] pypi: Bump pylint from 3.3.4 to 3.3.6
Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.3.4 to 3.3.6.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.3.4...v3.3.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-21 08:38:16 +01:00
Bnyro
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
Aadniz
556db857aa [fix] presearch engine: News and Videos formatted incorrectly 2025-03-20 20:44:43 +01:00
Tan Yong Sheng
40feede51e [fix] engine: core.ac.uk implement API v3 / v2 is no longer supported 2025-03-19 17:51:00 +01:00
Alexandre Flament
82b9e533b2 [fix] static.build: upgrade min. node version to 18.17
For sharp [1] dependency / this commit was cherry picked from PR #3157

[1] https://www.npmjs.com/package/sharp
2025-03-18 06:19:44 +01:00
Bnyro
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
Brock Vojkovic
84636ef49a [feat] add docker healthcheck back (#4504) 2025-03-16 11:34:26 +01:00
Markus Heiser
a1d5add718 fixup! [fix] fix invalid escape error in Baidu Images & default config typo 2025-03-15 17:14:54 +01:00
Zhijie He
38caa49540 [fix] fix invalid escape error in Baidu Images & default config typo 2025-03-15 17:14:54 +01:00
Zhijie He
4ce7f1accc [feat]: engines add images & kaifa from baidu.com 2025-03-15 17:14:54 +01:00
Ivan Gabaldon
11b5ae186b container: add default support for IPv6 (#4448)
* Initial update

* update docs and test files
2025-03-15 11:20:37 +01:00
Markus Heiser
583007fd04 [build] /static 2025-03-15 10:36:33 +01:00
Markus Heiser
da7b069d6e [fix] plugins: bugfix of tor_check and unit_converter
Closes: https://github.com/searxng/searxng/issues/4461
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-15 10:36:33 +01:00
Markus Heiser
f49b2c94a9 [mod] migrate all key-value.html templates to KeyValue type
The engines now all use KeyValue results and return the results in a
EngineResults object.

The sqlite engine can return MainResult results in addition to KeyValue
results (based on engine's config in settings.yml),

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-15 10:36:33 +01:00
Markus Heiser
af5dbdf768 [mod] typification of SearXNG: add new result type KeyValue
This patch adds a new result type: KeyValue

- Python class:   searx/result_types/keyvalue.py
- Jinja template: searx/templates/simple/result_templates/keyvalue.html
- CSS (less)      client/simple/src/less/result_types/keyvalue.less

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-15 10:36:33 +01:00
Markus Heiser
8769b7c6d6 [refactor] typification of SearXNG (MainResult) / result items (part 2)
The class ReslutContainer has been revised, it can now handle the typed Result
items of classes:

- MainResult
- LegacyResult (a dict wrapper for backward compatibility)

Due to the now complete typing of theses three clases, instead of the *getitem*
accesses, the fields can now be accessed directly via attributes (which is also
supported by the IDE).

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-15 10:36:33 +01:00
Markus Heiser
d6ce29f7f0 [build] /static 2025-03-15 09:03:49 +01:00
Markus Heiser
eb1bdea865 [fix] make static.build.commit: add client/simple/package-lock.json
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-15 09:03:49 +01:00
bearz314
85bdff6b0a [web-client] simple theme: dynamic vertical height
On mobile devices with browser chrome (UI) that recedes on scroll,
'vh' includes the height covered by chrome, which 'dvh' does not.
By using 'dvh' the footer is immediately visible on the homepage
without scrollbar on mobile devices.
2025-03-15 09:03:49 +01:00
dependabot[bot]
f7ef4396b1 [upd] pypi: Bump aiounittest from 1.4.3 to 1.5.0
Bumps [aiounittest](https://github.com/kwarunek/aiounittest) from 1.4.3 to 1.5.0.
- [Release notes](https://github.com/kwarunek/aiounittest/releases)
- [Commits](https://github.com/kwarunek/aiounittest/compare/1.4.3...1.5.0)

---
updated-dependencies:
- dependency-name: aiounittest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-15 08:04:23 +01:00
dependabot[bot]
83f6545903 [upd] pypi: Bump yamllint from 1.35.1 to 1.36.0
Bumps [yamllint](https://github.com/adrienverge/yamllint) from 1.35.1 to 1.36.0.
- [Changelog](https://github.com/adrienverge/yamllint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/adrienverge/yamllint/compare/v1.35.1...v1.36.0)

---
updated-dependencies:
- dependency-name: yamllint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-15 07:52:10 +01:00
searxng-bot
6afe0e29a7 [l10n] update translations from Weblate
efa1f5656 - 2025-03-13 - return42 <return42@noreply.codeberg.org>
5e0a76d3c - 2025-03-13 - return42 <return42@noreply.codeberg.org>
2025-03-15 07:50:21 +01:00
dependabot[bot]
523871ae7b [upd] web-client (simple): Bump @eslint/js in /client/simple
Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.21.0 to 9.22.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.22.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-15 07:49:52 +01:00
dependabot[bot]
505f7732d8 [upd] web-client (simple): Bump vite in /client/simple
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.1 to 6.2.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.2/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-15 07:49:44 +01:00
dependabot[bot]
896cb3ab46 [upd] web-client (simple): Bump eslint in /client/simple
Bumps [eslint](https://github.com/eslint/eslint) from 9.21.0 to 9.22.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.21.0...v9.22.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-15 07:49:34 +01:00
XLion
3fe602a468 [fix] "[fix] uwsgi: don't set static-expires": Clean comment that forgot to cleen
I noticed this when I tracking the difference between my current `settings.yml` and the `settings.yml`.
2025-03-11 11:04:34 +01:00
Brock Vojkovic
8b1d73c5b9 [feat] add docker into devcontainer (#4475) 2025-03-09 09:40:49 +01:00
Aadniz
a88b4d7036 [fix] presearch engine: domain sometimes included in beginning of titles 2025-03-08 12:39:16 +01:00
Austin-Olacsi
73d50f5748 [feat] add bilibili support to get get_embeded_stream_url 2025-03-08 10:47:30 +01:00
Markus Heiser
523d2a7683 [fix] uwsgi: don't set static-expires
As long we don't have a working solution for cache busting [3][4] we should not
set an expire time in thw uWSGI config.

The default procedure in every web browser is the "304 Not Modified" [2] and
this default procedure should also be sufficient for us as long as we have not
implemented a complete alternative (cache busting) / form [1]

> By default uWSGI will add a Last-Modified [2] header to all static responses,
> and will honor the If-Modified-Since [2] request header.

[1] https://uwsgi-docs.readthedocs.io/en/latest/StaticFiles.html#setting-the-expires-headers
[2] https://developer.mozilla.org/de/docs/Web/HTTP/Status/304
[3] https://github.com/searxng/searxng/pull/4433
[4] https://github.com/searxng/searxng/issues/964

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-08 09:08:03 +01:00
Aadniz
4884747508 [fix] presearch engine: Title showing <em> html code 2025-03-07 21:24:35 +01:00
Markus Heiser
eb3633629a [fix] set language for engines from chinese market (no i18n index nor UI)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-07 19:59:13 +01:00
Loris
02b76c8389 [fix] engine qwant: add tgp and llm arguments to avoid CAPTCHA 2025-03-07 18:58:45 +01:00
Aadniz
67a8b66f75 [README] Updated logo paths
Since the commit a207f5d035, logos has been moved and README.rst needs to point to the new paths.
2025-03-07 13:40:31 +01:00
Markus Heiser
08a90d46d6 [doc] add missing docs for the search.max_page setting
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-07 10:07:41 +01:00
dependabot[bot]
e7cb18c3dd [upd] web-client (simple): Bump vite-plugin-static-copy
Bumps [vite-plugin-static-copy](https://github.com/sapphi-red/vite-plugin-static-copy) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/sapphi-red/vite-plugin-static-copy/releases)
- [Changelog](https://github.com/sapphi-red/vite-plugin-static-copy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sapphi-red/vite-plugin-static-copy/compare/vite-plugin-static-copy@2.2.0...vite-plugin-static-copy@2.3.0)

---
updated-dependencies:
- dependency-name: vite-plugin-static-copy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-07 09:34:05 +01:00
dependabot[bot]
9a50f6c9a1 [upd] web-client (simple): Bump vite in /client/simple
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/create-vite@6.2.1/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-07 09:21:34 +01:00
dependabot[bot]
00bae78463 [upd] web-client (simple): Bump stylelint in /client/simple
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.14.1 to 16.15.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.14.1...16.15.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-07 09:21:16 +01:00
dependabot[bot]
375f0c4a79 [upd] pypi: Bump mock from 5.1.0 to 5.2.0
Bumps [mock](https://github.com/testing-cabal/mock) from 5.1.0 to 5.2.0.
- [Changelog](https://github.com/testing-cabal/mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/testing-cabal/mock/compare/5.1.0...5.2.0)

---
updated-dependencies:
- dependency-name: mock
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-07 08:17:31 +01:00
dependabot[bot]
424cbf7851 [upd] pypi: Bump jinja2 from 3.1.5 to 3.1.6
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.5 to 3.1.6.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.5...3.1.6)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-07 08:17:14 +01:00
searxng-bot
860f0a35ac [l10n] update translations from Weblate
a516df5a2 - 2025-03-06 - DanielBoone <danielboone@noreply.codeberg.org>
2763a5d77 - 2025-03-06 - return42 <return42@noreply.codeberg.org>
4a3a81c9b - 2025-03-06 - marc-lopez <marc-lopez@noreply.codeberg.org>
d2bd5b048 - 2025-03-05 - MonsoonFire <monsoonfire@noreply.codeberg.org>
752b558d6 - 2025-03-05 - buiducnhat <buiducnhat@noreply.codeberg.org>
0ff2ccf43 - 2025-03-04 - marc-lopez <marc-lopez@noreply.codeberg.org>
462a0625d - 2025-03-03 - Juno Takano <jutty@noreply.codeberg.org>
5cb41045c - 2025-03-02 - gkkulik <gkkulik@noreply.codeberg.org>
e599c3942 - 2025-03-02 - gkkulik <gkkulik@noreply.codeberg.org>
d44128eda - 2025-03-02 - gkkulik <gkkulik@noreply.codeberg.org>
2025-03-07 08:16:45 +01:00
Bubu
b8671c7a4a [feat] engines: add baidu (general) 2025-03-07 06:59:28 +01:00
Zhijie He
066aabc112 [feat] engines: add www.acfun.cn 2025-03-06 17:52:16 +01:00
Zhijie He
8fe4904619 [feat] engines: add www.iqiyi.com
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-03-06 17:28:14 +01:00
Zhijie He
08d08475fc [feat] engines: add www.chinaso.com
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-03-06 17:23:11 +01:00
Markus Heiser
194f222203 [fix] engines: Google-Web & Google-Video (random arc_id)
Both enghines have been reported ``TooManyRequests``, additionaly Google-Videos
thumbnails needed a review.

Based on the research from @unixfox [1] this patch generates every hour a new random
``arc_id``.

[1] https://github.com/searxng/searxng/issues/4435#issuecomment-2703279522

Closes:

- https://github.com/searxng/searxng/issues/4435
- https://github.com/searxng/searxng/issues/4431

Related:

- https://github.com/searxng/searxng/discussions/4434
- https://github.com/searxng/searxng/discussions/4429

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-06 15:43:53 +01:00
Markus Heiser
8984d7ae02 [fix] brave engine: add sec-fetch headers and source=web argument
The intention is to reduce the "TooManyRequestsException".

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-02 18:19:55 +01:00
Zhijie He
b0beb307ca [chore] add timediff field for sogou_videos
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-03-02 13:31:31 +01:00
Zhijie He
76f52b5b45 [feat] add Sogou WeChat article search support 2025-03-02 13:31:31 +01:00
Zhijie He
97aa5a779b [feat] add Sogou engine for searxng
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-03-02 13:31:31 +01:00
Zhijie He
71d1504e57 [feat] add 360search engine for searxng
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-03-02 13:25:35 +01:00
Markus Heiser
80f5fad16e [fix] add backward compatibility for the "enabled_plugins:"
Before #4183 a builtin plugin was *defautlt_on* when it is listed in the
"enabled_plugins" settings, this patch restores the previous behavior.

Not part of this patch but just to mentioning in context of #4263:

  In the long term, we will abolish the "enabled_plugins:" setting and combine
  all options for the plugins in the "plugins:" setting, as is already planned
  in the PR #4282

Closes: https://github.com/searxng/searxng/issues/4263
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-01 18:02:31 +01:00
Markus Heiser
0c2076ca5b [doc] minor improvements to the favicon docs (cache.db_url)
Related:

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

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-01 18:02:05 +01:00
Bnyro
a51416c7c3 [feat] engines: add openclipart.org 2025-03-01 18:01:51 +01:00
Markus Heiser
d0022d86d2 [refactor] soundcloud engine
Closes: https://github.com/searxng/searxng/issues/4226
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-01 17:51:14 +01:00
Markus Heiser
1d16b94279 [fix] wikidata: increase wikidata queries timeout
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 12:21:29 +01:00
return42
30a820437d [data] update searx.data - update_engine_traits.py 2025-03-01 09:43:06 +01:00
Markus Heiser
03419078ef [fix] bing fetch engine traits - adjusted XPath selectors
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-01 09:43:06 +01:00
return42
01e2b3e325 [data] update searx.data - update_firefox_version.py 2025-03-01 07:47:48 +01:00
return42
ccf485c519 [data] update searx.data - update_wikidata_units.py 2025-03-01 07:47:24 +01:00
return42
64810ee911 [data] update searx.data - update_ahmia_blacklist.py 2025-03-01 07:44:28 +01:00
return42
a4b120c33d [data] update searx.data - update_engine_descriptions.py 2025-03-01 07:43:29 +01:00
return42
73e4128970 [data] update searx.data - update_external_bangs.py 2025-03-01 07:43:00 +01:00
dependabot[bot]
355883f366 [upd] pypi: Bump typer-slim from 0.15.1 to 0.15.2
Bumps [typer-slim](https://github.com/fastapi/typer) from 0.15.1 to 0.15.2.
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](https://github.com/fastapi/typer/compare/0.15.1...0.15.2)

---
updated-dependencies:
- dependency-name: typer-slim
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-28 12:58:29 +01:00
dependabot[bot]
b4b1a61562 [upd] pypi: Bump setproctitle from 1.3.4 to 1.3.5
Bumps [setproctitle](https://github.com/dvarrazzo/py-setproctitle) from 1.3.4 to 1.3.5.
- [Changelog](https://github.com/dvarrazzo/py-setproctitle/blob/master/HISTORY.rst)
- [Commits](https://github.com/dvarrazzo/py-setproctitle/compare/version-1.3.4...version-1.3.5)

---
updated-dependencies:
- dependency-name: setproctitle
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-28 12:57:45 +01:00
searxng-bot
28b5cbf276 [l10n] update translations from Weblate
0e9536840 - 2025-02-24 - dauiau <dauiau@users.noreply.translate.codeberg.org>
047501d2d - 2025-02-25 - return42 <return42@users.noreply.translate.codeberg.org>
647b20923 - 2025-02-21 - kratos <kratos@users.noreply.translate.codeberg.org>
288d0d4c8 - 2025-02-21 - guenael <guenael@users.noreply.translate.codeberg.org>
2025-02-28 12:57:15 +01:00
dependabot[bot]
d9d5e9140e [upd] web-client (simple): Bump globals in /client/simple
Bumps [globals](https://github.com/sindresorhus/globals) from 15.15.0 to 16.0.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v15.15.0...v16.0.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-28 12:56:27 +01:00
Markus Heiser
cd1b88e916 [mod] bump copy-webpack-plugin 13.0.2, eslint 9.21 & vite 6.2.0
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:41:06 +01:00
Markus Heiser
4e195e1000 [mod] bump copy-webpack-plugin 13.0.2, eslint 9.21 & vite 6.2.0
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:38:59 +01:00
Markus Heiser
d5ba3bf150 [build] /static 2025-02-28 12:27:41 +01:00
Markus Heiser
485f1f8eff [upd] npm: Bump eslint from 9.19.0 to 9.20.1 in /client/simple
Related:

- https://github.com/searxng/searxng/pull/4322

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:27:41 +01:00
Markus Heiser
8b864ed111 [fix] simple template - video.html fix button icon to icon_small
BTW: Rename the manufacturer-specific name ``ion-icon`` of the icon set in
SerXNG to ``sxng-icon-set`` --> The icon set can be assembled together as
desired in the FE and should therefore not have a manufacturer-specific name in
the style and template definitions.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:27:41 +01:00
Markus Heiser
6500d73714 [web-client] integrate the migrated theme in the github CI
- upgrade to ubuntu-24.04 to get NodeJS v20
- remove DEBUG (V=1) environment / in a ViteJS env the DEBUG environment is
  reserved for interactive debugging tasks (not for verbose build messages).

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:27:41 +01:00
Markus Heiser
2bf77f5d2d [web-client] integrate the migrated theme in the development workflows
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:27:41 +01:00
Markus Heiser
1a3543d4b2 [web-client] simple theme: final build by vite & clean up grunt leftovers
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:27:41 +01:00
Markus Heiser
872e09d103 [web-client] simple theme: move SVGs to client/simple/src and deploy to static by plg_svg2svg
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:27:41 +01:00
Markus Heiser
189dd0155d [web-client] simple theme: refactor jinja_svg_catalog and cleanup icon names
This patch implements the template generation of the template:

  searx/templates/simple/icons.html

by the way the icon set (the icon names) has been normalized:

  film-outline   --> film
  magnet-outline --> magnet
  ..
  warning        --> alert

Some missing (categorie) icons had been added.

Some of the ionicons are not suitable for a dark theme, we fixed the svg
manually in src/svg/ionicons:

- https://github.com/searxng/searxng/pull/4284#issuecomment-2680550342

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:27:41 +01:00
Markus Heiser
30ee34d3ea [web-client] simple theme: vite plugins plg_svg2png & plg_svg2svg
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:27:41 +01:00
Markus Heiser
a207f5d035 [web-client] simple theme: move src/brand to client/simple/src
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:27:41 +01:00
Markus Heiser
d29ca7d593 [web-client] simple theme: stylelint-prettier LESS source files
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:27:41 +01:00
Markus Heiser
a8ed79b730 [web-client] simple theme: stylelint LESS source files
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:27:41 +01:00
Markus Heiser
b74496b192 [web-client] simple theme: eslint JS source files
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:27:41 +01:00
Markus Heiser
7a6ea56565 [web-client] simple theme: vite build -- CSS sourcemaps still missing!!!
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:27:41 +01:00
Markus Heiser
a1132deaa4 [web-client] simple theme: move sources to client/simple/src
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-28 12:27:41 +01:00
Markus Heiser
b6487b70aa [web-client] simple theme: build & development env based on vite.
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>
2025-02-28 12:27:41 +01:00
Markus Heiser
e86bfa163b Revert "[feat] add HEALTHCHECK in Dockerfile"
This reverts commit dabe425499.
2025-02-26 11:55:43 +01:00
Markus Heiser
333d536937 Revert "Updated health check in Dockerfile"
This reverts commit 1fd4dab3b4.
2025-02-26 11:55:43 +01:00
Salvatore Gabriele La Greca
1fd4dab3b4 Updated health check in Dockerfile 2025-02-26 10:20:51 +01:00
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
dependabot[bot]
cb0a75bad9 [upd] pypi: Bump selenium from 4.28.1 to 4.29.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.28.1 to 4.29.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits/selenium-4.29.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-26 07:18:24 +01:00
Brock Vojkovic
dabe425499 [feat] add HEALTHCHECK in Dockerfile 2025-02-26 07:17:49 +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
c2804c51e2 [doc] Add myself for trying to improve searxng 2025-02-20 07:55:45 +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
dependabot[bot]
f92bfebe21 [upd] pypi: Bump lxml from 5.3.0 to 5.3.1
Bumps [lxml](https://github.com/lxml/lxml) from 5.3.0 to 5.3.1.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-5.3.0...lxml-5.3.1)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-15 07:16:00 +01:00
dependabot[bot]
0eb23c490d [upd] pypi: Bump aiounittest from 1.4.2 to 1.4.3
Bumps [aiounittest](https://github.com/kwarunek/aiounittest) from 1.4.2 to 1.4.3.
- [Release notes](https://github.com/kwarunek/aiounittest/releases)
- [Commits](https://github.com/kwarunek/aiounittest/compare/1.4.2...1.4.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-15 07:15:35 +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
dependabot[bot]
739822f705 [upd] pypi: Bump babel from 2.16.0 to 2.17.0
Bumps [babel](https://github.com/python-babel/babel) from 2.16.0 to 2.17.0.
- [Release notes](https://github.com/python-babel/babel/releases)
- [Changelog](https://github.com/python-babel/babel/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-babel/babel/compare/v2.16.0...v2.17.0)

---
updated-dependencies:
- dependency-name: babel
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-07 17:06:09 +01:00
Markus Heiser
d45dea56c5 [fix] selenium: binary is not a Firefox executable
Since Ubuntu installs firefox frrom snap, we can't use any longer
``Browser('firefox')``.

[1] https://github.com/searxng/searxng/pull/3663#issuecomment-2255963036
[2] https://splinter.readthedocs.io/en/latest/drivers/firefox.html#custom-binary-path

Suggested-by: @allendema
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-07 17:05:06 +01:00
Markus Heiser
8c610404bd [upd] upgrade: github actions / to ubuntu: 24.04 / to nvm: node 20.15
- ubuntu-20.04 --> ubuntu-24.04

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-02-07 17:05:06 +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
dependabot[bot]
6324a9752a [upd] pypi: Bump certifi from 2024.12.14 to 2025.1.31
Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.12.14 to 2025.1.31.
- [Commits](https://github.com/certifi/python-certifi/compare/2024.12.14...2025.01.31)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-31 08:58:22 +01:00
dependabot[bot]
d7602aa4f1 [upd] pypi: Bump sphinx-notfound-page from 1.0.4 to 1.1.0
Bumps [sphinx-notfound-page](https://github.com/readthedocs/sphinx-notfound-page) from 1.0.4 to 1.1.0.
- [Changelog](https://github.com/readthedocs/sphinx-notfound-page/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/readthedocs/sphinx-notfound-page/compare/1.0.4...1.1.0)

---
updated-dependencies:
- dependency-name: sphinx-notfound-page
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-31 08:57:55 +01:00
dependabot[bot]
157c9267ec [upd] pypi: Bump pylint from 3.3.3 to 3.3.4
Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.3.3 to 3.3.4.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.3.3...v3.3.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-31 08:57:18 +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
dependabot[bot]
fa50324dae [upd] pypi: Bump selenium from 4.27.1 to 4.28.1
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.27.1 to 4.28.1.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-24 09:48:34 +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
dependabot[bot]
1fde000499 [upd] pypi: Bump pygments from 2.18.0 to 2.19.1
Bumps [pygments](https://github.com/pygments/pygments) from 2.18.0 to 2.19.1.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.18.0...2.19.1)

---
updated-dependencies:
- dependency-name: pygments
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
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
Bnyro
f766faca3f [feat] engines: add ipernity (images) 2025-01-20 17:22:32 +01:00
dependabot[bot]
c020a964e4 [upd] npm: Bump eslint in /searx/static/themes/simple
Bumps [eslint](https://github.com/eslint/eslint) from 9.17.0 to 9.18.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.17.0...v9.18.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 16:53:12 +01:00
dependabot[bot]
46b16e6ff1 [upd] npm: Bump stylelint-config-standard in /searx/static/themes/simple
Bumps [stylelint-config-standard](https://github.com/stylelint/stylelint-config-standard) from 36.0.1 to 37.0.0.
- [Release notes](https://github.com/stylelint/stylelint-config-standard/releases)
- [Changelog](https://github.com/stylelint/stylelint-config-standard/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint-config-standard/compare/36.0.1...37.0.0)

---
updated-dependencies:
- dependency-name: stylelint-config-standard
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 16:52:21 +01:00
Markus Heiser
98c66c0ae6 [build] /static 2025-01-20 16:41:00 +01:00
Markus Heiser
c06ec65b2a [fix] LESS sourcemaps broken in less-plugin-clean-css v1.6.0
The ``less-plugin-clean-css`` lacks some maintenance: the sourcemaps are broken
since v1.6.0 (08/2024) [1]

- [1] https://github.com/less/less-plugin-clean-css/issues/42

Closes: https://github.com/searxng/searxng/issues/4143

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-20 16:41:00 +01:00
Markus Heiser
e581921c92 [fix] engine brave: remove date from the content string
Related: https://github.com/searxng/searxng/issues/4211#issuecomment-2601941440
Closes: https://github.com/searxng/searxng/issues/4006

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-20 16:40:36 +01:00
Markus Heiser
073d9549a0 [build] /static 2025-01-20 13:52:43 +01:00
Markus Heiser
601ffcb8a3 [mod] add swipe events to the image gallery (gesture control)
Adds [1] to the searxng.min.js and horizontal swipe events to the image gallery.

[1] https://www.npmjs.com/package/swiped-events

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-20 13:52:43 +01:00
Markus Heiser
d9115b8d48 [build] /static 2025-01-20 13:29:26 +01:00
Bnyro
c760ad0808 [feat] image results: dismiss image viewer on back button press on mobile devices 2025-01-20 13:29:26 +01:00
Bnyro
2f087a3a22 [feat] public domain image archive: automatically obtain algolia api key 2025-01-20 12:56:15 +01:00
Denperidge
3333d9f385 [feat] engines: public domain image archive 2025-01-20 12:56:15 +01:00
Popolon
1a885b70ce [feat] wikidata: add mastodon, peertube and Lemmy accounts to infobox
Co-authored-by: Popolon <popolon@popolon.org>
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-01-20 11:19:56 +01:00
searxng-bot
a576f69c12 [l10n] update translations from Weblate
09c56a561 - 2025-01-16 - tentsbet <tentsbet@users.noreply.translate.codeberg.org>
219fff972 - 2025-01-14 - hirushaadi <hirushaadi@users.noreply.translate.codeberg.org>
2b4b64e60 - 2025-01-14 - return42 <return42@users.noreply.translate.codeberg.org>
6a359da17 - 2025-01-14 - return42 <return42@users.noreply.translate.codeberg.org>
2025-01-17 08:13:57 +01:00
DanielMowitz
272e39893d [feat]: engines: add astrophysical data system 2025-01-16 20:27:55 +01:00
Markus Heiser
41159fed32 [build] /static 2025-01-16 10:51:33 +01:00
Markus Heiser
b1507f188e [fix] gallery view overlaps category bar
Closes: https://github.com/searxng/searxng/issues/4190

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-16 10:51:33 +01:00
Markus Heiser
1668ff5e64 [fix] theme simple: image viewer hides autocomplete suggestions
Closes: https://github.com/searxng/searxng/issues/3509
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-16 10:51:33 +01:00
Markus Heiser
f03ab00155 [fix] broken mobile view (from #4154)
Related:
- https://github.com/searxng/searxng/pull/4154#issuecomment-2591881963

Closes: https://github.com/searxng/searxng/issues/4187

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-16 10:51:33 +01:00
Markus Heiser
15d0e274b3 [fix] build workflows of the themes
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-16 10:51:33 +01:00
Markus Heiser
e4f8f0483f [mod] slightly improve make node.clean themes.all
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-14 15:22:23 +01:00
Bnyro
5a1a43ef74 [build] /static 2025-01-14 15:22:23 +01:00
Bnyro
94b6adf03d [chore] stylelint: fix reported errors 2025-01-14 15:22:23 +01:00
Bnyro
337a6db064 [upd] stylelint: use less-compatible configuration and update rules 2025-01-14 15:22:23 +01:00
Markus Heiser
9d834c0722 [fix] issues reported by sytlelint
"Unexpected vendor-prefixed":
   -webkit-transform & -ms-transform [3]
   -webkit-animation [2]
   @-webkit-keyframes [1]

[1] https://developer.mozilla.org/en-US/docs/Web/CSS/@keyframes
[2] https://developer.mozilla.org/en-US/docs/Web/CSS/animation
[3] https://developer.mozilla.org/en-US/docs/Web/CSS/transform

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-14 15:22:23 +01:00
Markus Heiser
0abad23daa [upd] migrate .eslintrc.json to eslint.config.mjs
The migration was done by the following steps, firts prepare the node enviroment
an open a bash in this environment::

    $ make clean nvm.nodejs
    ...
    $ ./manage nvm.bash
    $ which npx
    searxng/.nvm/versions/node/v23.5.0/bin/npx

In this environment the migration command from [1] is started::

    $ npx @eslint/migrate-config .eslintrc.json
    Need to install the following packages:
    @eslint/migrate-config@1.3.5
    Migrating .eslintrc.json

    Wrote new config to ./eslint.config.mjs

    You will need to install the following packages to use the new config:
    - globals
    - @eslint/js
    - @eslint/eslintrc

    You can install them using the following command:

    npm install globals @eslint/js @eslint/eslintrc -D

    The following messages were generated during migration:
    - The 'node' environment is used, so switching sourceType to 'commonjs'.

[1] https://eslint.org/docs/latest/use/configure/migration-guide#migrate-your-config-file

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-14 15:22:23 +01:00
Markus Heiser
943c8fb85b [upd] update npm dependencies (package.json) and .tool-versions
To avoid issue like [1], versions from now on are pinned in::

    searx/static/themes/simple/package-lock.json

To test nodejs v23 or newer is needed (will be installed by nvm).  To drop a
possibly existing installation::

    $ make clean

Install nodejs in nvm::

    $ make nvm.nodejs
    INFO:  install (update) NVM at searxng/.nvm
    ...
    Now using node v23.5.0 (npm v10.9.2)
    Creating default alias: default -> v23.5 (-> v23.5.0)
    INFO:  Node.js is installed at searxng/.nvm/versions/node/v23.5.0/bin/node
    INFO:  Node.js is version v23.5.0
    INFO:  npm is installed at searxng/.nvm/versions/node/v23.5.0/bin/npm
    INFO:  npm is version 10.9.2
    INFO:  NVM is installed at searxng/.nvm

To test npm checks and builds:

    $ make static.build.commit

Related:

[1] https://github.com/searxng/searxng/issues/4143

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-14 15:22:23 +01:00
Lucki
35c80268bf [json_engine] Fix R0912 (too-many-branches) 2025-01-14 14:07:35 +01:00
Lucki
3942b311ac [json_engine] Add unit test 2025-01-14 14:07:35 +01:00
Lucki
64d954b350 [json_engine] mirror xpath functionality 2025-01-14 14:07:35 +01:00
Lucki
591d9c2505 [json_engine] document existing options 2025-01-14 14:07:35 +01:00
Markus Heiser
09cce18518 [data] update searx.data - make data.all
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-13 08:02:01 +01:00
searxng-bot
94a0b415ef [l10n] update translations from Weblate
8f8f92dc0 - 2025-01-10 - hirushaadi <hirushaadi@users.noreply.translate.codeberg.org>
d4ae2e4ba - 2025-01-08 - Harshith-10 <harshith-10@users.noreply.translate.codeberg.org>
05848d0bb - 2025-01-08 - return42 <return42@users.noreply.translate.codeberg.org>
151cde7fc - 2025-01-08 - return42 <return42@users.noreply.translate.codeberg.org>
43ba79c99 - 2025-01-06 - return42 <return42@users.noreply.translate.codeberg.org>
2025-01-10 08:13:22 +01:00
Markus Heiser
6dab7fe78b Revert "[l10n ga] trigger weblate.push.translations (another try)"
This reverts commit e352926187.
2025-01-06 17:12:16 +01:00
Markus Heiser
e352926187 [l10n ga] trigger weblate.push.translations (another try)
Related:

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

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-06 16:59:20 +01:00
Markus Heiser
b0391fe718 reomve DUMMY from searxng.msg catalog
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-06 16:24:44 +01:00
Markus Heiser
91d3d38690 [l10n ga] trigger weblate.push.translations
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-06 16:16:04 +01:00
Markus Heiser
c5991865c8 [fix] l10n ga (Irish) messages.po is marked as fuzzy
$ ./manage pyenv.cmd pybabel compile --statistics -d searx/translations/

reports:

    catalog searx/translations/ga/LC_MESSAGES/messages.po is marked as fuzzy, skipping

This commit removes the ``fuzzy`` tag and BTW reverts commit 655e41f27

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-06 15:49:21 +01:00
Markus Heiser
655e41f274 [l10n ga] trigger weblate.push.translations
Related:

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

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-06 14:54:41 +01:00
Aindriú Mac Giolla Eoin
d9343b6388 [l10n] adding new language Irish (ga) 2025-01-06 14:54:41 +01:00
Bnyro
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
Lucki
18c3e08837 Fix usage of api_key engine setting
The value of `params['api_key']` isn't read anywhere.
Writing directly into the header object solves this quite easily though.

> [Users can authenticate by including their API key either in a request URL by appending `?apikey=<API KEY>`, or by including the `X-API-Key: <API KEY>` header with the request.](https://wallhaven.cc/help/api)
2025-01-06 12:25:33 +01:00
Alexandre Flament
96c32549be [fix] requirements-dev.txt: remove autodoc_pydantic
Related to #3727
2025-01-05 09:31:03 +01:00
searxng-bot
a060c09854 [l10n] update translations from Weblate
3db237112 - 2024-12-31 - kratos <kratos@users.noreply.translate.codeberg.org>
2025-01-03 08:49:25 +01:00
Markus Heiser
c1bb0bebd4 [data] update searx.data - update_engine_traits.py
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-12-29 10:12:45 +01:00
Markus Heiser
af3f272b0b [fix] update_engine_traits.py: annas archive, bing-* and zlibrary engines
Github action Update data - update_engine_traits [1] had issues in annas
archive, bing-* and zlibrary engines:

    ./manage pyenv.cmd python ./searxng_extra/update/update_engine_traits.py

[1] https://github.com/searxng/searxng/actions/runs/12530827768/job/34953392587

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-12-29 10:12:45 +01:00
return42
05c82d3201 [data] update searx.data - update_engine_descriptions.py 2024-12-29 10:12:24 +01:00
return42
f0e9c3be8c [data] update searx.data - update_currencies.py 2024-12-29 10:11:38 +01:00
return42
428eaea2b7 [data] update searx.data - update_wikidata_units.py 2024-12-29 10:11:09 +01:00
return42
3d55008f23 [data] update searx.data - update_ahmia_blacklist.py 2024-12-29 10:10:38 +01:00
Markus Heiser
9e32cd2047 [fix] replaca inoffical msgspec-python313-pre by offical msgspec 0.19
inoffical msgspec-python313-pre was an inetrim solution from e710ebdf6

related:

- https://github.com/searxng/searxng/pull/4129
- https://github.com/jcrist/msgspec/issues/764#issuecomment-2561330165

closes:

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

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-12-28 10:42:20 +01:00
dependabot[bot]
120a519c5c [upd] pypi: Bump pylint from 3.3.2 to 3.3.3
Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.3.2 to 3.3.3.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.3.2...v3.3.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-28 09:05:21 +01:00
searxng-bot
402a09963e [l10n] update translations from Weblate
31b458aa4 - 2024-12-25 - return42 <return42@users.noreply.translate.codeberg.org>
fe7cc8706 - 2024-12-25 - return42 <return42@users.noreply.translate.codeberg.org>
7a585b545 - 2024-12-22 - alexgabi <alexgabi@users.noreply.translate.codeberg.org>
2e2fdbd16 - 2024-12-21 - xawos <xawos@users.noreply.translate.codeberg.org>
e2774bb44 - 2024-12-21 - ghose <ghose@users.noreply.translate.codeberg.org>
970bd5d86 - 2024-12-21 - xawos <xawos@users.noreply.translate.codeberg.org>
4c775384c - 2024-12-21 - xawos <xawos@users.noreply.translate.codeberg.org>
176f7df6e - 2024-12-21 - xawos <xawos@users.noreply.translate.codeberg.org>
a6a842d01 - 2024-12-20 - Amirkhandrend-Nicest-XII <Amirkhandrend-Nicest-XII@users.noreply.translate.codeberg.org>
2024-12-28 09:04:50 +01:00
Austin-Olacsi
73e395c8ce [feat] engines: re-add alexandria.org 2024-12-25 13:13:18 +01:00
dependabot[bot]
19ecdd8aae Bump jinja2 from 3.1.4 to 3.1.5
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.4 to 3.1.5.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.4...3.1.5)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-25 08:03:43 +01:00
Markus Heiser
3749154660 [mod] add support for Python 3.13
Python 3.13 has been released [1]

- fasttext-predict supports py3.13 from version 0.9.2.3 [2]

[1] https://www.python.org/downloads/release/python-3130/
[2] https://github.com/searxng/fasttext-predict/commit/f2da9cd173

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-12-24 19:46:04 +01:00
Markus Heiser
e710ebdf67 [fix] temporary msgspec-python313-pre
Waitng for new release of msgspec for Python 3.13:

- https://github.com/jcrist/msgspec/issues/764#issuecomment-2466150924

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-12-24 19:35:54 +01:00
Markus Heiser
26097f444b [fix] engine google_video: google changed the layout of the HTML response
Closes: https://github.com/searxng/searxng/issues/4127
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-12-22 11:45:46 +01:00
dependabot[bot]
19ee529b78 [upd] pypi: Bump certifi from 2024.8.30 to 2024.12.14
Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.8.30 to 2024.12.14.
- [Commits](https://github.com/certifi/python-certifi/compare/2024.08.30...2024.12.14)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 10:07:08 +01:00
searxng-bot
ce53d97327 [l10n] update translations from Weblate
979094524 - 2024-12-17 - Amirkhandrend-Nicest-XII <Amirkhandrend-Nicest-XII@users.noreply.translate.codeberg.org>
2024-12-20 08:16:12 +01:00
Markus Heiser
65c970bdf4 [build] /static 2024-12-16 11:39:38 +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
Markus Heiser
1604a00b89 Revert "[weblate] add dummy string to trigger weblate.push.translations in CI"
This reverts commit 899edee5ec.
2024-12-16 09:27:19 +01:00
Markus Heiser
899edee5ec [weblate] add dummy string to trigger weblate.push.translations in CI
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-12-16 08:41:57 +01:00
Bnyro
523df1d7f4 [build] /static 2024-12-16 08:36:48 +01:00
Bnyro
c8e932647b [fix] settings: javascript crash when entering due to missing search form 2024-12-16 08:36:48 +01:00
Zhijie He
8d2c01e4ce [chore] cleanup 2024-12-16 08:32:35 +01:00
Zhijie He
12c27f416f [enh] add engine- prefix, replace blank space to - 2024-12-16 08:32:35 +01:00
Zhijie He
e90fa48018 [fix]: fix engine name may break some css style, contains "right", "left", "center" 2024-12-16 08:32:35 +01:00
dependabot[bot]
3742d558ac [upd] pypi: Bump pylint from 3.3.1 to 3.3.2
Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.3.1...v3.3.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-14 08:33:35 +01:00
dependabot[bot]
db67efae6f [upd] pypi: Bump typer-slim from 0.14.0 to 0.15.1
Bumps [typer-slim](https://github.com/fastapi/typer) from 0.14.0 to 0.15.1.
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](https://github.com/fastapi/typer/compare/0.14.0...0.15.1)

---
updated-dependencies:
- dependency-name: typer-slim
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-14 08:33:14 +01:00
dependabot[bot]
b8d2d2df8a [upd] pypi: Bump sphinxcontrib-programoutput from 0.17 to 0.18
Bumps [sphinxcontrib-programoutput](https://github.com/NextThought/sphinxcontrib-programoutput) from 0.17 to 0.18.
- [Changelog](https://github.com/OpenNTI/sphinxcontrib-programoutput/blob/master/CHANGES.rst)
- [Commits](https://github.com/NextThought/sphinxcontrib-programoutput/compare/0.17...0.18)

---
updated-dependencies:
- dependency-name: sphinxcontrib-programoutput
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-14 08:31:39 +01:00
Markus Heiser
c60fe999cf Update data - locales
./searxng_extra/update/update_locales.py

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-12-13 18:45:14 +01:00
Markus Heiser
f952668fde [l10n] adding new language Tatar (tt)
$ ./manage pyenv.cmd bash
    $ pybabel init -i searx/translations/messages.pot -d searx/translations -l tt
    creating catalog searx/translations/tt/LC_MESSAGES/messages.po based on searx/translations/messages.pot

Closes: https://github.com/searxng/searxng/issues/4098

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-12-13 18:45:14 +01:00
searxng-bot
8791345869 [l10n] update translations from Weblate
941da8a11 - 2024-12-13 - Kita Ikuyo <searinminecraft@courvix.com>
7c9e8973a - 2024-12-12 - return42 <return42@users.noreply.translate.codeberg.org>
1ef3f3b6e - 2024-12-12 - OpenCode <OpenCode@users.noreply.translate.codeberg.org>
8edb4af3d - 2024-12-11 - KhietVo <KhietVo@users.noreply.translate.codeberg.org>
77469663d - 2024-12-11 - dansmachina <dansmachina@users.noreply.translate.codeberg.org>
be726d2c7 - 2024-12-09 - kkrawczyk <kkrawczyk@users.noreply.translate.codeberg.org>
dfb9dd20f - 2024-12-10 - artnay <artnay@users.noreply.translate.codeberg.org>
a1977736f - 2024-12-09 - return42 <return42@users.noreply.translate.codeberg.org>
e17d999d7 - 2024-12-07 - Eryk Michalak <gnu.ewm@protonmail.com>
2024-12-13 08:15:55 +01:00
Markus Heiser
0245e82bd2 [build] /static 2024-12-01 15:04:05 +01:00
Markus Heiser
8c3f0c3d52 [fix] if image load fails on client side, show default image
BTW: change icon color from red to gray

Closes:

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

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-12-01 15:04:05 +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
Markus Heiser
bb04699b17 [fix] unit tests: call searx.search.initialize in test's setUp
Depending on the order the unit tests are executed, the searx.search module is
initalized or not, issue reported in [1]::

    Traceback (most recent call last):
      File "searxng/tests/unit/test_results.py", line 72, in test_result_merge_by_title
        self.container.extend('stract', [fake_result(engine='stract', title='short title')])
      File "searxng/searx/results.py", line 243, in extend
        histogram_observe(standard_result_count, 'engine', engine_name, 'result', 'count')
      File "searxng/searx/metrics/__init__.py", line 49, in histogram_observe
        histogram_storage.get(*args).observe(duration)
        ^^^^^^^^^^^^^^^^^^^^^
      AttributeError: 'NoneType' object has no attribute 'get'

To ensure that the searx.search module is initialized, the

- searx.engines.load_engines is replace by
- searx.search.initialize

[1] https://github.com/searxng/searxng/pull/3932#discussion_r1822406569

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-29 15:26:03 +01:00
Allen
6948689d2a [enh] use longest title and test get_ordered_results() 2024-11-29 15:26:03 +01:00
Bnyro
94aafc83a6 [build] /static 2024-11-29 15:05:00 +01:00
Bnyro
6a9b97cad2 [feat] search: shift/ctrl click a category to select multiple categories 2024-11-29 15:05:00 +01:00
return42
6ca89e1319 [data] update searx.data - update_engine_traits.py 2024-11-29 14:57:06 +01:00
Markus Heiser
605f38b352 [fix] update_currencies.py: github CI has longer timeouts
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-29 14:50:17 +01:00
searxng-bot
2717ffd094 [l10n] update translations from Weblate
ba1cebf8b - 2024-11-25 - saledai <saledai@users.noreply.translate.codeberg.org>
25da337e5 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
8379976e0 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
fa080d132 - 2024-11-26 - ghose <ghose@users.noreply.translate.codeberg.org>
42ac0f2d2 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
bb9c1d4b3 - 2024-11-25 - Outbreak2096 <Outbreak2096@users.noreply.translate.codeberg.org>
768be588f - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
13a63779a - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
649d5494b - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
7ce063699 - 2024-11-25 - saledai <saledai@users.noreply.translate.codeberg.org>
6f4ed2d9d - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
02a34ef99 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
de3ab1d94 - 2024-11-25 - AndersNordh <AndersNordh@users.noreply.translate.codeberg.org>
d18f56fa1 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
dff38e041 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
2e5c6694e - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
c9e9e0864 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
c625e848c - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
84a87ab05 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
28ebc3a97 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
b340f5ea8 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
e5fdd25ad - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
cf6b35d0a - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
da0ec01bc - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
7ca3c3051 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
adffd7987 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
d5c101710 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
f862cf05a - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
e7f4c00a8 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
2a25e9a1b - 2024-11-25 - Linerly <Linerly@users.noreply.translate.codeberg.org>
8cd81e701 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
80726a79a - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
ab7a56a81 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
ed44ff721 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
3b2b40d69 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
51926fb18 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
e823c2915 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
57b884908 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
525fcc395 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
fe2bf7267 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
d21ac5278 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
d18e3376b - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
a638f5ad5 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
c94c9b313 - 2024-11-25 - AndersNordh <AndersNordh@users.noreply.translate.codeberg.org>
aaa801da2 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
3b4961df8 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
6698f2069 - 2024-11-24 - return42 <return42@users.noreply.translate.codeberg.org>
73a117384 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
054d5cba4 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
1d3f21946 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
92ded48b1 - 2024-11-25 - return42 <return42@users.noreply.translate.codeberg.org>
d84b77ff9 - 2024-11-24 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
2ece96ac9 - 2024-11-24 - Priit Jõerüüt <jrtcdbrg@users.noreply.translate.codeberg.org>
2024-11-29 14:23:56 +01:00
dependabot[bot]
2fc131bfd6 [upd] pypi: Bump typer-slim from 0.13.1 to 0.14.0
Bumps [typer-slim](https://github.com/fastapi/typer) from 0.13.1 to 0.14.0.
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](https://github.com/fastapi/typer/compare/0.13.1...0.14.0)

---
updated-dependencies:
- dependency-name: typer-slim
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-29 14:23:05 +01:00
Markus Heiser
540323a4b0 [mod] hardening xpath engine: ignore empty results
A SearXNG maintainer on Matrix reported a traceback::

    File "searxng-src/searx/engines/xpath.py", line 272, in response
      dom = html.fromstring(resp.text)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "searx-pyenv/lib/python3.11/site-packages/lxml/html/__init__.py", line 850, in fromstring
      doc = document_fromstring(html, parser=parser, base_url=base_url, **kw)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "searx-pyenv/lib/python3.11/site-packages/lxml/html/__init__.py", line 738, in document_fromstring
      raise etree.ParserError(
    lxml.etree.ParserError: Document is empty

I don't have an example to reproduce the issue, but the issue and this patch are
clearly recognizable even without an example.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-29 14:20:31 +01:00
dependabot[bot]
cf034488d5 [upd] pypi: Bump fasttext-predict from 0.9.2.2 to 0.9.2.4
Bumps [fasttext-predict](https://github.com/searxng/fasttext-predict) from 0.9.2.2 to 0.9.2.4.
- [Release notes](https://github.com/searxng/fasttext-predict/releases)
- [Commits](https://github.com/searxng/fasttext-predict/compare/v0.9.2.2...v0.9.2.4)

---
updated-dependencies:
- dependency-name: fasttext-predict
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-29 10:21:13 +01:00
dependabot[bot]
011cb672f1 [upd] pypi: Bump selenium from 4.26.1 to 4.27.1
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.26.1 to 4.27.1.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-29 10:20:53 +01:00
return42
32260a2738 [data] update searx.data - update_wikidata_units.py 2024-11-29 08:01:13 +01:00
return42
db60c91a94 [data] update searx.data - update_ahmia_blacklist.py 2024-11-29 08:00:56 +01:00
return42
2b9cc53082 [data] update searx.data - update_engine_descriptions.py 2024-11-29 07:59:55 +01:00
return42
a3d49d8d4f [data] update searx.data - update_firefox_version.py 2024-11-29 07:58:23 +01:00
Bnyro
0ca2520115 [feat] json/xpath engine: config option for method and body 2024-11-28 09:53:21 +01:00
Bnyro
5a9c1c6b5b [fix] crowdview engine: html tags in title and content 2024-11-28 06:19:55 +01:00
Markus Heiser
7b6b772e34 [fix] wikicommons engine: remove HTML tags from result items
BTW: humanize filesize (Bytes) to KB, MB, GB ..

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-28 06:05:45 +01:00
Markus Heiser
342d321196 [fix] google engine: remove <script> tags from result items
In some results, Google returns a <script> tag that must be removed before
extracting the content.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-27 13:49:45 +01:00
Austin-Olacsi
55481a6377 [fix] findthatmeme engine URLs have changed 2024-11-27 11:08:23 +01:00
Markus Heiser
78f5300830 [chore] drop sjp engine: WEB side has changed a long time ago
The WEB page (PL only) has changed and there is now also a kind of CAPTCHA.
There is currently no possibility to restore the function of this engine.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-26 15:45:02 +01:00
Markus Heiser
ac0c6cc2d1 [chore] remove invalid base_url from settings.yml engines
The engines do not have / do not need a property `base_url`, lets remove it from
the settings.yml

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-26 10:06:07 +01:00
Markus Heiser
36a6f9c95f [fix] engine: Library of Congress - image & thumb links
The properties `item.service_medium` and `item.thumb_gallery` are not given for
every result item.  It is more reliable to use the first (thumb) and
last (image) URL in the list of of URLs in `image_url`.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-26 09:36:59 +01:00
Bnyro
66f6495a22 [fix] duckduckgo extra: crashes and returns no results 2024-11-25 17:00:52 +01:00
Bnyro
5bf3fbc93b [fix] openmetrics: value is None if there's no data 2024-11-25 16:57:03 +01:00
Bnyro
bad070b4bc [build] /static 2024-11-25 09:34:02 +01:00
Markus Heiser
cf8c36f351 [mod] add CSS (LESS) to xsl style to view rss in browser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-25 09:34:02 +01:00
Markus Heiser
5fbea0b62d [refactor] <type> element isn't a part of the RSS 2.0 spec [1]
[1] https://cyber.harvard.edu/rss/rss.html

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-25 09:34:02 +01:00
Bnyro
eb59b4604a [feat] rss: add xsl style to view rss in browser 2024-11-25 09:34:02 +01:00
Bnyro
98f9a380ed [chore] rss: rename from searx to SearXNG 2024-11-25 09:34:02 +01:00
Grant Lanham
68b4961b81 [test] add additional tests for preferences 2024-11-24 19:55:21 +01:00
Grant Lanham
c02268d56e [fix] remove unknown_params from preferences 2024-11-24 19:55:21 +01:00
Bnyro
8744dd3c71 [feat] metrics: support for open metrics 2024-11-24 14:25:49 +01:00
Markus Heiser
7927baf545 [upd] github CI: actions/cache@v3 to actions/cache@v4
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-24 14:07:07 +01:00
Bnyro
e4961142e3 [build] /static 2024-11-24 12:41:57 +01:00
Bnyro
f31a3a2053 [chore] *: fix typos detected by typos-cli 2024-11-24 12:41:57 +01:00
Markus Heiser
0253c10b52 [feat] engine: add adobe stock video and audio engines
The engine has been revised; there is now the option ``adobe_content_types``
with which it is possible to configure engines for video and audio from the
adobe stock.  BTW this patch adds documentation to the engine.

To test all three engines in one use a search term like::

    !asi !asv !asa sound

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-24 11:56:12 +01:00
Bnyro
f20a7632f1 [feat] engine: add adobe stock photos 2024-11-24 11:56:12 +01:00
Markus Heiser
0f9694c90b [clean] Internet Archive Scholar search API no longer exists
Engine was added in #2733 but the API does no longer exists. Related:

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

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-23 17:59:38 +01:00
Markus Heiser
ccc4f30b20 [doc] update quantities on the intro page
The quantities on the intro page were partly out of date / example; we already
have 210 engines and not just 70. To avoid having to change the quantities
manually in the future, they are now calculated from the jinja context

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-23 16:33:08 +01:00
Markus Heiser
c4b874e9b0 [fix] engine Library of Congress: fix API URL loc.gov -> www.loc.gov
Avoid HTTP 404 and redirects. Requests to the JSON/YAML API use the base url [1]

    https://www.loc.gov/{endpoint}/?fo=json

[1] https://www.loc.gov/apis/json-and-yaml/requests/

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-23 13:02:24 +01:00
Markus Heiser
7c4e4ebd40 [log] warning with URL in case of 'raise_for_httperror'
In order to be able to implement error handling, it is necessary to know which
URL triggered the exception / the URL has not yet been logged.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-23 11:33:19 +01:00
searxng-bot
b8f1a329d3 [l10n] update translations from Weblate
6581d89b3 - 2024-11-21 - return42 <return42@users.noreply.translate.codeberg.org>
a342903eb - 2024-11-21 - return42 <return42@users.noreply.translate.codeberg.org>
61d3236b9 - 2024-11-21 - return42 <return42@users.noreply.translate.codeberg.org>
cd03e8cc5 - 2024-11-21 - return42 <return42@users.noreply.translate.codeberg.org>
a2399e23a - 2024-11-20 - tentsbet <tentsbet@users.noreply.translate.codeberg.org>
9a5bcc06d - 2024-11-17 - cherrad <cherrad@users.noreply.translate.codeberg.org>
4364e5ef8 - 2024-11-16 - DiamondBrain113 <DiamondBrain113@users.noreply.translate.codeberg.org>
e3a127ec8 - 2024-11-15 - KinoCineaste <KinoCineaste@users.noreply.translate.codeberg.org>
2024-11-22 10:02:42 +01:00
dependabot[bot]
67f7548573 [upd] pypi: Bump typer-slim from 0.13.0 to 0.13.1
Bumps [typer-slim](https://github.com/fastapi/typer) from 0.13.0 to 0.13.1.
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](https://github.com/fastapi/typer/compare/0.13.0...0.13.1)

---
updated-dependencies:
- dependency-name: typer-slim
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-22 09:59:26 +01:00
dependabot[bot]
f40fc2dd4f [upd] pypi: Bump setproctitle from 1.3.3 to 1.3.4
Bumps [setproctitle](https://github.com/dvarrazzo/py-setproctitle) from 1.3.3 to 1.3.4.
- [Changelog](https://github.com/dvarrazzo/py-setproctitle/blob/master/HISTORY.rst)
- [Commits](https://github.com/dvarrazzo/py-setproctitle/compare/version-1.3.3...version-1.3.4)

---
updated-dependencies:
- dependency-name: setproctitle
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-22 09:58:19 +01:00
Markus Heiser
10d3af84b8 [fix] engine: duckduckgo - don't quote query string
The query string send to DDG must not be qouted.

The query string was URL-qouted in #4011, but the URL-qouted query string result
in unexpected *URL decoded* and other garbish results as reported in #4019
and #4020.  To test compare the results of a query like::

    !ddg Häuser und Straßen :de
    !ddg Häuser und Straßen :all
    !ddg 房屋和街道 :all
    !ddg 房屋和街道 :zh

Closed:

- [#4019] https://github.com/searxng/searxng/issues/4019
- [#4020] https://github.com/searxng/searxng/issues/4020

Related:

- [#4011] https://github.com/searxng/searxng/pull/4011

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-17 18:14:22 +01:00
dependabot[bot]
4b57bc3db1 [upd] pypi: Bump flask from 3.0.3 to 3.1.0
Bumps [flask](https://github.com/pallets/flask) from 3.0.3 to 3.1.0.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/3.0.3...3.1.0)

---
updated-dependencies:
- dependency-name: flask
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-15 13:23:24 +01:00
searxng-bot
a345cbbe51 [l10n] update translations from Weblate
0216898a3 - 2024-11-14 - KhietVo <KhietVo@users.noreply.translate.codeberg.org>
3293db4c8 - 2024-11-14 - return42 <return42@users.noreply.translate.codeberg.org>
574e0d683 - 2024-11-13 - lrnz2 <lrnz2@users.noreply.translate.codeberg.org>
a32d9d158 - 2024-11-08 - Aadniz <Aadniz@users.noreply.translate.codeberg.org>
2024-11-15 13:20:52 +01:00
Nicolas Dato
abd9b271bc [fix] engine: duckduckgo - only uses first word of the search terms
during the revision in PR #3955 the query string was accidentally converted into
a list of words, further the query must be quoted before POSTed in the ``data``
field, see ``urllib.parse.quote_plus`` [1]

[1] https://docs.python.org/3/library/urllib.parse.html#urllib.parse.quote_plus

Closed: #4009
Co-Authored-by: @return42
2024-11-14 09:33:54 +01:00
Leo Liu
dfaf5868e2 [fix] settings.yml - enabled_plugins: document to reflect default settings
Remove 'Autodetect search language', which is no longer valid, from settings,
and add 'Unit converter plugin', which is now default enabled, to settings.
2024-11-10 16:09:41 +01:00
Leo Liu
b173f3a8b9 Fix scheduler.lua 2024-11-10 15:53:58 +01:00
dependabot[bot]
2fbf15eccb [upd] pypi: Bump typer-slim from 0.12.5 to 0.13.0
Bumps [typer-slim](https://github.com/fastapi/typer) from 0.12.5 to 0.13.0.
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](https://github.com/fastapi/typer/compare/0.12.5...0.13.0)

---
updated-dependencies:
- dependency-name: typer-slim
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-08 08:51:43 +01:00
searxng-bot
08c5f258d8 [l10n] update translations from Weblate
8d90a7e6d - 2024-11-06 - sahussawud <sahussawud@users.noreply.translate.codeberg.org>
41ee8bb0d - 2024-11-02 - laaknor <laaknor@users.noreply.translate.codeberg.org>
c1a30afab - 2024-11-02 - return42 <return42@users.noreply.translate.codeberg.org>
627ab7a8e - 2024-11-01 - zarlin <zarlin@users.noreply.translate.codeberg.org>
2024-11-08 08:45:07 +01:00
dependabot[bot]
cd384a8a60 [upd] pypi: Bump selenium from 4.25.0 to 4.26.1
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.25.0 to 4.26.1.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-06 10:01:13 +01:00
Markus Heiser
c4055e449f [fix] issues reported by make test.yamllint
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-06 08:16:21 +01:00
Markus Heiser
2fdbf2622b [mod] lint github YAML config files
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-06 08:16:21 +01:00
Bnyro
b07c0ae39f [fix] annas archive: crash when no thumbnail, differing results, paging 2024-11-01 12:49:33 +01:00
Markus Heiser
56e3d72a76 [fix] CI: remove target test.coverage from python's test matrix
The test.coverage cause a lot of failed CI jobs for reasons that cannot be
explained.  As we do not monitor the coverage anyway, it is superfluous to run
this job, especially as it only has a disruptive effect on the CI.

BTW and the CI action upload-artifact@v3 is deprecated [1]

[1] https://github.com/actions/upload-artifact?tab=readme-ov-file#actionsupload-artifact

Related: https://github.com/searxng/searxng/issues/3983
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-11-01 10:14:57 +01:00
searxng-bot
cc148a76b0 [l10n] update translations from Weblate
a4cdaaa26 - 2024-10-30 - Juno Takano <jutty@users.noreply.translate.codeberg.org>
46bad3a79 - 2024-10-29 - saltsnorter <saltsnorter@users.noreply.translate.codeberg.org>
6a4096da9 - 2024-10-27 - Eryk Michalak <gnu.ewm@protonmail.com>
64815d956 - 2024-10-28 - ljansen <ljansen@users.noreply.translate.codeberg.org>
851ae554d - 2024-10-26 - return42 <return42@users.noreply.translate.codeberg.org>
24f16d5e3 - 2024-10-26 - return42 <return42@users.noreply.translate.codeberg.org>
8278d1cb9 - 2024-10-26 - Atul_Eterno <Atul_Eterno@users.noreply.translate.codeberg.org>
2024-11-01 08:30:38 +01:00
uply23333
fa108c140f [fix] google: display every result when keyword is contained in content field 2024-10-31 13:21:32 +01:00
Markus Heiser
fa4dfd4efe [fix] favicons: msgspec.ValidationError: Expected Path, got str - at $.favicons.cache.db_url
Closes: https://github.com/searxng/searxng/issues/3975
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-29 18:22:22 +01:00
Markus Heiser
b183e620d8 [refactor] engine: duckduckgo - https://html.duckduckgo.com/html
The entire source code of the duckduckgo engine has been reengineered and
purified.

1. DDG used the URL https://html.duckduckgo.com/html for no-JS requests whose
   response is also easier to parse than the previous
   https://lite.duckduckgo.com/lite/ URL

2. the bot detection of DDG has so far caused problems and often led to a
   CAPTCHA, this can be circumvented using `'Sec-Fetch-Mode'] = “navigate”`

Closes: https://github.com/searxng/searxng/issues/3927
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-29 14:56:27 +01:00
Markus Heiser
f63f97c56c Revert "Fix for broken docker builds"
This reverts commit 4ef1c706f8.
2024-10-29 13:50:38 +01:00
Markus Heiser
163031c394 Revert "[fix] typo in Dockerfile"
This reverts commit 038a2ff6bd.
2024-10-29 13:50:38 +01:00
Markus Heiser
3e5621e1af [refactor] replace pydantic by msgspec
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-29 13:50:38 +01:00
return42
e392892578 [data] update searx.data - update_firefox_version.py 2024-10-29 09:30:40 +01:00
return42
68ed8245da [data] update searx.data - update_ahmia_blacklist.py 2024-10-29 09:29:58 +01:00
return42
2d748d1d74 [data] update searx.data - update_currencies.py 2024-10-29 09:29:18 +01:00
return42
2985ece0ca [data] update searx.data - update_wikidata_units.py 2024-10-29 09:28:58 +01:00
return42
adc38c5800 [data] update searx.data - update_engine_traits.py 2024-10-29 09:28:28 +01:00
return42
a084436ff4 [data] update searx.data - update_engine_descriptions.py 2024-10-29 09:17:30 +01:00
Markus Heiser
b176323e89 [fix] calculator: use locale from UI (not from selected language)
Closes: https://github.com/searxng/searxng/issues/3956
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-28 15:53:57 +01:00
Markus Heiser
da28f5280b [fix] limiter: don't hard code settings folder to /etc/searxng
The location of the local settings depends on environment ``SEARXNG_SETTINGS_PATH``
and can be different from ``/etc/searxng``.  Issue was reported on Matrix [1].

To get the location function ``searx.settings_loader.get_user_cfg_folder()``
should be used.

[1] https://matrix.to/#/!vxScbLNEAmRvOraXBn:matrix.org/$_eLS0JpE9oVEWsiGJkqJnWcFWEeZClIMGDK6cWv_Q4g?via=matrix.org&via=tchncs.de&via=envs.net

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-28 12:51:05 +01:00
dependabot[bot]
543ab92fde [upd] pypi: Bump pallets-sphinx-themes from 2.2.0 to 2.3.0
Bumps [pallets-sphinx-themes](https://github.com/pallets/pallets-sphinx-themes) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/pallets/pallets-sphinx-themes/releases)
- [Changelog](https://github.com/pallets/pallets-sphinx-themes/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/pallets-sphinx-themes/compare/2.2.0...2.3.0)

---
updated-dependencies:
- dependency-name: pallets-sphinx-themes
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-27 10:48:26 +01:00
Markus Heiser
e08ff05fff [fix] add missing tomli to the requirements.txt
Package ``tomli`` is needed for py < 3.11, BTW remove the no longer needed
pytomlpp package.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-26 15:59:42 +02:00
Markus Heiser
a3921b5ed7 [mod] add test to check compat.py module
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-26 15:59:42 +02:00
Markus Heiser
ae496e9dd0 [build] /static 2024-10-26 08:34:21 +02:00
JJ
9b01e3c9d6 [mod] shrink new favicons in search results 2024-10-26 08:34:21 +02:00
searxng-bot
446ee2dd25 [l10n] update translations from Weblate
21c063bf1 - 2024-10-20 - Priit Jõerüüt <jrtcdbrg@users.noreply.translate.codeberg.org>
2024-10-26 07:29:54 +02:00
Markus Heiser
b14d885f23 [fix] favicons: don't hard code settings folder to /etc/searxng
The location of the local settings depends on environment ``SEARXNG_SETTINGS_PATH``
and can be different from ``/etc/searxng``.  Issue was reported on Matrix [1].

To get the location function ``searx.settings_loader.get_user_cfg_folder()``
should be used.

[1] https://matrix.to/#/!vxScbLNEAmRvOraXBn:matrix.org/$5xNMYvONGB-mPt2B3ttoL27QncRFhkjGkO-TISdmP08?via=matrix.org&via=tchncs.de&via=envs.net

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-23 05:29:15 +02:00
Markus Heiser
050451347b [fix] engine: duckduckgo - CAPTCHA detection
The previous implementation could not distinguish a CAPTCHA response from an
ordinary result list.  In the previous implementation a CAPTCHA was taken as a
result list where no items are in.

DDG does not block IPs.  Instead, a CAPTCHA wall is placed in front of request
on a dubious request.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-19 14:55:44 +02:00
dependabot[bot]
88caa1d7db [upd] pypi: Bump sphinx-issues from 4.1.0 to 5.0.0
Bumps [sphinx-issues](https://github.com/sloria/sphinx-issues) from 4.1.0 to 5.0.0.
- [Commits](https://github.com/sloria/sphinx-issues/compare/4.1.0...5.0.0)

---
updated-dependencies:
- dependency-name: sphinx-issues
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-19 11:18:42 +02:00
dependabot[bot]
a0c704c860 [upd] pypi: Bump uvloop from 0.20.0 to 0.21.0
Bumps [uvloop](https://github.com/MagicStack/uvloop) from 0.20.0 to 0.21.0.
- [Release notes](https://github.com/MagicStack/uvloop/releases)
- [Commits](https://github.com/MagicStack/uvloop/compare/v0.20.0...v0.21.0)

---
updated-dependencies:
- dependency-name: uvloop
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-19 11:06:25 +02:00
dependabot[bot]
219040c766 [upd] pypi: Bump pallets-sphinx-themes from 2.1.3 to 2.2.0
Bumps [pallets-sphinx-themes](https://github.com/pallets/pallets-sphinx-themes) from 2.1.3 to 2.2.0.
- [Release notes](https://github.com/pallets/pallets-sphinx-themes/releases)
- [Changelog](https://github.com/pallets/pallets-sphinx-themes/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/pallets-sphinx-themes/compare/2.1.3...2.2.0)

---
updated-dependencies:
- dependency-name: pallets-sphinx-themes
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-19 11:05:55 +02:00
searxng-bot
eeae3664c2 [l10n] update translations from Weblate
17f8bce27 - 2024-10-17 - hemie143 <hemie143@users.noreply.translate.codeberg.org>
fbeb82816 - 2024-10-15 - return42 <return42@users.noreply.translate.codeberg.org>
eacea331b - 2024-10-15 - return42 <return42@users.noreply.translate.codeberg.org>
36156687e - 2024-10-15 - return42 <return42@users.noreply.translate.codeberg.org>
61cb3375d - 2024-10-15 - return42 <return42@users.noreply.translate.codeberg.org>
2b3c92d37 - 2024-10-13 - Pedro_Tresp <Pedro_Tresp@users.noreply.translate.codeberg.org>
d4febbf8a - 2024-10-12 - stoychevww <stoychevww@users.noreply.translate.codeberg.org>
2024-10-19 11:01:32 +02:00
Markus Heiser
038a2ff6bd [fix] typo in Dockerfile
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-17 19:57:33 +02:00
rhee876527
4ef1c706f8 Fix for broken docker builds
Add temporary fix to broken docker builds in anticipation of yet to be released pydantic version v2.24.1
2024-10-17 19:14:33 +02:00
mrpaulblack
cf7627557a [build] /static 2024-10-16 19:46:36 +02:00
mrpaulblack
2cacc560d6 [fix] simple theme: unset width for images on mobile layout
* fix fallout from 2fbedc4316
-> similar to 14fb187548
* change: set image height to 10rem
-> this is in my opinion more sensible size for mobile
2024-10-16 19:46:36 +02:00
Markus Heiser
058a072404 [build] /static 2024-10-15 15:54:58 +02:00
Markus Heiser
14fb187548 [fix] stretching pics in "pic search"
Issue is described in:

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

The issue was caused bei merge of PR:

- https://github.com/searxng/searxng/pull/3895

Solution:

- Unset `width` for objects of class `.result-images`.

Tested by `make run` and query a list of results, containing `.result` and
`.result-images` objects:

     !images !go bäder :de

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Closes: https://github.com/searxng/searxng/issues/3915
2024-10-15 15:54:58 +02:00
Markus Heiser
c96ba25f5b [fix] online_currency.py: if more alternatives, use the last in the list
If there are more than one ISO 4217 numeric codes [1] for a currency use the
last one in the list of alternatives [2].

[1] https://en.wikipedia.org/wiki/ISO_4217#Active_codes_(list_one)
[2] https://en.wikipedia.org/wiki/ISO_4217#Historical_codes

Closes: https://github.com/searxng/searxng/issues/3713
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-15 15:20:39 +02:00
dependabot[bot]
2986681b31 [upd] pypi: Bump pylint from 3.2.7 to 3.3.1
Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.2.7 to 3.3.1.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.2.7...v3.3.1)

---
updated-dependencies:
- dependency-name: pylint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-15 14:29:10 +02:00
Bnyro
9f48d5f84f [feat] engine: support for openlibrary 2024-10-15 13:06:00 +02:00
Grant Lanham
3e87354f0e [fix] float operations in calculator plugin
This patch adds an additional *isinstance* check within the ast parser to check
for float along with int, fixing the underlying issue.

Co-Authored: Markus Heiser <markus.heiser@darmarit.de>
2024-10-15 08:10:52 +02:00
Grant Lanham
d448def1a6 [refactor] unit tests (continued) - plugins
This commit includes some refactoring in unit tests.  As we test more plugins,
it seems unweildy to include every test class in the test_plugins.py file.  This
patch split apart all of the test plugins to their own respective files,
including the new test_plugin_calculator.py file.
2024-10-15 08:10:52 +02:00
dependabot[bot]
8ba203c72b [upd] pypi: Bump sphinx-tabs from 3.4.5 to 3.4.7
Bumps [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) from 3.4.5 to 3.4.7.
- [Release notes](https://github.com/executablebooks/sphinx-tabs/releases)
- [Changelog](https://github.com/executablebooks/sphinx-tabs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/executablebooks/sphinx-tabs/compare/v3.4.5...v3.4.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-15 07:55:07 +02:00
Markus Heiser
e275f8e18e [data] update searx.data - update_engine_traits.py
Patches generated by::

    make data.traits

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-15 06:37:01 +02:00
0xhtml
8b6a3f3e11 [enh] engine: mojeek - add language support
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-10-15 06:37:01 +02:00
Snoweuph
5b6f40414a [mod] engine gitea: compatible with modern gitea or forgejo
Without this patch the Gitea Search Engine is only partially compatible with
modern gitea or forgejo:

- Fixing some JSON Fields
- Using Repository Avatar when Available

To Verify My results you can look at the Modern API doc and results, its
available on all Gitea and Forgejo instance by Default.  Heres an Search API
result of Mine:

- https://git.euph.dev/api/v1/repos/search?q=ccna
2024-10-14 14:39:11 +02:00
Markus Heiser
7e8b330b3e [build] /static 2024-10-12 11:08:44 +02:00
Markus Heiser
2fbedc4316 [fix] simple theme: fix deformed result item
Setting ``box-sizing: border-box;`` [1] and ``width`` to fix deformed results
reported in [2].

[1] https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing
[2] https://github.com/searxng/searxng/issues/3892

Closes: #3892

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-12 11:08:44 +02:00
Émilien (perso)
bafb92e646 reword join the searxng community 2024-10-12 11:08:00 +02:00
dependabot[bot]
1b8db63b33 [upd] pypi: Bump pydantic from 2.8.2 to 2.9.2
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.8.2 to 2.9.2.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/v2.8.2...v2.9.2)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-11 18:39:35 +02:00
searxng-bot
5a32ee410b [l10n] update translations from Weblate
83a8d6627 - 2024-10-10 - Outbreak2096 <Outbreak2096@users.noreply.translate.codeberg.org>
c4474a60b - 2024-10-10 - return42 <return42@users.noreply.translate.codeberg.org>
a632dff03 - 2024-10-09 - bobolau <bobolau@users.noreply.translate.codeberg.org>
e8944e486 - 2024-10-08 - elek <elek@users.noreply.translate.codeberg.org>
2bd9c1229 - 2024-10-07 - AndersNordh <AndersNordh@users.noreply.translate.codeberg.org>
5cb441b60 - 2024-10-07 - return42 <return42@users.noreply.translate.codeberg.org>
aba724c87 - 2024-10-07 - return42 <return42@users.noreply.translate.codeberg.org>
92bea9f03 - 2024-10-08 - Linerly <Linerly@users.noreply.translate.codeberg.org>
f574a3a3f - 2024-10-08 - ghose <ghose@users.noreply.translate.codeberg.org>
4845ea7e2 - 2024-10-08 - Ricky-Tigg <Ricky-Tigg@users.noreply.translate.codeberg.org>
7d0b4d0d9 - 2024-10-07 - AndersNordh <AndersNordh@users.noreply.translate.codeberg.org>
6431436b2 - 2024-10-07 - AndersNordh <AndersNordh@users.noreply.translate.codeberg.org>
30e671f30 - 2024-10-07 - Fabio_Perri <Fabio_Perri@users.noreply.translate.codeberg.org>
6629d15cb - 2024-10-07 - AndersNordh <AndersNordh@users.noreply.translate.codeberg.org>
a3b4d53cc - 2024-10-05 - 0ko <0ko@users.noreply.translate.codeberg.org>
1763b224e - 2024-10-05 - Atul_Eterno <Atul_Eterno@users.noreply.translate.codeberg.org>
0ea2b49a8 - 2024-10-06 - return42 <return42@users.noreply.translate.codeberg.org>
837324445 - 2024-10-05 - Fjuro <fjuro@alius.cz>
eec53d3b1 - 2024-10-05 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
4cd76e531 - 2024-10-05 - Priit Jõerüüt <jrtcdbrg@users.noreply.translate.codeberg.org>
2024-10-11 18:33:17 +02:00
Allen
81aaca8f44 [mod] use quad9 dns for connectivity checks when lxc
https://www.quad9.net/about/
https://bgp.tools/as/42#whois
2024-10-10 07:05:46 +02:00
Markus Heiser
f1f0dfd231 Revert "[fix] docker: alpine - install apk py3-pydantic-core"
This reverts commit 5332d3a0b8.
2024-10-07 13:18:54 +02:00
Markus Heiser
5332d3a0b8 [fix] docker: alpine - install apk py3-pydantic-core
Alpine Linux uses musl libc (instead of glibc). However, there is no pre-build
of the pydantic-core python package for musl lib on armv7.  Alternatively this
patch installs py3-pydantic-core from Alpine packages [1]

[1] https://pkgs.alpinelinux.org/package/edge/community/armv7/py3-pydantic-core

- closes: https://github.com/searxng/searxng/issues/3887

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-06 11:59:57 +02:00
Markus Heiser
f00fa76eda [build] /static 2024-10-05 08:18:28 +02:00
Markus Heiser
a631f77401 [mod] favicons: simplify RTL in template & CSS
Comes from a sughgestion in:

- https://github.com/searxng/searxng/pull/3727#issuecomment-2388998803

Suggested-by: Bnyro <bnyro@tutanota.com>
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-05 08:18:28 +02:00
Markus Heiser
a7d02d4101 [doc] documentation of the favicons infrastructure
Run ``make docs.live`` and visit http://0.0.0.0:8000/admin/searx.favicons.html

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-05 08:18:28 +02:00
Markus Heiser
5ded9ada82 [mod] UI: add favicon's border- and background color to the definitons
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-05 08:18:28 +02:00
Markus Heiser
7ab577a1fb [mod] Revision of the favicon solution
All favicons implementations have been documented and moved to the Python
package:

    searx.favicons

There is a configuration (based on Pydantic) for the favicons and all its
components:

    searx.favicons.config

A solution for caching favicons has been implemented:

    searx.favicon.cache

If the favicon is already in the cache, the returned URL is a data URL [1]
(something like `data:image/png;base64,...`).  By generating a data url from
the FaviconCache, additional HTTP roundtripps via the favicon_proxy are saved:

    favicons.proxy.favicon_url

The favicon proxy service now sets a HTTP header "Cache-Control: max-age=...":

    favicons.proxy.favicon_proxy

The resolvers now also provide the mime type (data, mime):

    searx.favicon.resolvers

[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-05 08:18:28 +02:00
Markus Heiser
c49a2707c1 [mod] sqlitedb: access to SQLite databases a little more convenient.
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-05 08:18:28 +02:00
Brock Vojkovic
e17d7632d0 [feat] add favicons to result urls 2024-10-05 08:18:28 +02:00
searxng-bot
3e747d0491 [l10n] update translations from Weblate
b59b0d937 - 2024-10-04 - ghose <ghose@users.noreply.translate.codeberg.org>
770781548 - 2024-10-04 - return42 <return42@users.noreply.translate.codeberg.org>
0d5f72f8c - 2024-10-04 - return42 <return42@users.noreply.translate.codeberg.org>
b14fd01b1 - 2024-10-04 - return42 <return42@users.noreply.translate.codeberg.org>
e457a6b1c - 2024-10-03 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
328b93af4 - 2024-10-03 - Fjuro <fjuro@alius.cz>
2024-10-04 09:18:26 +02:00
Grant Lanham
44a06190bb [refactor] unit tests to utilize paramaterized and break down monolithic tests
- for tests which perform the same arrange/act/assert pattern but with different
  data, the data portion has been moved to the ``paramaterized.expand`` fields

- for monolithic tests which performed multiple arrange/act/asserts,
  they have been broken up into different unit tests.

- when possible, change generic assert statements to more concise
  asserts (i.e. ``assertIsNone``)

This work ultimately is focused on creating smaller and more concise tests.
While paramaterized may make adding new configurations for existing tests
easier, that is just a beneficial side effect.  The main benefit is that smaller
tests are easier to reason about, meaning they are easier to debug when they
start failing.  This improves the developer experience in debugging what went
wrong when refactoring the project.

Total number of tests went from 192 -> 259; or, broke apart larger tests into 69
more concise ones.
2024-10-03 13:20:32 +02:00
dependabot[bot]
042c7190e6 [upd] pypi: Bump sphinx-autobuild from 2021.3.14 to 2024.10.3
Bumps [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) from 2021.3.14 to 2024.10.3.
- [Release notes](https://github.com/sphinx-doc/sphinx-autobuild/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx-autobuild/blob/main/NEWS.rst)
- [Commits](https://github.com/sphinx-doc/sphinx-autobuild/compare/2021.03.14...2024.10.03)

---
updated-dependencies:
- dependency-name: sphinx-autobuild
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-03 13:18:03 +02:00
Markus Heiser
2fd6730d4f [mod] py3.8 EOL / upgrade to actions/setup-python@v5
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-03 13:05:43 +02:00
Markus Heiser
e7a4d7d7c3 [doc] slightly improve documentation of SQL engines
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-03 13:04:06 +02:00
Grant Lanham
2a29e16d25 [feat] implement mariadb engine 2024-10-03 13:04:06 +02:00
Markus Heiser
d48f04e809 [build] /static 2024-10-03 11:05:46 +02:00
Bnyro
421c131707 [refactor] simple theme: *.less - replace hardcoded colors
Closes: https://github.com/searxng/searxng/issues/3842
2024-10-03 11:05:46 +02:00
Bnyro
b42ce34ca8 [build] /static 2024-10-03 10:53:17 +02:00
Bnyro
e4b2823abd [feat] simple theme: pure black theme style 2024-10-03 10:53:17 +02:00
Austin-Olacsi
cbf1e90979 add get_embeded_stream_url to searx.utils 2024-10-03 07:10:53 +02:00
Markus Heiser
f07ab6deb0 [data] update searx.data - update_engine_traits.py
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-09-29 14:29:22 +02:00
0xhtml
0a0fb450b5 [enh] engine: stract - add language/region support 2024-09-29 14:29:22 +02:00
return42
b5009b8610 [data] update searx.data - update_engine_descriptions.py 2024-09-29 13:17:43 +02:00
return42
d6b04d3ba1 [data] update searx.data - update_engine_traits.py 2024-09-29 13:17:06 +02:00
return42
bc6ee05422 [data] update searx.data - update_currencies.py 2024-09-29 13:16:45 +02:00
return42
a4558dda47 [data] update searx.data - update_firefox_version.py 2024-09-29 13:16:25 +02:00
return42
eb31eaaba0 [data] update searx.data - update_ahmia_blacklist.py 2024-09-29 13:15:57 +02:00
return42
609ead9ffe [data] update searx.data - update_wikidata_units.py 2024-09-29 13:14:53 +02:00
dependabot[bot]
f95a5effcc [upd] pypi: Bump selenium from 4.24.0 to 4.25.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.24.0 to 4.25.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.24.0...selenium-4.25.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-28 08:50:35 +02:00
searxng-bot
9bae26a106 [l10n] update translations from Weblate
7f8a5a94e - 2024-09-24 - abhabongse <abhabongse@users.noreply.translate.codeberg.org>
d69f2d929 - 2024-09-23 - kratos <kratos@users.noreply.translate.codeberg.org>
f7f0c0f94 - 2024-09-23 - kratos <kratos@users.noreply.translate.codeberg.org>
52bea48dc - 2024-09-23 - AndersNordh <AndersNordh@users.noreply.translate.codeberg.org>
fe6659955 - 2024-09-22 - tentsbet <tentsbet@users.noreply.translate.codeberg.org>
69a05cbae - 2024-09-22 - Linerly <Linerly@users.noreply.translate.codeberg.org>
2024-09-28 08:49:10 +02:00
dependabot[bot]
940da05f03 [upd] pypi: Bump linuxdoc from 20240509 to 20240924
Bumps [linuxdoc](https://github.com/return42/linuxdoc) from 20240509 to 20240924.
- [Changelog](https://github.com/return42/linuxdoc/blob/master/CHANGELOG)
- [Commits](https://github.com/return42/linuxdoc/commits)

---
updated-dependencies:
- dependency-name: linuxdoc
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-28 08:38:22 +02:00
Grant Lanham
6a3375be37 [fix] use get accessor to pull desc from bing_images 2024-09-26 07:26:51 +02:00
Zhijie He
6be56aee11 add Cloudflare AI Gateway engine
add Cloudflare AI Gateway engine

add settings for Cloudflare AI Gateway engine

set utf8 encode for data, fix non english char cause 500 error

format json data

fixed indentation and config format error

fix line-length limitation in CI

reformatted code for CI

reformatted code for CI

limit system prompts to less 120 chars

cleanup unused variable & format code
2024-09-23 07:02:10 +02:00
Grant Lanham
14241e7dac Add paramaterized with example of refactor
reduce test name size

fix imports
2024-09-22 08:03:02 +02:00
searxng-bot
ea16c82d78 [l10n] update translations from Weblate
7174f090f - 2024-09-15 - MPBDev <MPBDev@users.noreply.translate.codeberg.org>
c7c76552e - 2024-09-14 - return42 <return42@users.noreply.translate.codeberg.org>
9b9ec6361 - 2024-09-14 - kny5 <kny5@users.noreply.translate.codeberg.org>
af19df705 - 2024-09-14 - return42 <return42@users.noreply.translate.codeberg.org>
cc658f945 - 2024-09-15 - Fjuro <fjuro@alius.cz>
15a59fda5 - 2024-09-14 - return42 <return42@users.noreply.translate.codeberg.org>
2024-09-22 07:32:01 +02:00
dwitterer
915cf9b7af Update own-instance.rst
Implemented the suggested changes.
2024-09-22 07:28:32 +02:00
dwitterer
ba4942ea51 Update own-instance.rst
Improved English grammar and punctuation for professionalism.
2024-09-22 07:28:32 +02:00
Markus
0b3724651e [fix] simple template: drop useless `aria-labelledby` attributes
This patch removes the ``aria-labelledby`` attributes for which there is no tag
with the corresponding ID.

Reported-by: @glanham-jr https://github.com/searxng/searxng/issues/3793#issuecomment-2351689483
Signed-off-by: Markus <markus@venom.fritz.box>
2024-09-21 15:23:21 +02:00
Markus
5ad0214bd4 [fix] simple template: macro checkbox_onoff_reversed
In its previous implementation, the macro ``checkbox_onoff_reversed`` always
created an ``aria-labelledby`` attribute, even if there was no descriptive tag
with the generated ID (used as the value of the ``aria-labelledby``).

Before this patch, the Nu-HTML-Checker [1] reported 255 issues of this type::

    The aria-labelledby attribute must point to an element in the same document. (255)

[1] https://validator.w3.org/nu/

Signed-off-by: Markus <markus@venom.fritz.box>
2024-09-21 15:23:21 +02:00
Markus
8b8d830fd3 [fix] simple template: add ID to elements used for aria-labelledby
The ``aria-labelledby`` [1] attribute identifies the element that labels the
element it is applied to.  The templates ``infinite_scroll.html`` and
``search_on_category_select.html`` define a ``aria-labelledby`` at the <input>
tag but miss the id in the <div> with the description.

[1] https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-labelledby

Signed-off-by: Markus <markus@venom.fritz.box>
2024-09-21 15:23:21 +02:00
Markus
67fcf3cc67 [fix] Removes `/>` ending tags for void HTML elements
continuation of commit: 0b832f19b

Signed-off-by: Markus <markus@venom.fritz.box>
2024-09-21 15:23:21 +02:00
Markus Heiser
d026486ce3 [fix] scripts: elimination of limitations on dedicated distributions
The restriction of shell scripts to certain distributions is only required for
certain actions such as the installation of a SearXNG instance. The maintenance
scripts and build processes were previously also restricted to these specific
distributions.  With this patch, the build processes (such as the build of
online documentation) can now also be executed on all Linux distributions.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-09-19 09:35:54 +02:00
Grant Lanham
0b832f19bf [fix] Removes `/>` ending tags for void HTML elements
Removes ``/>`` ending tags for void elements [1] and replaces them with ``>``.
Part of the larger cleanup to cleanup invalid HTML throughout the codebase [2].

[1] https://html.spec.whatwg.org/multipage/syntax.html#void-elements
[2] https://github.com/searxng/searxng/issues/3793
2024-09-15 15:19:51 +02:00
Markus
28dc623785 [fix] drop engine alexandria.org
The origin alexandria.org is broken:

  https://www.alexandria.org/?c=&r=&a=0&q=foo

returns "504 Gateway Time-out"

- Closes: https://github.com/searxng/searxng/issues/3786

Signed-off-by: Markus <markus@venom.fritz.box>
2024-09-15 14:45:48 +02:00
Markus
3630e464b3 [fix] drop engine gpodder
gpodder is ultra slow on search terms like foo

  https://gpodder.net/search.json?q=foo

takes up to a minute to return an empty json response.

- Closes: https://github.com/searxng/searxng/issues/3785
Signed-off-by: Markus <markus@venom.fritz.box>
2024-09-15 14:45:38 +02:00
Markus
d3a795c7e7 [fix] engine: qwant - detect captchaUrl and raise SearxEngineCaptchaException
So far a CAPTCHA was not recognized in the response of the qwant engine and a
SearxEngineAPIException was raised by mistake.  With this patch a CAPTCHA
redirect is recognized and the correct SearxEngineCaptchaException is raised.

Closes: https://github.com/searxng/searxng/issues/3806
Signed-off-by: Markus <markus@venom.fritz.box>
2024-09-15 14:45:23 +02:00
Markus
55e2f4a97f [data] update searx.data - update_engine_traits.py 2024-09-15 12:48:35 +02:00
Markus
cdb4927b8b [fix] fetch_traits: brave, google, annas_archive & radio_browser
This patch fixes a bug reported by CI "Fetch traits" [1] (brave) and improves
other fetch traits functions (google, annas_archive & radio_browser).

brave:

    File "/home/runner/work/searxng/searxng/searx/engines/brave.py", line 434, in fetch_traits
      sxng_tag = region_tag(babel.Locale.parse(ui_lang, sep='-'))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/home/runner/work/searxng/searxng/searx/locales.py", line 155, in region_tag
    Error:     raise ValueError('%s missed a territory')

google:

  change ERROR message about unknow UI language to INFO message

radio_browser:

  country_list contains duplicates that differ only in upper/lower case

annas_archive:

  for better diff; sort the persistence of the traits

[1] https://github.com/searxng/searxng/actions/runs/10606312371/job/29433352518#step:6:41

Signed-off-by: Markus <markus@venom.fritz.box>
2024-09-15 12:48:35 +02:00
Bnyro
84e2f9d46a [feat] gitlab: implement dedicated module
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-09-15 08:04:21 +02:00
searxng-bot
231e55f38d [l10n] update translations from Weblate
6bea94d18 - 2024-09-11 - sushen23 <sushen23@users.noreply.translate.codeberg.org>
771eedb39 - 2024-09-08 - 0ko <0ko@users.noreply.translate.codeberg.org>
b75ec6466 - 2024-09-08 - alexgabi <alexgabi@users.noreply.translate.codeberg.org>
2024-09-14 15:23:49 +02:00
Bnyro
33c1236923 [fix] search: crash when no engines are used to search 2024-09-14 11:13:53 +02:00
Finn Steffens
9e2bfe14db [feat] engine: add right dao
* [feat] engine: add right dao

* [enh] right dao engine: allow additional classes

Allow additional classes while parsing to prevent the engine from breaking in the future if additional classes are added to the elements.

Co-authored-by: Bnyro <bnyro@tutanota.com>

---------

Co-authored-by: Bnyro <bnyro@tutanota.com>
2024-09-12 17:51:47 +02:00
Lucas Schwiderski
f05566d925 [fix] json_engine: Fix result fields being mixed up
Fixes #3810.
2024-09-12 10:47:08 +02:00
0xhtml
c45870dd71 [fix] yep engine: remove links to other engines
Yep includes links to search for the same query on Google and other
search engines as a result in the search result. This fix skips these
results.
2024-09-12 00:04:04 +02:00
searxng-bot
5cca3f6ef2 [l10n] update translations from Weblate
cab91b92c - 2024-09-05 - xtex <xtexchooser@duck.com>
bbc77a9c4 - 2024-09-05 - Priit Jõerüüt <jrtcdbrg@users.noreply.translate.codeberg.org>
16ab61e99 - 2024-09-05 - return42 <return42@users.noreply.translate.codeberg.org>
34b1487b6 - 2024-09-04 - Erico <Erico@users.noreply.translate.codeberg.org>
811132898 - 2024-09-05 - return42 <return42@users.noreply.translate.codeberg.org>
099cb381e - 2024-09-04 - return42 <return42@users.noreply.translate.codeberg.org>
eebb940df - 2024-09-04 - 0ko <0ko@users.noreply.translate.codeberg.org>
50c845d17 - 2024-09-05 - return42 <return42@users.noreply.translate.codeberg.org>
f12addf27 - 2024-09-05 - return42 <return42@users.noreply.translate.codeberg.org>
c0879d377 - 2024-09-05 - return42 <return42@users.noreply.translate.codeberg.org>
7732d1356 - 2024-09-05 - return42 <return42@users.noreply.translate.codeberg.org>
dbe33cfb1 - 2024-09-05 - return42 <return42@users.noreply.translate.codeberg.org>
759dacddd - 2024-09-05 - return42 <return42@users.noreply.translate.codeberg.org>
7607b9ac6 - 2024-09-05 - return42 <return42@users.noreply.translate.codeberg.org>
aab0df3e7 - 2024-09-05 - return42 <return42@users.noreply.translate.codeberg.org>
f9232fbd6 - 2024-09-04 - return42 <return42@users.noreply.translate.codeberg.org>
f3a339dac - 2024-09-05 - return42 <return42@users.noreply.translate.codeberg.org>
4f3bdb5c9 - 2024-09-05 - return42 <return42@users.noreply.translate.codeberg.org>
fb92cc42d - 2024-09-05 - return42 <return42@users.noreply.translate.codeberg.org>
d6412e0c6 - 2024-09-05 - return42 <return42@users.noreply.translate.codeberg.org>
e1f6103fd - 2024-09-04 - Fjuro <fjuro@alius.cz>
4ee95b7f2 - 2024-09-03 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
84e4641d5 - 2024-09-04 - ghose <ghose@users.noreply.translate.codeberg.org>
2024-09-06 11:04:20 +02:00
dependabot[bot]
d2f36cacb3 [upd] pypi: Bump pylint from 3.2.6 to 3.2.7
Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.2.6 to 3.2.7.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.2.6...v3.2.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-06 11:03:27 +02:00
dependabot[bot]
153a28ccd6 [upd] pypi: Bump wlc from 1.14 to 1.15
Bumps [wlc](https://github.com/WeblateOrg/wlc) from 1.14 to 1.15.
- [Changelog](https://github.com/WeblateOrg/wlc/blob/main/CHANGES.rst)
- [Commits](https://github.com/WeblateOrg/wlc/compare/1.14...1.15)

---
updated-dependencies:
- dependency-name: wlc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-06 11:03:08 +02:00
Markus Heiser
9eda4044be [fix] bilibili engine - ValueError in duration & HTML in title
- ValueError in duration: issue reported in #3799
- HTML in title: related to #3770

[#3799] https://github.com/searxng/searxng/issues/3799
[#3770] https://github.com/searxng/searxng/pull/3770

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-09-06 07:13:47 +02:00
Markus
21bfb4996e [fix] engine yahoo: HTML tags are included in result titles
- https://github.com/searxng/searxng/issues/3790

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-09-03 22:26:59 +02:00
Bnyro
94a1f39bde [engine] bahnhof.de: remove engine 2024-09-03 18:52:54 +02:00
Markus Heiser
b774ee04ba [mod] enable calculator and allow plugin on public instances
Remove quirks that prevented the Calculator from being used on public instances.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-09-03 18:36:28 +02:00
Markus Heiser
3a3ff8f020 [mod] hardening "calculator plugin" / limit execution time to 50 ms
The execution of the function for the calculation is outsourced to a process
whose runtime is limited to 50 milliseconds.

Related:

- [1] https://github.com/searxng/searxng/pull/3377#issuecomment-2067977375

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-09-03 18:36:28 +02:00
Bnyro
7d9d5186a0 [build] /static
Co-authored-by: GenericMale <genericmale00@gmail.com>
2024-09-03 17:49:33 +02:00
GenericMale
e65edb141d [feat] results: show response times 2024-09-03 17:49:33 +02:00
Brock Vojkovic
b09aa7e360 [fix] correct typo in API_WONDOW to API_WINDOW 2024-09-01 08:37:24 +02:00
Bnyro
5e576b2238 [fix] search: titles including html brackets are not shown properly 2024-08-31 17:11:49 +02:00
dependabot[bot]
cbd86473aa [upd] pypi: Bump certifi from 2024.7.4 to 2024.8.30
Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.7.4 to 2024.8.30.
- [Commits](https://github.com/certifi/python-certifi/compare/2024.07.04...2024.08.30)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-31 09:50:52 +02:00
dependabot[bot]
769b2ed030 [upd] pypi: Bump selenium from 4.23.1 to 4.24.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.23.1 to 4.24.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits/selenium-4.24.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-31 09:50:34 +02:00
Alexander Sulfrian
e86c96974d [fix] self_info: request.user_agent is not a str
The user_agent attribute of the Flask request object is an instance of
the werkzeug.user_agent.UserAgent class.

This will fix the following error of the self_info plugin:

> ERROR:searx.plugins.self_info: Exception while calling post_search
> Traceback (most recent call last):
>   File "searx/plugins/__init__.py", line 203, in call
>     ret = getattr(plugin, plugin_type)(*args, **kwargs)
>   File "searx/plugins/self_info.py", line 31, in post_search
>     search.result_container.answers['user-agent'] = {'answer': gettext('Your user-agent is: ') + ua}
> TypeError: can only concatenate str (not "UserAgent") to str
2024-08-30 11:29:34 +02:00
searxng-bot
b05e285384 [l10n] update translations from Weblate
085dc9e17 - 2024-08-27 - demonshreder <demonshreder@users.noreply.translate.codeberg.org>
b75bb12dc - 2024-08-26 - return42 <return42@users.noreply.translate.codeberg.org>
7b1392ff2 - 2024-08-26 - return42 <return42@users.noreply.translate.codeberg.org>
2024-08-30 10:05:24 +02:00
Alexander Sulfrian
6a7b1a1a57 [fix] Do not show DDG user-agent from zero click
We do not want to show the user-agent information from the duckduckgo
zero click info. This is the user-agent used by searxng and not the
user-agent used by the user.

This was already done for the IP address in:
0fb3f0e4ae
2024-08-30 09:02:37 +02:00
return42
526428a69b [data] update searx.data - update_ahmia_blacklist.py 2024-08-29 17:49:14 +02:00
return42
d6ee8f38dd [data] update searx.data - update_wikidata_units.py 2024-08-29 17:48:59 +02:00
return42
d72fbcfd46 [data] update searx.data - update_firefox_version.py 2024-08-29 17:48:25 +02:00
return42
f44775c05a [data] update searx.data - update_engine_descriptions.py 2024-08-29 17:48:09 +02:00
return42
71451e5770 [data] update searx.data - update_currencies.py 2024-08-29 17:47:47 +02:00
GenericMale
8289436e55 [fix] search: don't show categories without active engine 2024-08-28 14:27:03 +02:00
searxng-bot
4f7dd05d99 [l10n] update translations from Weblate
1b63de5ca - 2024-08-21 - ghose <ghose@users.noreply.translate.codeberg.org>
7c738125f - 2024-08-20 - crnobog <crnobog@users.noreply.translate.codeberg.org>
2024-08-23 12:21:02 +02:00
Dennis ten Hoove
2033f30c8d [docs] improve Hostname plugin documentation 2024-08-21 14:28:04 +02:00
Markus Heiser
fe6bac5a08 [fix] pip install -e: legacy editable install (setup.py develop) is deprecated
From [1]: There is now a standardized mechanism [2] for an installer like pip to
request an editable install of a project.  pip is transitioning to using this
standard only instead of invoking the deprecated `setup.py develop` command.

For backward compatibility, we can use switches:

--use-pep517
  https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-use-pep517

--no-build-isolation
  https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-build-isolation

- [1] https://github.com/pypa/pip/issues/11457
- [2] https://peps.python.org/pep-0660/

Closes: https://github.com/searxng/searxng/issues/3701
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-08-21 12:09:14 +02:00
Austin-Olacsi
e45b771ffa [feat] engine: implementation of yandex (web, images)
It's set to inactive in settings.yml because of CAPTCHA.  You need to remove
that from the settings.yml to get in use.

Closes: https://github.com/searxng/searxng/issues/961
2024-08-21 12:08:35 +02:00
Grant Lanham
5276219b9d Fix tineye engine url, datetime parsing, and minor refactor
Changes made to tineye engine:
1. Importing logging if TYPE_CHECKING is enabled
2. Remove unecessary try-catch around json parsing the response, as this
masked the original error and had no immediate benefit
3. Improve error handling explicitely for status code 422 and 400
upfront, deferring json_parsing only for these status codes and
successful status codes
4. Unit test all new applicable changes to ensure compatability
2024-08-21 08:41:53 +02:00
Markus Heiser
5be55e3309 [fix] unit tests: fix load / unload engines & fix messages
- https://github.com/searxng/searxng/pull/3746#issuecomment-2300965005
- https://github.com/searxng/searxng/issues/2988#issuecomment-2226929084

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-08-21 08:28:13 +02:00
Markus Heiser
5c6b126d7f [fix] debian/ubuntu python-is-python3
Closes: https://github.com/searxng/searxng/issues/3235
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-08-20 20:20:50 +02:00
Markus Heiser
799d72e3fd [mod] add French translation for infopage
The French translation was provided by @jcarnat in #3738.

[3738] https://github.com/searxng/searxng/issues/3738

Co-authored-by: Joel Carnat @jcarnat https://github.com/jcarnat
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-08-20 07:25:39 +02:00
searxng-bot
c0369ee488 [l10n] update translations from Weblate
fff02429f - 2024-08-15 - return42 <return42@users.noreply.translate.codeberg.org>
b13279293 - 2024-08-15 - return42 <return42@users.noreply.translate.codeberg.org>
fc7c2faa4 - 2024-08-14 - 0ko <0ko@users.noreply.translate.codeberg.org>
6697dad47 - 2024-08-14 - return42 <return42@users.noreply.translate.codeberg.org>
e9ccc396d - 2024-08-13 - Aeris1One <Aeris1One@users.noreply.translate.codeberg.org>
f48553819 - 2024-08-12 - tentsbet <tentsbet@users.noreply.translate.codeberg.org>
d431b6c04 - 2024-08-11 - hugoalh <hugoalh@users.noreply.translate.codeberg.org>
b942a29c7 - 2024-08-11 - rafablog77 <rafablog77@users.noreply.translate.codeberg.org>
2f4d23a5a - 2024-08-09 - xyb <xyb@users.noreply.translate.codeberg.org>
a4f47be87 - 2024-08-10 - return42 <return42@users.noreply.translate.codeberg.org>
2024-08-16 10:39:17 +02:00
dependabot[bot]
29056b9ddd [upd] pypi: Bump uvloop from 0.19.0 to 0.20.0
Bumps [uvloop](https://github.com/MagicStack/uvloop) from 0.19.0 to 0.20.0.
- [Release notes](https://github.com/MagicStack/uvloop/releases)
- [Commits](https://github.com/MagicStack/uvloop/compare/v0.19.0...v0.20.0)

---
updated-dependencies:
- dependency-name: uvloop
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-16 10:37:51 +02:00
dependabot[bot]
326ade8634 [upd] pypi: Bump lxml from 5.2.2 to 5.3.0
Bumps [lxml](https://github.com/lxml/lxml) from 5.2.2 to 5.3.0.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-5.2.2...lxml-5.3.0)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-16 10:35:51 +02:00
Markus Heiser
8d14d46c00 [build] /static 2024-08-15 18:58:28 +02:00
Markus Heiser
45f03f1902 [fix] search box: clear button don't appear on mouse-copy
You have to copy and paste the query without using the keyboard to replicate the
issue. As soon as you press the keyboard the cross appears. [1]

- [1] https://github.com/searxng/searxng/issues/3725#issuecomment-2282655272

Reported-by: @Immortality-IMT in [1]
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-08-15 18:58:28 +02:00
Fmstrat
8e985aea88 update to gecko driver v35 2024-08-15 08:32:23 +02:00
searxng-bot
f1c05e7c16 [l10n] update translations from Weblate 2024-08-09 09:50:24 +02:00
dependabot[bot]
fec8ab75e1 [upd] pypi: Bump pyyaml from 6.0.1 to 6.0.2
Bumps [pyyaml](https://github.com/yaml/pyyaml) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/yaml/pyyaml/releases)
- [Changelog](https://github.com/yaml/pyyaml/blob/main/CHANGES)
- [Commits](https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2)

---
updated-dependencies:
- dependency-name: pyyaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-09 09:49:51 +02:00
dependabot[bot]
516ac8da82 [upd] pypi: Bump babel from 2.15.0 to 2.16.0
Bumps [babel](https://github.com/python-babel/babel) from 2.15.0 to 2.16.0.
- [Release notes](https://github.com/python-babel/babel/releases)
- [Changelog](https://github.com/python-babel/babel/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-babel/babel/compare/v2.15.0...v2.16.0)

---
updated-dependencies:
- dependency-name: babel
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-09 09:49:21 +02:00
Markus Heiser
dcf95644c6 [breaking change] drop deprecated hostname_replace plugin
The successor is “hostname plugin” from PR:

- https://github.com/searxng/searxng/pull/3463

---

Revert "[refactor] hostnames plugin: add fallback for old hostname_replace plugin"

This reverts commit f5eb56b63f.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-08-08 11:58:32 +02:00
0xhtml
0cfed94b08 [fix] engine google: use extract_text everywhere 2024-08-08 09:59:45 +02:00
0xhtml
7f9ce3b96e [fix] engine google: strip bubble text from answers
Google underlines words inside of answers that can be clicked to show
additional definitions. These definitions inside the answer were not
correctly handled and ended up in the middle of the answer text. With
this fix, the extra definitions are stripped from the answer shown by
the frontend.
2024-08-08 09:59:45 +02:00
return42
e76a4f72ef [data] update searx.data - update_external_bangs.py 2024-08-02 10:55:07 +02:00
dependabot[bot]
c151683a0b [upd] pypi: Bump redis from 5.0.7 to 5.0.8
Bumps [redis](https://github.com/redis/redis-py) from 5.0.7 to 5.0.8.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v5.0.7...v5.0.8)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-02 10:54:37 +02:00
dependabot[bot]
01a3d8d9e4 [upd] pypi: Bump sphinx-notfound-page from 1.0.2 to 1.0.4
Bumps [sphinx-notfound-page](https://github.com/readthedocs/sphinx-notfound-page) from 1.0.2 to 1.0.4.
- [Changelog](https://github.com/readthedocs/sphinx-notfound-page/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/readthedocs/sphinx-notfound-page/compare/1.0.2...1.0.4)

---
updated-dependencies:
- dependency-name: sphinx-notfound-page
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-02 10:54:01 +02:00
searxng-bot
2f1f54f113 [l10n] update translations from Weblate
458a2234c - 2024-08-01 - Wexterity <Wexterity@users.noreply.translate.codeberg.org>
615d49db6 - 2024-08-01 - return42 <return42@users.noreply.translate.codeberg.org>
16bfd767e - 2024-08-01 - Thecode764 <Thecode764@users.noreply.translate.codeberg.org>
ccd38ad43 - 2024-07-31 - return42 <return42@users.noreply.translate.codeberg.org>
3820b926b - 2024-07-31 - Shpubly <Shpubly@users.noreply.translate.codeberg.org>
11c302c50 - 2024-07-29 - return42 <return42@users.noreply.translate.codeberg.org>
a588e2e33 - 2024-07-29 - return42 <return42@users.noreply.translate.codeberg.org>
15ba3d4eb - 2024-07-29 - ghose <ghose@users.noreply.translate.codeberg.org>
a160c69b3 - 2024-07-30 - wags07 <wags07@users.noreply.translate.codeberg.org>
fc9d877d4 - 2024-07-29 - nebras <nebras@users.noreply.translate.codeberg.org>
61eaf7001 - 2024-07-28 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
3c7e9cdfd - 2024-07-27 - return42 <return42@users.noreply.translate.codeberg.org>
babce47c7 - 2024-07-27 - EifionLlwyd <EifionLlwyd@users.noreply.translate.codeberg.org>
0b467dd7d - 2024-07-27 - Fjuro <fjuro@alius.cz>
2024-08-02 10:53:04 +02:00
Markus Heiser
98c73010f1 [data] update searx.data - update_engine_traits.py
$ make data.traits

Last GH action has been failed [1], the bugfixes from aa05685cc
were necessary to update the data.

[1] https://github.com/searxng/searxng/actions/runs/10135834050/job/28023757191

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-07-29 10:28:53 +02:00
Markus Heiser
edfd0e2fe5 [fix] brave fetch_traits: Brave added Chinese (zh-hant) to UI
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-07-29 10:28:53 +02:00
return42
3196e7e86b [data] update searx.data - update_currencies.py 2024-07-29 07:02:52 +02:00
return42
7d47c961c3 [data] update searx.data - update_engine_descriptions.py 2024-07-29 07:01:39 +02:00
return42
ac51c77c33 [data] update searx.data - update_wikidata_units.py 2024-07-29 07:01:01 +02:00
return42
5cba412784 [data] update searx.data - update_ahmia_blacklist.py 2024-07-29 07:00:14 +02:00
return42
fff7792e32 [data] update searx.data - update_firefox_version.py 2024-07-29 07:00:00 +02:00
Markus Heiser
ee959ed9fc [fix] engine geizhals: if there are no offers, there is no best price
Fault pattern: if there are no offers, then an exception has been thrown:

    IndexError: list index out of range

This patch makes the addition of “best price” dependent on whether one exists.

Closes: #3685
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-07-28 19:00:51 +02:00
Markus Heiser
022898e502 [fix] fix issues in the language menue introduced by PR #3645
In my review of [1] I tried to reformat the template code of the language
menue whereby I have made two mistakes.

- default language was added twice
- in the 'Auto-detect' item a hard coded `[auto]` was implemented where the
  `search_language` variable was needed.

[1] https://github.com/searxng/searxng/issues/3645

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-07-28 10:46:11 +02:00
Austin-Olacsi
9f47bdefc6 [feat] engine: implementation of encyclosearch 2024-07-28 10:45:51 +02:00
Markus Heiser
d7bb97b616 [fix] engine yacy images: increase timout from 3 to 5sec
Its a leftover from 657dcb97

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-07-27 17:54:41 +02:00
Bnyro
9bbcd37138 [docs] engine_overview.rst: add length and views parameter to videos template 2024-07-27 11:49:58 +02:00
Bnyro
80226ad6b7 [build] /static 2024-07-27 11:49:58 +02:00
Bnyro
304ddd8114 [feat] videos template: support for view count 2024-07-27 11:49:58 +02:00
Markus Heiser
3f22dbb68a [fix] products template: don't quote html tags in result.content
The result.content field is *safe* HTML, tags to highlight search terms are
intended.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-07-27 11:46:25 +02:00
Bnyro
84abab0808 [feat] engine: implementation of geizhals.de 2024-07-27 11:46:25 +02:00
dependabot[bot]
8e359eb8ed [upd] pypi: Bump sphinx from 7.3.7 to 7.4.7
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.3.7 to 7.4.7.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.3.7...v7.4.7)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-27 10:13:57 +02:00
Markus Heiser
e31b06b686 [fix] remove unused code / _STORAGE_UNIT_VALUE
The `_STORAGE_UNIT_VALUE` dictionary is a left over from:

- https://github.com/searxng/searxng/pull/3570

in this PR we removed the old implementations but forgot to delete this
`_STORAGE_UNIT_VALUE`.

Closes: https://github.com/searxng/searxng/pull/3672
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-07-27 10:13:15 +02:00
Sylvain Cau
b9ddd59c5b [enh] Add API Key support for discourse.org forums 2024-07-27 09:21:40 +02:00
dependabot[bot]
dde94751d6 [upd] pypi: Bump selenium from 4.23.0 to 4.23.1
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.23.0 to 4.23.1.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-27 09:15:02 +02:00
dependabot[bot]
07a0135a92 [upd] pypi: Bump pylint from 3.2.5 to 3.2.6
Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.2.5 to 3.2.6.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.2.5...v3.2.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-27 09:14:44 +02:00
Ivan Gabaldon
26b66dd3be [fix] everything is logged with "priority 3" on journal
Closes: https://github.com/searxng/searxng/issues/3649
2024-07-27 09:11:49 +02:00
searxng-bot
319afe031e [l10n] update translations from Weblate
2b14808d4 - 2024-07-26 - pdwalker <pdwalker@users.noreply.translate.codeberg.org>
2024-07-26 09:15:40 +02:00
Markus Heiser
657dcb973a [fix] engine yacy: update list of base URLs
https://search.lomig.me
  Poor results / tested `!yacy :en hello` and got zero results

https://yacy.ecosys.eu
  Slow response (> 6sec for trivial search terms)

https://search.webproject.link
  Dead instance / URL offline

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-07-20 09:59:43 +02:00
dependabot[bot]
b0aa6fe8a5 [upd] pypi: Bump selenium from 4.22.0 to 4.23.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.22.0 to 4.23.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.22.0...selenium-4.23.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-20 07:54:21 +02:00
searxng-bot
ffde256364 [l10n] update translations from Weblate
94bacfa68 - 2024-07-19 - wazhanudin <wazhanudin@users.noreply.translate.codeberg.org>
360fa8b30 - 2024-07-19 - return42 <return42@users.noreply.translate.codeberg.org>
b378bf462 - 2024-07-12 - return42 <return42@users.noreply.translate.codeberg.org>
8110ad613 - 2024-07-12 - return42 <return42@users.noreply.translate.codeberg.org>
2024-07-19 09:16:10 +02:00
Grant Lanham
9a4fa7cc4f Update mullvad_leta.py to account for img_elem
A recent update from Mullvad Leta introduced the img_elem. This update
broke the existing logic. Now, by checking the length of the dom_result
to see if it was included in the return results, we can handle the logic
accordingly.
2024-07-15 06:58:39 +02:00
Markus Heiser
2039060b64 [mod] revision of the settings_loader
The intention of this PR is to modernize the settings_loader implementations.
The concept is old (remember, this is partly from 2014), back then we only had
one config file, meanwhile we have had a folder with config files for a very
long time.  Callers can now load a YAML configuration from this folder as
follows ::

    settings_loader.get_yaml_cfg('my-config.yml')

- BTW this is a fix of #3557.

- Further the `existing_filename_or_none` construct dates back to times when
  there was not yet a `pathlib.Path` in all Python versions we supported in the
  past.

- Typehints have been added wherever appropriate

At the same time, this patch should also be downward compatible and not
introduce a new environment variable. The localization of the folder with the
configurations is further based on:

    SEARXNG_SETTINGS_PATH (wich defaults to /etc/searxng/settings.yml)

Which means, the default config folder is `/etc/searxng/`.

ATTENTION: intended functional changes!

 If SEARXNG_SETTINGS_PATH was set and pointed to a not existing file, the
 previous implementation silently loaded the default configuration.  This
 behavior has been changed: if the file or folder does not exist, an
 EnvironmentError exception will be thrown in future.

Closes: https://github.com/searxng/searxng/issues/3557
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-07-14 18:10:06 +02:00
Bnyro
e4da22ee51 [feat] engine: implementation of alpine linux packages
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-07-14 17:57:58 +02:00
Grant Lanham
e56f4b315f [mod] UX: flush flag icon to right in language select option values
If the flag icon is first, it prevents easily searching the select list on the
keyboard.  By moving the icon fully to the right, this will enable a user to
search the select list.

Closes: https://github.com/searxng/searxng/issues/3645
2024-07-14 16:39:50 +02:00
Alexandre Flament
37d0438f25 Dockerfile: use Alpine 3.20 & Python 3.12 2024-07-14 16:38:30 +02:00
Allen
5468d97d39 [mod] remove py 3.6 leftovers 2024-07-13 17:20:50 +02:00
Markus Heiser
37ec668ae1 [build] /static 2024-07-13 17:19:59 +02:00
Markus Heiser
d0bad45d21 [fix] simple theme: in URLs don't truncate descenders (typograhy, FFox)
HINT: this is a workaround to fix a rendering bug in FFox-Desktop [3]

Descenders [1] in the URL are truncated, caused by the `overflow: hidden;`
because part of link overflow the flex box [2].

[1] https://en.wikipedia.org/wiki/Descender
[2] https://github.com/searxng/searxng/issues/3550
[3] https://github.com/searxng/searxng/pull/3592#issuecomment-2186313121

Closes: https://github.com/searxng/searxng/issues/3550
Suggested-by: @coxde
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-07-13 17:19:59 +02:00
searxng-bot
d5487a157d [l10n] update translations from Weblate
cecd9182a - 2024-07-11 - ds451 <ds451@users.noreply.translate.codeberg.org>
8e9bf64ae - 2024-07-10 - wazhanudin <wazhanudin@users.noreply.translate.codeberg.org>
82e209f2d - 2024-07-08 - notlmutsaers <notlmutsaers@users.noreply.translate.codeberg.org>
428204a2f - 2024-07-08 - alexgabi <alexgabi@users.noreply.translate.codeberg.org>
4dd16510d - 2024-07-08 - notlmutsaers <notlmutsaers@users.noreply.translate.codeberg.org>
fb5015db9 - 2024-07-08 - notlmutsaers <notlmutsaers@users.noreply.translate.codeberg.org>
686800ded - 2024-07-08 - louispires <louispires@users.noreply.translate.codeberg.org>
7fc33af6d - 2024-07-05 - wags07 <wags07@users.noreply.translate.codeberg.org>
cbab31eae - 2024-07-06 - jonkke9 <jonkke9@users.noreply.translate.codeberg.org>
2024-07-13 17:18:16 +02:00
Markus Heiser
a3500c1efc [fix] tear down TEST_ENGINES after TestBang is proceeded
Engines are loaded into global name `searx.engines.engines` other applications
such as statistics or the histogram use this global variable to search for
values in their own memories, which can lead to key errors as described in

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

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Closes: https://github.com/searxng/searxng/issues/2988
2024-07-13 17:13:41 +02:00
Grant Lanham
ef103ba80a Implement google/brave switch in Mullvad Leta
cleanup

Import annontations
2024-07-07 08:08:11 +02:00
dependabot[bot]
c835f920ed [upd] pypi: Bump certifi from 2024.6.2 to 2024.7.4
Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.6.2 to 2024.7.4.
- [Commits](https://github.com/certifi/python-certifi/compare/2024.06.02...2024.07.04)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-05 10:44:19 +02:00
dependabot[bot]
779565497c [upd] pypi: Bump pylint from 3.2.3 to 3.2.5
Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.2.3 to 3.2.5.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.2.3...v3.2.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-05 10:24:18 +02:00
searxng-bot
67008226fc [l10n] update translations from Weblate
1f7de30a2 - 2024-07-04 - Jeex <Jeex@users.noreply.translate.codeberg.org>
5d34f39a9 - 2024-07-04 - return42 <return42@users.noreply.translate.codeberg.org>
930a817f1 - 2024-07-04 - return42 <return42@users.noreply.translate.codeberg.org>
53936f24d - 2024-07-03 - return42 <return42@users.noreply.translate.codeberg.org>
3fcf83c92 - 2024-07-02 - rodgui <rodgui@users.noreply.translate.codeberg.org>
19b2f9ac4 - 2024-07-03 - seonghobae <seonghobae@users.noreply.translate.codeberg.org>
07ef05dbe - 2024-06-30 - return42 <return42@users.noreply.translate.codeberg.org>
23f2ef2cf - 2024-06-29 - geekom13 <geekom13@users.noreply.translate.codeberg.org>
2024-07-05 09:30:13 +02:00
Bnyro
4eaa0dd275 [fix] gentoo: use mediawiki engine 2024-07-03 10:24:03 +02:00
Allen
54be8f09a6 [fix] html.unescape stract autocomplete suggestions 2024-07-02 18:16:46 +02:00
Thomas Renard
39aaac40d6 [mod] libretranslate: add direct link to translation (engine) 2024-06-30 16:18:33 +02:00
return42
adaec68728 [data] update searx.data - update_wikidata_units.py 2024-06-29 07:20:59 +02:00
return42
47ffa711d2 [data] update searx.data - update_ahmia_blacklist.py 2024-06-29 07:10:59 +02:00
return42
c7d1f4278d [data] update searx.data - update_firefox_version.py 2024-06-29 07:09:16 +02:00
return42
985c8b0bce [data] update searx.data - update_engine_traits.py 2024-06-29 07:08:55 +02:00
return42
7200640055 [data] update searx.data - update_engine_descriptions.py 2024-06-29 07:07:32 +02:00
searxng-bot
46b9273352 [l10n] update translations from Weblate
4fc3ba360 - 2024-06-27 - Kita Ikuyo <searinminecraft@courvix.com>
15a6fae2f - 2024-06-26 - artnay <artnay@users.noreply.translate.codeberg.org>
2cb08843e - 2024-06-27 - MonsoonRain <MonsoonRain@users.noreply.translate.codeberg.org>
794c9db02 - 2024-06-25 - return42 <return42@users.noreply.translate.codeberg.org>
8edf87498 - 2024-06-25 - Linerly <Linerly@users.noreply.translate.codeberg.org>
bc97997b5 - 2024-06-26 - LIGMATV <LIGMATV@users.noreply.translate.codeberg.org>
d8620edb1 - 2024-06-24 - ahmetax <ahmetax@users.noreply.translate.codeberg.org>
7d8d6580e - 2024-06-25 - gvlx <gvlx@users.noreply.translate.codeberg.org>
57f8e9bde - 2024-06-25 - return42 <return42@users.noreply.translate.codeberg.org>
7364acbe4 - 2024-06-25 - eddywidjaja <eddywidjaja@users.noreply.translate.codeberg.org>
9f6ddc2b5 - 2024-06-24 - return42 <return42@users.noreply.translate.codeberg.org>
a64f2e708 - 2024-06-21 - PeterDaveHello <PeterDaveHello@users.noreply.translate.codeberg.org>
cc195d7ad - 2024-06-21 - nish_j <nish_j@users.noreply.translate.codeberg.org>
87d2e16d5 - 2024-06-22 - tentsbet <tentsbet@users.noreply.translate.codeberg.org>
2c73400eb - 2024-06-22 - return42 <return42@users.noreply.translate.codeberg.org>
a467cf8af - 2024-06-21 - Fjuro <fjuro@alius.cz>
2024-06-28 09:46:44 +02:00
dependabot[bot]
6801f1a6cb [upd] pypi: Bump redis from 5.0.6 to 5.0.7
Bumps [redis](https://github.com/redis/redis-py) from 5.0.6 to 5.0.7.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v5.0.6...v5.0.7)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-28 09:46:20 +02:00
Markus Heiser
d80fcbc635 [fix] unit test_xpath.py: name 'logger' is not defined
Depending on the order in which the unit tests are executed, the python modules
of the engines are initialized (monkey patched) or not. As the order of the
tests is not static, random errors may occur.

To avaoid random `NameError: name 'logger' is not defined` in the unit tests of
the xpath engine, a logger is monkey patched into the xpath py-module.

```
make test.unit
TEST      tests/unit
......EE...................
======================================================================
ERROR: test_response (tests.unit.engines.test_xpath.TestXpathEngine.test_response)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./tests/unit/engines/test_xpath.py", line 60, in test_response
    self.assertEqual(xpath.response(response), [])
                     ^^^^^^^^^^^^^^^^^^^^^^^^
  File "./searx/engines/xpath.py", line 309, in response
    logger.debug("found %s results", len(results))
    ^^^^^^
NameError: name 'logger' is not defined

======================================================================
ERROR: test_response_results_xpath (tests.unit.engines.test_xpath.TestXpathEngine.test_response_results_xpath)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./tests/unit/engines/test_xpath.py", line 102, in test_response_results_xpath
    self.assertEqual(xpath.response(response), [])
                     ^^^^^^^^^^^^^^^^^^^^^^^^
  File "./searx/engines/xpath.py", line 309, in response
    logger.debug("found %s results", len(results))
    ^^^^^^
NameError: name 'logger' is not defined
```

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-06-28 08:54:19 +02:00
Markus Heiser
a5f8e0899c [fix] disable Reddit engine by default
Reddit is enabled by default .. many bot request will go through Reddit .. we
should disable Reddit by default to cool down the IP [1].

[1] https://github.com/searxng/searxng/issues/3444#issuecomment-2180415057

Closes: https://github.com/searxng/searxng/issues/3444
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-06-28 08:48:52 +02:00
Christian Clauss
837f3bcd10 GitHub Actions: Upgrade data-update.yml infrastructure 2024-06-25 15:26:05 +02:00
Markus Heiser
1449824165 [data] update searx.data - update_engine_traits.py
$ make data.traits

Last GH action has been failed [1], the bugfixes from

- https://github.com/searxng/searxng/pull/3611
- https://github.com/searxng/searxng/pull/3612

were necessary to update the data.

[1] https://github.com/searxng/searxng/actions/runs/9278028691/job/25528337485

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-06-25 15:20:51 +02:00
Markus Heiser
0f9926b89a [fix] brave fetch_traits: layout of the settings page has changed
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-06-25 15:08:18 +02:00
Markus Heiser
39ffec87b7 [fix] engine zlibrary: handle seized domain
The domains of zlibrary instances are known to be seized from time to time.
This leads to problems when, for example, the automated tasks try to update the
engine traits (aka fetch_traits). The search function should also generate a
suitable error message (currently either SSL errors or empty result lists are
returned). [1]

[1] https://github.com/searxng/searxng/issues/3610
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-06-25 14:40:19 +02:00
Markus Heiser
b8fa4d6195 [fix] bing news results return invalid images
Closes: https://github.com/searxng/searxng/issues/3502
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-06-25 11:12:41 +02:00
Grant Lanham
9a9ca307fe [fix] implement tests and remove usage of gen_useragent in engines 2024-06-23 11:51:41 +02:00
Richard Lyons
1f908a6222 [fix] engine unit tests.
Enables unit tests in the engines directory by adding __init__.py, and fixups
for the enabled tests.
2024-06-23 09:24:05 +02:00
dependabot[bot]
f6f622f7e5 [upd] pypi: Bump selenium from 4.21.0 to 4.22.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.21.0 to 4.22.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.21.0...selenium-4.22.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-21 12:28:32 +02:00
searxng-bot
7f72c48b59 [l10n] update translations from Weblate
3e3c194e8 - 2024-06-20 - Vulcain <Vulcain@users.noreply.translate.codeberg.org>
0ffab2bcb - 2024-06-19 - LunarCat93 <LunarCat93@users.noreply.translate.codeberg.org>
36809a19a - 2024-06-19 - return42 <return42@users.noreply.translate.codeberg.org>
a97aff39a - 2024-06-19 - MonsoonRain <MonsoonRain@users.noreply.translate.codeberg.org>
5d7cbca43 - 2024-06-17 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
ada44ff85 - 2024-06-17 - Xvnov <Xvnov@users.noreply.translate.codeberg.org>
2f398eb58 - 2024-06-18 - tiziodcaio <tiziodcaio@users.noreply.translate.codeberg.org>
11fde5415 - 2024-06-18 - ghose <ghose@users.noreply.translate.codeberg.org>
7de1d0c22 - 2024-06-18 - return42 <return42@users.noreply.translate.codeberg.org>
eeb9500b8 - 2024-06-18 - return42 <return42@users.noreply.translate.codeberg.org>
2024-06-21 12:16:35 +02:00
Richard Lyons
f195d98bfb Fix search_url building. 2024-06-20 06:30:00 +02:00
Markus Heiser
acf3f109b2 [doc] hostname plugin: improve online documentation
The data types (list & map) should be made clearer, as these sometimes lead to
misunderstandings.

[1] https://github.com/searxng/searxng/issues/3558#issuecomment-2175058128

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-06-18 12:06:06 +02:00
Sandro Jäckel
accc1c1032 [fix] setup.py - packaging for 'answerers' to build a valid package
Fix installing answerers when installing SearXNG through a wheel [1].  These
files have been missed in commit d72fa99b.

Here is what have been tested:

    $ make clean py.build
    ...
    $ python -m venv test123
    $ . ./test123/bin/activate
    (test123) $ pip install dist/searxng-2024*-py3-none-any.whl
    (test123) $ SEARXNG_DEBUG=1 searxng-run

[1] https://github.com/searxng/searxng/pull/3045#issuecomment-1961767861
2024-06-17 15:07:07 +02:00
Jeff Alyanak
efd69c4ca9 [feat] plugin Self Information: improve keyword matching
This change does the following things:

- the `ip` keyword is now case-insensitive
- if the query includes `my ip` it will now also match

In order to avoid too many false matches, the `ip` keyword alone matches only if
it's the _only_ word, but the inclusion of `my` loosens that to be inclusive of
users type a phrase (eg, "what is my ip", "tell me my ip", "my IP address",
etc).

Better answer context

Previously this plugin simply dumped your IP or user-agent string as an answer.
This tiny change just adds some text to contextualize those answers (eg, "Your
IP is: 1.2.3.4" instead of just "1.2.3.4").
2024-06-17 14:12:37 +02:00
Allen
13eec44b65 [fix] \!goi irrelevant results AND display more results 2024-06-16 16:45:03 +02:00
Bnyro
e9f8412a6e [perf] torrents.html, files.html: don't parse and re-format filesize 2024-06-15 15:42:29 +02:00
dependabot[bot]
16ce5612dd [upd] pypi: Bump redis from 5.0.5 to 5.0.6
Bumps [redis](https://github.com/redis/redis-py) from 5.0.5 to 5.0.6.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v5.0.5...v5.0.6)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-15 11:36:57 +02:00
Bnyro
df15c21b35 [feat] mozhi: fix crash, support synonyms and definition 2024-06-15 11:33:09 +02:00
Bnyro
1fe13d0ba4 [refactor] duckduckgo: use extr helper function in get_vqd 2024-06-15 11:24:05 +02:00
holysoles
7be468d213 [feat] docker: add env vars for common public instance settings 2024-06-14 14:58:02 +02:00
searxng-bot
63b7d558b6 [l10n] update translations from Weblate
351fcdf8d - 2024-06-14 - return42 <return42@users.noreply.translate.codeberg.org>
4ab6400d8 - 2024-06-13 - Xvnov <Xvnov@users.noreply.translate.codeberg.org>
8f1bb9a0c - 2024-06-14 - return42 <return42@users.noreply.translate.codeberg.org>
fa147559d - 2024-06-12 - MVDW-Java <MVDW-Java@users.noreply.translate.codeberg.org>
3beab11c3 - 2024-06-11 - return42 <return42@users.noreply.translate.codeberg.org>
52f450636 - 2024-06-11 - mukmckenzie <mukmckenzie@users.noreply.translate.codeberg.org>
c61f2cb8b - 2024-06-11 - tentsbet <tentsbet@users.noreply.translate.codeberg.org>
7c74be3d3 - 2024-06-10 - nebras <nebras@users.noreply.translate.codeberg.org>
b5aace1de - 2024-06-07 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
fc187ae6e - 2024-06-07 - return42 <return42@users.noreply.translate.codeberg.org>
cf3a8d3f5 - 2024-06-07 - return42 <return42@users.noreply.translate.codeberg.org>
bfc316b9d - 2024-06-07 - diodio <diodio@users.noreply.translate.codeberg.org>
a27e1586d - 2024-06-07 - return42 <return42@users.noreply.translate.codeberg.org>
6bd0bf14d - 2024-06-07 - return42 <return42@users.noreply.translate.codeberg.org>
9b2b3aa36 - 2024-06-07 - return42 <return42@users.noreply.translate.codeberg.org>
41716759a - 2024-06-07 - return42 <return42@users.noreply.translate.codeberg.org>
08c9fef67 - 2024-06-07 - return42 <return42@users.noreply.translate.codeberg.org>
dd2555fe2 - 2024-06-07 - return42 <return42@users.noreply.translate.codeberg.org>
e69dc5dc6 - 2024-06-07 - ganoci <ganoci@users.noreply.translate.codeberg.org>
a3503130d - 2024-06-08 - ghose <ghose@users.noreply.translate.codeberg.org>
a2a2f0725 - 2024-06-07 - return42 <return42@users.noreply.translate.codeberg.org>
35b9d1be7 - 2024-06-07 - return42 <return42@users.noreply.translate.codeberg.org>
d53560df2 - 2024-06-07 - return42 <return42@users.noreply.translate.codeberg.org>
58c3c041f - 2024-06-07 - return42 <return42@users.noreply.translate.codeberg.org>
d7847aa9d - 2024-06-07 - EifionLlwyd <EifionLlwyd@users.noreply.translate.codeberg.org>
3a114bf44 - 2024-06-07 - Fjuro <fjuro@alius.cz>
1f2fc0ff2 - 2024-06-07 - return42 <return42@users.noreply.translate.codeberg.org>
17a78625f - 2024-06-07 - return42 <return42@users.noreply.translate.codeberg.org>
6e8bdfd99 - 2024-06-07 - diodio <diodio@users.noreply.translate.codeberg.org>
2024-06-14 09:27:29 +02:00
Ember
cb945276b6 Change 'his/her' to 'them' 2024-06-13 10:23:01 +02:00
Bnyro
f5eb56b63f [refactor] hostnames plugin: add fallback for old hostname_replace plugin
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-06-07 14:42:52 +02:00
Markus Heiser
845a0b678d [doc] add 'hostnames' plugin to the online documentation
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-06-07 14:42:52 +02:00
Bnyro
aa59bfbf60 [feat] hostname replace plugin: support for external list file 2024-06-07 14:42:52 +02:00
Bnyro
3bec04079c [feat] hostname replace plugin: possibility to prioritize certain websites
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-06-07 14:42:52 +02:00
dependabot[bot]
d4c3d30995 [upd] pypi: Bump nose2[coverage_plugin] from 0.14.2 to 0.15.1
Bumps [nose2[coverage_plugin]](https://github.com/nose-devs/nose2) from 0.14.2 to 0.15.1.
- [Changelog](https://github.com/nose-devs/nose2/blob/main/docs/changelog.rst)
- [Commits](https://github.com/nose-devs/nose2/compare/0.14.2...0.15.1)

---
updated-dependencies:
- dependency-name: nose2[coverage_plugin]
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-07 11:32:36 +02:00
Bnyro
46c5309888 [feat] mojeek: implement dedicated module 2024-06-07 11:31:05 +02:00
Markus Heiser
32a2175f38 [feat] add engines for discourse forums (python, caddy, pi-hole)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-06-07 10:16:09 +02:00
allendema_searxng_pi
ee146dbc07 [enh] Add engine for discourse forums 2024-06-07 10:16:09 +02:00
searxng-bot
91882aedf1 [l10n] update translations from Weblate
00cfc653d - 2024-06-06 - ghose <ghose@users.noreply.translate.codeberg.org>
a89cbc458 - 2024-06-06 - artnay <artnay@users.noreply.translate.codeberg.org>
b58008c90 - 2024-06-06 - EifionLlwyd <EifionLlwyd@users.noreply.translate.codeberg.org>
2c92cadcb - 2024-06-05 - ghose <ghose@users.noreply.translate.codeberg.org>
2d159a175 - 2024-06-02 - sygmamess <sygmamess@users.noreply.translate.codeberg.org>
a9ab96e6e - 2024-06-01 - chjtxwd <chjtxwd@users.noreply.translate.codeberg.org>
2488cff09 - 2024-06-01 - return42 <return42@users.noreply.translate.codeberg.org>
22626a0f2 - 2024-06-01 - return42 <return42@users.noreply.translate.codeberg.org>
2024-06-07 10:14:03 +02:00
dependabot[bot]
cbd8ecdaad [upd] pypi: Bump redis from 5.0.4 to 5.0.5
Bumps [redis](https://github.com/redis/redis-py) from 5.0.4 to 5.0.5.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v5.0.4...v5.0.5)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-07 10:13:38 +02:00
dependabot[bot]
312c922ce1 [upd] pypi: Bump certifi from 2024.2.2 to 2024.6.2
Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.2.2 to 2024.6.2.
- [Commits](https://github.com/certifi/python-certifi/compare/2024.02.02...2024.06.02)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-07 10:12:40 +02:00
dependabot[bot]
4f119936cb [upd] pypi: Bump pylint from 3.2.2 to 3.2.3
Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.2.2 to 3.2.3.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.2.2...v3.2.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-07 10:11:51 +02:00
searxng-bot
18fb701be2 [l10n] update translations from Weblate
61aa303a4 - 2024-05-28 - return42 <return42@users.noreply.translate.codeberg.org>
170248b24 - 2024-05-28 - morenewsavailable <morenewsavailable@users.noreply.translate.codeberg.org>
7c2fee870 - 2024-05-28 - return42 <return42@users.noreply.translate.codeberg.org>
5b4a84c9c - 2024-05-28 - return42 <return42@users.noreply.translate.codeberg.org>
dd076ef55 - 2024-05-28 - return42 <return42@users.noreply.translate.codeberg.org>
3d1c529d7 - 2024-05-28 - ghose <ghose@users.noreply.translate.codeberg.org>
c48bd4b50 - 2024-05-26 - wintryexit <weatherdowner@proton.me>
f8cd9e63d - 2024-05-25 - unoyoa <unoyoa@users.noreply.translate.codeberg.org>
211935324 - 2024-05-25 - Linerly <Linerly@users.noreply.translate.codeberg.org>
e3cdb5196 - 2024-05-24 - return42 <return42@users.noreply.translate.codeberg.org>
bba8b66d1 - 2024-05-25 - return42 <return42@users.noreply.translate.codeberg.org>
538af5393 - 2024-05-24 - yannickmaes <yannickmaes@users.noreply.translate.codeberg.org>
e9c4b55ae - 2024-05-25 - return42 <return42@users.noreply.translate.codeberg.org>
ea54474ea - 2024-05-24 - lloydsmart <lloydsmart@users.noreply.translate.codeberg.org>
f870f76af - 2024-05-25 - MusfiquerRhman <MusfiquerRhman@users.noreply.translate.codeberg.org>
b4a320991 - 2024-05-24 - krlsk <krlsk@users.noreply.translate.codeberg.org>
2024-05-31 11:16:35 +02:00
Markus Heiser
5fc93b6c34 [fix] comment in settings.yml 'Calculator plugin' --> 'Basic Calculator'
Reported by @GitTimeraider in [1]

[1] https://github.com/searxng/searxng/discussions/3529#discussioncomment-9605018
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-30 14:34:25 +02:00
Allen
0fa81fc782 [enh] add re-usable func to filter text 2024-05-29 17:56:17 +02:00
Jeff Alyanak
0fb3f0e4ae [fix] do not show DDG IP from zero click
The zero click result from DuckDuckGo for IP should not be displayed.  It will
return the IP of the searxng server, not the user's IP, and looks a bit strange
when the `self_info` plugin is enabled as two different IPs get returned.
2024-05-29 11:23:26 +02:00
Markus Heiser
bb7c5bd44c [data] update searx.data - update_engine_traits.py
$ make data.traits

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-29 07:52:18 +02:00
Markus Heiser
a20dfbbcbd [fix] engine startpage: fetch_traits() / if lang name unknown by babel
Workflow "Update data - update_engine_traits.py" fails last night [1].
This issue has already been reported by @allendema [2].

[1] https://github.com/searxng/searxng/actions/runs/9278028691/job/25528337485#step:6:168
[2] https://github.com/searxng/searxng/pull/3504/files#r1613559565

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-29 07:52:18 +02:00
return42
8713aa6c4b [data] update searx.data - update_wikidata_units.py 2024-05-29 06:54:24 +02:00
return42
c16a143239 [data] update searx.data - update_currencies.py 2024-05-29 06:53:45 +02:00
return42
8a78d7b64d [data] update searx.data - update_firefox_version.py 2024-05-29 06:53:14 +02:00
return42
f2763e5efc [data] update searx.data - update_ahmia_blacklist.py 2024-05-29 06:52:39 +02:00
return42
8250773ace [data] update searx.data - update_engine_descriptions.py 2024-05-29 06:52:17 +02:00
Austin-Olacsi
9bb75a6644 [feat] engine: implementation of findthatmeme 2024-05-28 18:18:13 +02:00
dependabot[bot]
e992e888a0 [upd] pypi: Bump pylint from 3.1.0 to 3.2.2
Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.1.0 to 3.2.2.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.1.0...v3.2.2)

---
updated-dependencies:
- dependency-name: pylint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-28 18:10:04 +02:00
Markus Heiser
c19bffde4d [fix] issues reported by pylint-3.2.2
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-28 18:10:04 +02:00
dependabot[bot]
e03c7e4dcd [upd] pypi: Bump sphinx-notfound-page from 1.0.0 to 1.0.2
Bumps [sphinx-notfound-page](https://github.com/readthedocs/sphinx-notfound-page) from 1.0.0 to 1.0.2.
- [Changelog](https://github.com/readthedocs/sphinx-notfound-page/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/readthedocs/sphinx-notfound-page/compare/1.0.0...1.0.2)

---
updated-dependencies:
- dependency-name: sphinx-notfound-page
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-28 18:01:21 +02:00
Markus Heiser
056968cc39 [fix] unit converter operating backwards (from_si <-> to_si)
The factors for from_si and to_si were reversed.

Closes: https://github.com/searxng/searxng/issues/3497
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-28 11:58:13 +02:00
dependabot[bot]
99d6f51626 [upd] pypi: Bump lxml from 5.2.1 to 5.2.2
Bumps [lxml](https://github.com/lxml/lxml) from 5.2.1 to 5.2.2.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-5.2.1...lxml-5.2.2)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-28 11:57:45 +02:00
Daniel Kukula
87165ac532 [mod] engine hex: add sort_criteria & page_size to configuration 2024-05-28 11:55:59 +02:00
Alexandre Flament
75e4b65127 [fix] ResultContainer: use self._lock and self._closed for all properties
Close #3474
2024-05-24 15:38:03 +02:00
allendema_searxng_pi
68365c8c1d [enh] add instant answers from ddg 2024-05-24 10:44:17 +02:00
searxng-bot
6c74bc8908 [l10n] update translations from Weblate
775bb0f22 - 2024-05-23 - lolmeOzzi <lolmeOzzi@users.noreply.translate.codeberg.org>
ccf70529b - 2024-05-23 - cynedex <cynedex@users.noreply.translate.codeberg.org>
4a3b70d10 - 2024-05-23 - Obligate <Obligate@users.noreply.translate.codeberg.org>
4e3be8012 - 2024-05-22 - ecevinoth <ecevinoth@users.noreply.translate.codeberg.org>
5fcd0b233 - 2024-05-21 - SilentWord <SilentWord@users.noreply.translate.codeberg.org>
3b73c20da - 2024-05-21 - SilentWord <SilentWord@users.noreply.translate.codeberg.org>
a579173a1 - 2024-05-21 - bukutulis <bukutulis@users.noreply.translate.codeberg.org>
0b91ff3ad - 2024-05-20 - Kran21 <Kran21@users.noreply.translate.codeberg.org>
bc3096ae1 - 2024-05-17 - lcaopcn <lcaopcn@users.noreply.translate.codeberg.org>
2024-05-24 10:28:48 +02:00
dependabot[bot]
ec41b53587 [upd] pypi: Bump selenium from 4.20.0 to 4.21.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.20.0 to 4.21.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.20.0...selenium-4.21.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-17 16:52:09 +02:00
Daniel Kukula
a49232ee29 [feat] engine: implementation of cargo search (crates.io) 2024-05-17 16:37:39 +02:00
searxng-bot
3585d71f99 [l10n] update translations from Weblate
0712f8fb7 - 2024-05-16 - 0ko <0ko@users.noreply.translate.codeberg.org>
9a9d04302 - 2024-05-16 - eaglclaws <eaglclaws@users.noreply.translate.codeberg.org>
4c6da9e2a - 2024-05-16 - Utsushime <Utsushime@users.noreply.translate.codeberg.org>
e0b941276 - 2024-05-14 - dkuku <dkuku@users.noreply.translate.codeberg.org>
bee37a08a - 2024-05-14 - sacred-serpent <sacred-serpent@users.noreply.translate.codeberg.org>
d29eca2ba - 2024-05-14 - return42 <return42@users.noreply.translate.codeberg.org>
719ed9054 - 2024-05-14 - gallegonovato <gallegonovato@users.noreply.translate.codeberg.org>
b57b75920 - 2024-05-10 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
ecf4ce2dc - 2024-05-10 - Pyrbor <Pyrbor@users.noreply.translate.codeberg.org>
2024-05-17 09:16:38 +02:00
Markus Heiser
2f2d93b292 [build] /static 2024-05-16 07:30:38 +02:00
Markus Heiser
916739d6b4 [mod] simple theme: drop img_src from default results
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-05-16 07:30:38 +02:00
Bnyro
0f2f52f0b5 [fix] google: don't display that keyword is missing in content field 2024-05-15 16:03:35 +02:00
Markus Heiser
949a73103f [mod] hex engine: normalize (some of) the linked terms
The names of the links are rather tags than real names, and they sometimes vary
greatly in their spelling:

- GitHub: github, Github
- Source code: Repository, SCM, Project Source Code
- Documentation: docs, Documentation

It was standardized to terms such as 'Source code' and 'Documentation', as
translations already exist for these terms.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-15 12:50:35 +02:00
Daniel Kukula
cc8b537e34 [mod] package.html template: additional links (a python dict)
- Closes: https://github.com/searxng/searxng/issues/3456
2024-05-15 12:50:35 +02:00
Bnyro
645a840d82 [refactor] codeberg: use gitea engine 2024-05-15 07:23:57 +02:00
Bnyro
82b6c0d05f [feat] engine: implementation of gitea 2024-05-15 07:23:57 +02:00
Bnyro
60a373ad89 [fix] chefkoch: use German words in content field 2024-05-12 18:36:49 +02:00
Markus Heiser
ffb1001f80 [fix] engine wikidata - WIKIDATA_UNITS has been changed in #3378
This patch is a leftover from [1] in which the WIKIDATA_UNITS values has become
a dictionary.

[1] https://github.com/searxng/searxng/pull/3378

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-10 16:04:27 +02:00
Markus Heiser
901819359c [update] make pygments.less
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-10 10:00:31 +02:00
dependabot[bot]
4c63846c8d [upd] pypi: Bump pygments from 2.17.2 to 2.18.0
Bumps [pygments](https://github.com/pygments/pygments) from 2.17.2 to 2.18.0.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.17.2...2.18.0)

---
updated-dependencies:
- dependency-name: pygments
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-10 10:00:31 +02:00
dependabot[bot]
a615df8acc [upd] pypi: Bump nose2[coverage_plugin] from 0.14.1 to 0.14.2
Bumps [nose2[coverage_plugin]](https://github.com/nose-devs/nose2) from 0.14.1 to 0.14.2.
- [Changelog](https://github.com/nose-devs/nose2/blob/main/docs/changelog.rst)
- [Commits](https://github.com/nose-devs/nose2/compare/0.14.1...0.14.2)

---
updated-dependencies:
- dependency-name: nose2[coverage_plugin]
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-10 09:59:44 +02:00
dependabot[bot]
a8d5126c56 [upd] pypi: Bump babel from 2.14.0 to 2.15.0
Bumps [babel](https://github.com/python-babel/babel) from 2.14.0 to 2.15.0.
- [Release notes](https://github.com/python-babel/babel/releases)
- [Changelog](https://github.com/python-babel/babel/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-babel/babel/compare/v2.14.0...v2.15.0)

---
updated-dependencies:
- dependency-name: babel
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-10 09:58:12 +02:00
searxng-bot
4b6eebd312 [l10n] update translations from Weblate
9487de41b - 2024-05-10 - return42 <return42@users.noreply.translate.codeberg.org>
20d3b1158 - 2024-05-10 - nouoneq <nouoneq@users.noreply.translate.codeberg.org>
60cf6e36d - 2024-05-10 - return42 <return42@users.noreply.translate.codeberg.org>
0a8e99dff - 2024-05-10 - return42 <return42@users.noreply.translate.codeberg.org>
4055cd1c3 - 2024-05-10 - return42 <return42@users.noreply.translate.codeberg.org>
77f2c8d9a - 2024-05-09 - Eryk Michalak <gnu.ewm@protonmail.com>
beb16006a - 2024-05-09 - tentsbet <tentsbet@users.noreply.translate.codeberg.org>
54b5123e2 - 2024-05-10 - ghose <ghose@users.noreply.translate.codeberg.org>
4f372ab44 - 2024-05-09 - German <German@users.noreply.translate.codeberg.org>
fa9b9aae8 - 2024-05-09 - Fjuro <fjuro@alius.cz>
2024-05-10 09:29:22 +02:00
Bnyro
383d873597 [fix] unit converter plugin: can't be disabled in settings 2024-05-09 17:40:37 +02:00
Markus Heiser
fb32425d78 [mod] yacy engine: pick base_url randomly from a list of instances
Inspired by post [1] in the disscussion we had, while yacy.searchlab.eu was
broken.

[1] https://github.com/searxng/searxng/issues/3428#issuecomment-2101080101

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-09 17:29:15 +02:00
Bnyro
72be98e12f [feat] plugins: new calculator plugin 2024-05-09 17:23:38 +02:00
Markus Heiser
742303d030 [mod] improve unit converter plugin
- l10n support: parse and format decimal numbers by babel
- ability to add additional units
- improved unit detection (symbols are not unique)
- support for alias units (0,010C to F --> 32,018 °F)

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-09 17:16:31 +02:00
Markus Heiser
63cf80aae5 [fix] docutils dependencies (docutils>=0.21.2)
Another trip into the hell of dependencies: docutils tends to put major changes
in minor patches: the executables have been renamed / e.g.

     rst2html.py --> rts2html

so we have to use docutils at least from version 0.21.2, but this version of
docutils is only supported by myst-parser from version 3.0.1 on.

Additionally, docutils decided to drop python 3.8 in version 0.21 [1]

Further, linuxdoc needed an update to cope with docutils 0.21 [2]

[1] https://docutils.sourceforge.io/RELEASE-NOTES.html#release-0-21-2024-04-09
[2] https://github.com/return42/linuxdoc/pull/36

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-09 17:15:21 +02:00
dependabot[bot]
58320222e2 Bump jinja2 from 3.1.3 to 3.1.4
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.3...3.1.4)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-07 07:21:25 +02:00
Alexandre Flament
ac430a9eaf Drop pytomlpp dependency for Python >= 3.11
Rely on tomllib for Python >= 3.11
2024-05-05 17:35:29 +02:00
Markus Heiser
dbed8da284 [fix] startpage engine: XPath expressions adapted for new HTML layout
Startpage has changed its HTML layout, classes like ``w-gl__result__main`` do no
longer exists and the result items have been slightly changed in their
structure.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-04 19:45:52 +02:00
Yaksh Bariya
d577817646 [fix] respect user preferences to open links in new tab for short answers
Previously only result urls were set to open in new tab by default, this should
make the behaviour consistent.

Also adds the missing rel="noreferrer" to the anchor tag. Although this should
not be needed as long as the `referrer-policy: no-referrer` header is set, it's
always nice to play safer than to have to say sorry.  For example some reverse
proxy configurations might strip off unwhitelisted headers in which case it's
nice to have this set.
2024-05-04 06:55:37 +02:00
Bnyro
78077126f2 [feat] wikimedia commons: support for videos, audio and other files 2024-05-04 06:23:04 +02:00
Daniel Kukula
46d7a8289b [feat] engine: implementation of https://hex.pm
The package manager for the Erlang ecosystem Find packages.

Co-authored-by: Bnyro <82752168+Bnyro@users.noreply.github.com>
2024-05-03 21:37:37 +02:00
dependabot[bot]
04271e555b [upd] pypi: Bump pallets-sphinx-themes from 2.1.2 to 2.1.3
Bumps [pallets-sphinx-themes](https://github.com/pallets/pallets-sphinx-themes) from 2.1.2 to 2.1.3.
- [Release notes](https://github.com/pallets/pallets-sphinx-themes/releases)
- [Changelog](https://github.com/pallets/pallets-sphinx-themes/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/pallets-sphinx-themes/compare/2.1.2...2.1.3)

---
updated-dependencies:
- dependency-name: pallets-sphinx-themes
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-03 18:22:13 +02:00
searxng-bot
8225f88404 [l10n] update translations from Weblate
377c34a74 - 2024-05-02 - lspepinho <lspepinho@users.noreply.translate.codeberg.org>
079ba625b - 2024-05-01 - alexgabi <alexgabi@users.noreply.translate.codeberg.org>
fe48c8a08 - 2024-04-30 - return42 <return42@users.noreply.translate.codeberg.org>
e04560acc - 2024-04-30 - return42 <return42@users.noreply.translate.codeberg.org>
2fb6a2cfa - 2024-04-29 - Heyian <Heyian@users.noreply.translate.codeberg.org>
b374205cc - 2024-04-30 - return42 <return42@users.noreply.translate.codeberg.org>
d284cdd1d - 2024-04-29 - Fjuro <fjuro@alius.cz>
87edf2cb3 - 2024-04-27 - return42 <return42@users.noreply.translate.codeberg.org>
f6971a077 - 2024-04-27 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
f88e23f2c - 2024-04-27 - return42 <return42@users.noreply.translate.codeberg.org>
c7e8506c1 - 2024-04-28 - ghose <ghose@users.noreply.translate.codeberg.org>
795e14ddd - 2024-04-27 - return42 <return42@users.noreply.translate.codeberg.org>
143bc6cf0 - 2024-04-27 - Implosion <Implosion@users.noreply.translate.codeberg.org>
5d96b3d53 - 2024-04-27 - return42 <return42@users.noreply.translate.codeberg.org>
b2cc8a6cd - 2024-04-27 - return42 <return42@users.noreply.translate.codeberg.org>
2024-05-03 09:15:13 +02:00
Markus Heiser
11fe88bb40 [fix] update wikidata units - remove URL prefix from Q-name
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-05-01 18:58:28 +02:00
Austin-Olacsi
c8d0b6529b [feat] engine: implementation of searchmysite 2024-04-30 05:47:18 +02:00
Markus Heiser
f8bdf61976 [fix] yep engine: invcrease timeout from defaul 3sec to 5sec
In the "Engines" tab on searx.space [1] nearly all engines report a

    TimeoutException: yep engine

As documented in issue #2444 [2], this problem can be fixed by increasing the
timeout. Note: on a local instance (`make run`) the timeout of 3sec was
sufficient / at least in my local test, but the balance of searx.space leads me
to believe that this tight timeout is usually not sufficient.

[1] https://searx.space/
[2] https://github.com/searxng/searxng/issues/2444

Closes https://github.com/searxng/searxng/issues/3421
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-30 05:46:15 +02:00
return42
e45a7cc063 [data] update searx.data - update_engine_traits.py 2024-04-29 10:02:48 +02:00
return42
c0b6c26eea [data] update searx.data - update_firefox_version.py 2024-04-29 10:02:16 +02:00
return42
0ec406cb7e [data] update searx.data - update_ahmia_blacklist.py 2024-04-29 10:01:52 +02:00
return42
ea585d4e77 [data] update searx.data - update_currencies.py 2024-04-29 09:48:56 +02:00
return42
d4e98c03a0 [data] update searx.data - update_engine_descriptions.py 2024-04-29 09:46:26 +02:00
Markus Heiser
e6c345f890 [fix] ccc_media engine: filter video formats and ignore audio & SubRip
CCC media serves several recording formats, to name a few:

- application/x-subrip
- video/mp4
- video/webm
- audio/mpeg
- audio/opus
- audio/mpeg

not all of them are suitable for a video frame.  If available we should prefer
video/mp4 due to its minimal data rates.

Closes: https://github.com/searxng/searxng/issues/3431
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-28 08:42:18 +02:00
Jinyuan Huang
ecee56533c improve "search existing issues from github" link 2024-04-27 20:01:27 +02:00
Markus Heiser
11fdc2f56a [fix] drop broken azlyrics XPath engine
Unfortunately, azlyrics has a bot blocker that makes it impossible to implement
an XPath engine for it [1][2].

[1] https://github.com/searxng/searxng/pull/3302#issuecomment-2013529271
[2] https://github.com/searxng/searxng/issues/3280

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-27 18:43:14 +02:00
Markus Heiser
648f43be1d [build] /static 2024-04-27 18:26:23 +02:00
Bnyro
3ea278aff4 [feat] preferences: button to enable/disable all engines 2024-04-27 18:26:23 +02:00
Bnyro
46efb2f36d [feat] plugins: new unit converter plugin 2024-04-27 18:11:33 +02:00
Bnyro
b3b1258e4e [data] wikidata: update wikidata_units.json 2024-04-27 18:11:33 +02:00
dependabot[bot]
1e1fb59bea [upd] pypi: Bump sphinx from 7.2.6 to 7.3.7
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.2.6 to 7.3.7.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.2.6...v7.3.7)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-27 10:05:51 +02:00
Markus Heiser
d593055888 [fix] ionic.io/ionicons - add back missing class="ionicon"
Seems to me svg2jinja added the class in the past .. but no longer in new builds
/ this patch adds the class back by using addAttributesToSVGElement [1].

To test this patch use:

    $ ./manage themes.simple
    $ cat searx/templates/simple/icons.html

and check `class="ionicon"` is in the outer `<svg ..>` tags.

[1] https://svgo.dev/docs/plugins/add-attributes-to-svg-elements/
[2] https://ionic.io/ionicons

Closes: https://github.com/searxng/searxng/issues/3383
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-27 09:33:20 +02:00
Bnyro
42b58eb448 [feat] media.ccc.de: implement module with pagination and iframe 2024-04-27 08:55:26 +02:00
dependabot[bot]
a56b4a1648 [upd] pypi: Bump pallets-sphinx-themes from 2.1.1 to 2.1.2
Bumps [pallets-sphinx-themes](https://github.com/pallets/pallets-sphinx-themes) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/pallets/pallets-sphinx-themes/releases)
- [Changelog](https://github.com/pallets/pallets-sphinx-themes/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/pallets-sphinx-themes/compare/2.1.1...2.1.2)

---
updated-dependencies:
- dependency-name: pallets-sphinx-themes
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-27 08:30:17 +02:00
dependabot[bot]
4719c004ea [upd] pypi: Bump redis from 5.0.3 to 5.0.4
Bumps [redis](https://github.com/redis/redis-py) from 5.0.3 to 5.0.4.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v5.0.3...v5.0.4)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-27 08:24:23 +02:00
Ivan G
0e09014df5 Add uWSGI die-on-term flag (#3429) 2024-04-26 23:42:29 +02:00
searxng-bot
41f415aabf [l10n] update translations from Weblate
f4861e2c3 - 2024-04-26 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
2024-04-26 09:14:03 +02:00
dependabot[bot]
0081870305 [upd] pypi: Bump selenium from 4.19.0 to 4.20.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.19.0 to 4.20.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.19.0...selenium-4.20.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-26 09:10:46 +02:00
Markus Heiser
ddaa6ed759 [fix] add missing localizable (gettext) messages to searxng.msg
To test this patch I used .. and checked the diff of the `messages.pot` file::

    $ ./manage pyenv.cmd pybabel extract -F babel.cfg \
              -o ./searx/translations/messages.pot searx/
    $ git diff ./searx/translations/messages.pot

----

hint from @dalf: f-string are not supported [1] but there is no error [2].

[1] python-babel/babel#594
[2] python-babel/babel#715

Closes: https://github.com/searxng/searxng/issues/3412
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-26 07:34:32 +02:00
Bnyro
0a4280a137 [refactor] translation engines: add translate category
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-26 07:33:28 +02:00
Bnyro
91522f3801 [feat] engine: implementation of LibreTranslate
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-26 07:33:28 +02:00
Grant Lanham Jr
e0214412f8 Update .gitignore to ignore .python-version 2024-04-24 16:01:50 +02:00
searxng-bot
af3be2b12b [l10n] update translations from Weblate
b58f11366 - 2024-04-17 - Right202209 <Right202209@users.noreply.translate.codeberg.org>
43b601950 - 2024-04-17 - return42 <return42@users.noreply.translate.codeberg.org>
5cac16eaf - 2024-04-17 - return42 <return42@users.noreply.translate.codeberg.org>
88b5396d5 - 2024-04-17 - return42 <return42@users.noreply.translate.codeberg.org>
515161ddc - 2024-04-17 - return42 <return42@users.noreply.translate.codeberg.org>
7f8e70b10 - 2024-04-17 - return42 <return42@users.noreply.translate.codeberg.org>
247777e50 - 2024-04-10 - Right202209 <Right202209@users.noreply.translate.codeberg.org>
1b0c91d0f - 2024-04-07 - shadow3x3x3 <shadow3x3x3@users.noreply.translate.codeberg.org>
f7f160fd0 - 2024-04-06 - vducong <vducong@users.noreply.translate.codeberg.org>
62cc9ce67 - 2024-04-06 - mrintegrity <mrintegrity@users.noreply.translate.codeberg.org>
131bec469 - 2024-04-06 - omfj <omfj@users.noreply.translate.codeberg.org>
bceb0dbec - 2024-04-06 - Uzakmo <Uzakmo@users.noreply.translate.codeberg.org>
51330ae18 - 2024-04-05 - tegcope <tegcope@users.noreply.translate.codeberg.org>
79a2eb668 - 2024-04-05 - sserra <sserra@users.noreply.translate.codeberg.org>
b3c2827e5 - 2024-04-05 - sserra <sserra@users.noreply.translate.codeberg.org>
ba46f8672 - 2024-04-03 - meskobalazs <meskobalazs@users.noreply.translate.codeberg.org>
b58a3eff1 - 2024-04-04 - return42 <return42@users.noreply.translate.codeberg.org>
3a9c022ea - 2024-04-03 - meskobalazs <meskobalazs@users.noreply.translate.codeberg.org>
424ea8188 - 2024-04-03 - Kita Ikuyo <searinminecraft@courvix.com>
2024-04-21 11:16:40 +02:00
Bnyro
644ae51417 [fix] yahoo: result titles are getting mixed together 2024-04-20 17:00:17 +02:00
dependabot[bot]
0f70e4d305 [upd] pypi: Bump sphinx-issues from 4.0.0 to 4.1.0
Bumps [sphinx-issues](https://github.com/sloria/sphinx-issues) from 4.0.0 to 4.1.0.
- [Commits](https://github.com/sloria/sphinx-issues/compare/4.0.0...4.1.0)

---
updated-dependencies:
- dependency-name: sphinx-issues
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-19 10:43:53 +02:00
mrpaulblack
5e4ab964b7 [feat] template: add apple-touch-icon in html header
* this makes it possible to add SearXNG to iOS devices homescreen with a proper icon
2024-04-18 12:34:17 +02:00
singletail
1746eecf2b [fix] engine: youtube_api - ignore channels / prevent exceptions
`youtube_api.py` throws an exception if the search results contain a channel, as
channels have no videoId.  This PR adds a keycheck for parsing the json response.
2024-04-13 08:41:00 +02:00
Austin-Olacsi
c92846dca8 [fix] dead URL in settings.yml 2024-04-13 07:03:45 +02:00
dependabot[bot]
c8dca20548 [upd] npm: Bump eslint in /searx/static/themes/simple
Bumps [eslint](https://github.com/eslint/eslint) from 8.57.0 to 9.0.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.57.0...v9.0.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-12 18:11:42 +02:00
dependabot[bot]
9631e213fe [upd] pypi: Bump flask from 3.0.2 to 3.0.3
Bumps [flask](https://github.com/pallets/flask) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: flask
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-12 17:32:40 +02:00
dependabot[bot]
bbd2a4350a [upd] pypi: Bump lxml from 5.1.0 to 5.2.1
Bumps [lxml](https://github.com/lxml/lxml) from 5.1.0 to 5.2.1.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-5.1.0...lxml-5.2.1)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-12 17:31:38 +02:00
Diagonalo
6458490271 [mod] engine 'mwmbl: Update API URL 2024-04-10 06:51:28 +02:00
Markus Heiser
f1a148f53e [fix] ddg engine: if no vqd value can be determined, don't save None
Closes: https://github.com/searxng/searxng/issues/3370
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-08 10:56:11 +02:00
Markus Heiser
bd6ff29f8f [fix] remove usage of no longer existing names from lxml
In lxml 5.1.1 the private name `_ElementStringResult` in module `lxml.etree`
does no longer exists.

This code was written nearly a decade ago, its no longer clear what the
intention `_ElementStringResult` and `_ElementUnicodeResult` had been. It can be
assumed that these classes will no longer occur.

Closes: https://github.com/searxng/searxng/issues/3368
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-08 10:55:23 +02:00
Markus Heiser
26a92c1a8d [fix] new builds of icons.html do miss class="ionicon"
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-08 09:38:18 +02:00
Markus Heiser
dddd628f48 [build] /static 2024-04-08 09:07:45 +02:00
Yaksh Bariya
9f5268b4a7 [enh] add keybindings for copying URLs
'y': for in Vim-mode (yank)
'c': for SearXNG-mode (copy)

This should help keyboard heavy users
2024-04-08 09:07:45 +02:00
Yaksh Bariya
8bf2da9ce5 [enh] add editorconfig rules for javascript files
SearXNG has a bunch of javascript files which have an indentation of
two, but the '*' rule tells my editor to use 4 spaces.
2024-04-08 09:07:45 +02:00
Markus Heiser
4acb52f68f [fix] even if limiter not activated, botdetection must be activated
Closes: #2975
Closes: #2995

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-08 07:53:04 +02:00
Austin-Olacsi
b6fe2cad71 [mod] Ask engine: remove tracking paramaters and set max page to 5 2024-04-08 07:50:14 +02:00
Bnyro
bf3845b093 [feat] engine: implementation of Open Meteo 2024-04-07 19:02:53 +02:00
Markus Heiser
f5bb64cca8 [fix] .dir-locals.el -> .dir-locals-template.el
The settungs in the .dir-locals.el do not work well for every emacs setup:

Add .dir-locals.el to the git-ignore list and move content to a template file.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-29 08:57:02 +01:00
return42
ad9537065a [data] update searx.data - update_firefox_version.py 2024-03-29 08:44:18 +01:00
return42
531942ed16 [data] update searx.data - update_ahmia_blacklist.py 2024-03-29 08:43:50 +01:00
dependabot[bot]
e8ee27e43c [upd] pypi: Bump selenium from 4.18.1 to 4.19.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.18.1 to 4.19.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.18.1...selenium-4.19.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-29 08:43:24 +01:00
return42
433cfd868a [data] update searx.data - update_currencies.py 2024-03-29 08:42:16 +01:00
return42
22d68aa2a7 [data] update searx.data - update_engine_traits.py 2024-03-29 08:41:44 +01:00
return42
cc124b8f14 [data] update searx.data - update_engine_descriptions.py 2024-03-29 08:41:00 +01:00
searxng-bot
550ca55778 [l10n] update translations from Weblate
cd974f62f - 2024-03-27 - matheuspolachini <matheuspolachini@users.noreply.translate.codeberg.org>
98335c289 - 2024-03-27 - pixrobot <pixrobot@users.noreply.translate.codeberg.org>
986969118 - 2024-03-25 - pixrobot <pixrobot@users.noreply.translate.codeberg.org>
285674006 - 2024-03-24 - Yahya-Lando <Yahya-Lando@users.noreply.translate.codeberg.org>
2024-03-29 08:23:44 +01:00
Mikkel Denker
b21aaa8907 Add user-agent to stract requests 2024-03-22 13:40:46 +01:00
searxng-bot
32bd55e268 [l10n] update translations from Weblate
522463f6a - 2024-03-21 - return42 <return42@users.noreply.translate.codeberg.org>
8ec374759 - 2024-03-21 - return42 <return42@users.noreply.translate.codeberg.org>
ac6b5dff0 - 2024-03-21 - return42 <return42@users.noreply.translate.codeberg.org>
66b28f3e4 - 2024-03-21 - return42 <return42@users.noreply.translate.codeberg.org>
a8e6cb73b - 2024-03-21 - return42 <return42@users.noreply.translate.codeberg.org>
cd153923a - 2024-03-21 - return42 <return42@users.noreply.translate.codeberg.org>
06110caf7 - 2024-03-21 - return42 <return42@users.noreply.translate.codeberg.org>
6bc307e8a - 2024-03-21 - return42 <return42@users.noreply.translate.codeberg.org>
eef184a70 - 2024-03-21 - return42 <return42@users.noreply.translate.codeberg.org>
e5d537357 - 2024-03-21 - return42 <return42@users.noreply.translate.codeberg.org>
d592adfb0 - 2024-03-21 - return42 <return42@users.noreply.translate.codeberg.org>
0645b3404 - 2024-03-21 - return42 <return42@users.noreply.translate.codeberg.org>
da95a5907 - 2024-03-18 - jianhanquwan <jianhanquwan@users.noreply.translate.codeberg.org>
122a67a1f - 2024-03-17 - Oğuz Ersen <ersen@users.noreply.translate.codeberg.org>
39a7e1553 - 2024-03-15 - MonsoonRain <MonsoonRain@users.noreply.translate.codeberg.org>
2024-03-22 08:15:19 +01:00
dependabot[bot]
bec34cf690 Bump black from 24.2.0 to 24.3.0
Bumps [black](https://github.com/psf/black) from 24.2.0 to 24.3.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/24.2.0...24.3.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-21 07:37:23 +01:00
dependabot[bot]
e2af3e4970 [upd] pypi: Bump redis from 5.0.2 to 5.0.3
Bumps [redis](https://github.com/redis/redis-py) from 5.0.2 to 5.0.3.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v5.0.2...v5.0.3)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-15 09:59:21 +01:00
searxng-bot
f78cf94507 [l10n] update translations from Weblate
5ab8a4123 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
8fdac20fd - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
f904a2b41 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
da78b59cb - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
c3ee00845 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
a1a4001e9 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
b8ddc37d9 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
257c6e52b - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
de6899977 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
06f9a81ee - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
0b916dcc0 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
2f78ef012 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
098a44813 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
1bcbfb4b9 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
1c561b9ca - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
44ab09c8b - 2024-03-12 - GeoffreyGx <GeoffreyGx@users.noreply.translate.codeberg.org>
5b767a16c - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
8dec572be - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
28e8c648d - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
77ce67845 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
1d044f989 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
a10834f13 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
eaa1cdd6e - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
b49e3879a - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
f55b61fb7 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
4954e6e49 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
33b08dc66 - 2024-03-12 - return42 <return42@users.noreply.translate.codeberg.org>
58df517d4 - 2024-03-11 - GeoffreyGx <GeoffreyGx@users.noreply.translate.codeberg.org>
cee7ec3f0 - 2024-03-10 - alexgabi <alexgabi@disroot.org>
2024-03-15 09:49:09 +01:00
Markus Heiser
74f6dfb576 [fix] .pylintrc mode signature to conf-unix
In pylint and python's config parser [1] the default symbol for comments is '#'.
The dialect is based on unix, while the classic dialect comes from windows and
uses a semicolon for comments.

[1] https://docs.python.org/3/library/configparser.html#module-configparser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-14 14:18:26 +01:00
Markus Heiser
542f7d0d7b [mod] pylint all files with one profile / drop PYLINT_SEARXNG_DISABLE_OPTION
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 14:55:38 +01:00
Markus Heiser
8205f170ff [mod] pylint all engines without PYLINT_SEARXNG_DISABLE_OPTION
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-11 14:55:38 +01:00
Markus Heiser
707d6270c8 [doc] engine: mullvad leta
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-10 18:20:07 +01:00
Grant Lanham
9d6896a771 [feat] engine: implementation of mullvad leta 2024-03-10 18:20:07 +01:00
Markus Heiser
3edaa26dae [data] make data.all
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-10 15:56:50 +01:00
Markus Heiser
ce4aaf6cad [mod] comprehensive revision of the searxng_extra/update/ scripts
- 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 15:56:50 +01:00
Markus Heiser
0ffec440b2 [doc] annas_archive: ctegs journal_article & book_any has been removed
In commit 8af181533 in PR:

- https://github.com/searxng/searxng/pull/3321

the category `journal_article` has been removed, `book_any` has been removed
longer time ago.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-10 12:46:00 +01:00
return42
33b4ffee29 [data] update searx.data - update_engine_traits.py 2024-03-10 12:46:00 +01:00
return42
a5d36211a3 [data] update searx.data - update_ahmia_blacklist.py 2024-03-10 12:45:15 +01:00
return42
2cb389e9ce [data] update searx.data - update_currencies.py 2024-03-10 12:44:44 +01:00
return42
4a8867e646 [data] update searx.data - update_engine_descriptions.py 2024-03-10 12:01:33 +01:00
return42
7bbcf1be9a [data] update searx.data - update_external_bangs.py 2024-03-10 12:01:00 +01:00
Markus Heiser
cff0097289 [fix] update_external_bangs: BANGS_URL 'https://duckduckgo.com/bang.js'
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-10 11:58:20 +01:00
Markus Heiser
e97e1f9110 [fix] duckduckgo.fetch_traist - URL of region definitions has changed
- https://duckduckgo.com/dist/util/u.7669f071a13a7daa57cb.js

updated from u661.js to u.7669f071a13a7daa57cb / should be updated
automatically?  The last change was on March 23rd in dba8977b09 [1]

- [1] https://github.com/searxng/searxng/pull/2269

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-10 10:32:54 +01:00
Markus Heiser
33c099022b [drop] engine framalibre - sarch URL is no longer supported
Closes: https://github.com/searxng/searxng/issues/3286
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-09 18:00:45 +01:00
Markus Heiser
691390b443 [fix] CI YAML config files
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-09 14:56:12 +01:00
Markus Heiser
a48da9b28a [fix] CI YAML config files
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-09 14:08:00 +01:00
Markus Heiser
18028f3c13 [mod] CI: tag commits with leading scope/type of the modification
Add a leading tag (in square brackets) about the scope/type to commit messages
from automated tasks (commits from CI).

dependantbot::

    [upd] pypi: Bump .. from .. to ..
    [upd] npm: Bump .. from .. to .. in /searx/static/themes/simple

Weblate translation updates::

    [l10n] update translations from Weblate

updates of ./data::

    [data] update searx.data ...

build commit of gh-pages::

    [doc] build from commit ...

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-09 12:17:23 +01:00
Alexandre Flament
42515d98f7 engine npm use the packages.html template 2024-03-09 10:24:49 +01:00
Bnyro
6dd07b88a4 [feat] lib.rs: use packages.html template 2024-03-09 10:17:16 +01:00
Markus Heiser
50d5a9ff60 [fix] issues reported by pylint 3.1.0
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-09 09:28:13 +01:00
dependabot[bot]
3bea2e7e3a Bump pylint from 3.0.3 to 3.1.0
Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.0.3 to 3.1.0.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.0.3...v3.1.0)

---
updated-dependencies:
- dependency-name: pylint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-09 09:28:13 +01:00
Markus Heiser
a7b51f023e [black] upgrade black 22.12.0 --> 24.2.0
The issue discussed in [1] has been solved since [2] has been merged into black
/ now we can upgrade without touching 69 files as it was needed with black
23.1.0 [3].

[1] https://github.com/searxng/searxng/pull/2159#issuecomment-1425723977
[2] https://github.com/psf/black/pull/4060
[3] https://github.com/searxng/searxng/pull/2159/files

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-09 08:15:50 +01:00
dependabot[bot]
48d04871a4 Bump python-dateutil from 2.8.2 to 2.9.0.post0
Bumps [python-dateutil](https://github.com/dateutil/dateutil) from 2.8.2 to 2.9.0.post0.
- [Release notes](https://github.com/dateutil/dateutil/releases)
- [Changelog](https://github.com/dateutil/dateutil/blob/master/NEWS)
- [Commits](https://github.com/dateutil/dateutil/compare/2.8.2...2.9.0.post0)

---
updated-dependencies:
- dependency-name: python-dateutil
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-08 18:46:18 +01:00
Bnyro
44decaa524 [feat] pkg.go.dev: use packages.html template 2024-03-08 17:18:54 +01:00
centralscrutinizer21
fbea0dd3ce [l10n] Italian translation of infopages 2024-03-08 17:18:29 +01:00
searxng-bot
9c08a0cddd [translations] update from Weblate
184c000d8 - 2024-03-07 - 0ko <0ko@users.noreply.translate.codeberg.org>
7a107e46c - 2024-03-04 - Bubowny <outcheesed@proton.me>
f02911c4b - 2024-03-04 - tentsbet <remendne@pentrens.jp>
e4e8977cc - 2024-03-02 - marcelStangenberger <codeberg@xo.nl>
4a9923cee - 2024-03-02 - Integral <integral@member.fsf.org>
05e7bb2f8 - 2024-03-01 - return42 <markus.heiser@darmarit.de>
4b466efdc - 2024-03-01 - syobon <syobon@syobon.net>
2024-03-08 08:21:21 +01:00
Markus Heiser
fba8371396 [fix] XPath engine hoogle - hoogle.haskell.org has no paging support
Search on hoogle.haskell.org does no longer have pages.

Closes: https://github.com/searxng/searxng/issues/3278
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-07 17:31:25 +01:00
Markus Heiser
a5b81e2555 [fix] nyaa engine - paging support & filesize (GiB)
BTW: pylint engine

Closes: https://github.com/searxng/searxng/issues/3290
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-07 07:38:31 +01:00
Markus Heiser
3179993847 [fix] XPath engine lobste.rs - argument utf8 is no longer needed
Closes: https://github.com/searxng/searxng/issues/3279
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-06 13:24:50 +01:00
Markus Heiser
3529f0af50 [fix] engine searchcode.com - paging is broken in searchcode.com's API
paging is broken in searchcode.com's API .. not sure it will ever been fixed /
this commit disables paging in the engine and BTW pylint `searchcode_code.py`.

Closes: https://github.com/searxng/searxng/issues/3287
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-06 12:33:29 +01:00
Markus Heiser
76b18545e4 [fix] XPath engine naver - content selector needed an update
Closes: https://github.com/searxng/searxng/issues/3282
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-06 11:11:31 +01:00
Markus Heiser
5602f0bf96 [fix] engine pinterest - ignore result type 'story'
Close: https://github.com/searxng/searxng/issues/3289
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-06 07:33:43 +01:00
Markus Heiser
d97b84bea2 [fix] ddg engines (get_vqd) - the vqd value is no longer in the form
Closes: https://github.com/searxng/searxng/issues/3276
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-05 16:27:04 +01:00
Alexandre Flament
b7be53bb90 Docker: use Alpine 3.19 2024-03-04 19:40:57 +01:00
Alexandre Flament
0e2566db68 internetarchivescholar engine: set timeout to 15 seconds 2024-03-03 20:16:32 +01:00
Alexandre Flament
7c5c11949b Checker: tests for wikispecies 2024-03-03 20:00:46 +01:00
Alexandre Flament
8fed5798ab Checker: tests for bahnhof 2024-03-03 20:00:46 +01:00
Yaksh Bariya
b1431e1670 [feat] engine: implementation of cppreference 2024-03-03 17:07:29 +01:00
Alexandre Flament
1a66bfa66c checker: display results at the end 2024-03-03 11:18:43 +01:00
Alexandre Flament
08e7c37a35 GitHub workflows: run checker on Friday 2024-03-03 11:18:43 +01:00
Alexandre Flament
b56449d3fa Fix make search.checker 2024-03-03 11:18:43 +01:00
Alexandre Flament
38fdd2288a Drop typing-extensions dependency (#3265)
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-03-02 13:10:31 +01:00
searxng-bot
1892a87fd2 [translations] update from Weblate
663d8815b - 2024-03-01 - return42 <markus.heiser@darmarit.de>
f97823239 - 2024-02-28 - return42 <markus.heiser@darmarit.de>
480a0ec8d - 2024-02-28 - eownerdead <wlpx0yii@anonaddy.me>
905211981 - 2024-02-26 - gallegonovato <fran-carro@hotmail.es>
10e90be9a - 2024-02-25 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
3b803ba23 - 2024-02-26 - feather1 <verdimario2015@gmail.com>
8bbaaa43e - 2024-02-25 - return42 <markus.heiser@darmarit.de>
6950cdb97 - 2024-02-26 - Linerly <linerly@protonmail.com>
807c9891d - 2024-02-26 - ghose <correo@xmgz.eu>
e16ca50cd - 2024-02-25 - return42 <markus.heiser@darmarit.de>
85241d9ce - 2024-02-25 - Fjuro <ifjuro@proton.me>
2024-03-02 09:37:52 +01:00
dependabot[bot]
858b2071df Bump redis from 5.0.1 to 5.0.2
Bumps [redis](https://github.com/redis/redis-py) from 5.0.1 to 5.0.2.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v5.0.1...v5.0.2)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-01 08:13:44 +01:00
dependabot[bot]
dd2379b96f Bump wlc from 1.13 to 1.14
Bumps [wlc](https://github.com/WeblateOrg/wlc) from 1.13 to 1.14.
- [Changelog](https://github.com/WeblateOrg/wlc/blob/main/CHANGES.rst)
- [Commits](https://github.com/WeblateOrg/wlc/compare/1.13...1.14)

---
updated-dependencies:
- dependency-name: wlc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-01 08:11:51 +01:00
Bnyro
f3b4bf86a7 [feat] engine: implementation of void linux packages
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-29 13:12:40 +01:00
Alexandre Flament
d58760ef75 [mod] pypi engine: use packages.html 2024-02-29 07:48:44 +01:00
dalf
35873b5a1c Update searx.data - update_ahmia_blacklist.py 2024-02-29 07:47:54 +01:00
dalf
df74b5b59b Update searx.data - update_firefox_version.py 2024-02-29 07:47:01 +01:00
dalf
473b2dd42f Update searx.data - update_wikidata_units.py 2024-02-29 07:46:27 +01:00
dalf
9a474715e8 Update searx.data - update_engine_descriptions.py 2024-02-29 07:46:02 +01:00
Markus Heiser
c0b97c6543 [fix] re-add opensearch_url / its used in based.html
The URL was accidentally deleted in a85907a98, but is still required in
base.html for auto-discovery / from base.html::

  <link title="{{ instance_name }}"
        type="application/opensearchdescription+xml"
	rel="search" href="{{ opensearch_url }}"
	/>

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-25 18:26:16 +01:00
templehasfallen
e8bd6c03bf Update settings.yml
Changed value of "extra_proxy_timeout" from 10.0 to 10 as the variable expects an int.
Uncommenting this value with a non-int value will throw many errors and crash all engines.
2024-02-25 16:35:13 +01:00
Austin-Olacsi
9330a072eb [feat] engine: implementation of pixiv 2024-02-25 16:29:57 +01:00
Bnyro
cf57914359 [build] /static 2024-02-25 16:22:37 +01:00
Bnyro
db1f9b31c9 [feat] images: show resolution inside the image and fix image details overflow
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-25 16:22:37 +01:00
Bnyro
e76ab1a4b3 [refactor] images: add resolution, image format and filesize fields
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-25 16:22:37 +01:00
Markus Heiser
b683aa63fb [feat] github: use packages template
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-25 14:56:57 +01:00
Bnyro
1d6f475fbc [feat] dockerhub: use packages template 2024-02-25 14:56:57 +01:00
Bnyro
60d8414ef1 [docs] engine_overview: add packages result template 2024-02-25 14:56:57 +01:00
Markus Heiser
34fa2b7cca [build] /static 2024-02-25 14:56:57 +01:00
Bnyro
938391b050 [feat] templates: add package result template
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-25 14:56:57 +01:00
Markus Heiser
a85907a98f [fix] opensearxh.xml: firefox v123 does not except self-URI (URL with param)
Before this patch we had a address in the rel-self-template with params [1]:

GET::

    <Url method="GET"
         rel="self"
         template="/opensearch.xml?method=GET&amp;autocomplete=google"
         type="application/opensearchdescription+xml"/>

POST::

    <Url method="POST"
         rel="self"
         template="/opensearch.xml?method=POST&amp;autocomplete=google"
         type="application/opensearchdescription+xml"/>

The first one (GET) is no longer accepted by firefox since v123, the latter one
was always been wrong (since it mixes GET params with a POST request).

Since Firefox v123 a template syntax [2] in the rel-self-template is no longer
supported / Firefox will report an error::

    Firefox could not download the search plugin from:
    http://127.0.0.1:8888//opensearch.xml?method=GET&autocomplete=google

This patch reduce the URL to::

    template="http://127.0.0.1:8888/opensearch.xml"

[1] https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#url-rel-values
[2] https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#opensearch-url-template-syntax

Closes: https://github.com/searxng/searxng/issues/3227
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-25 07:33:04 +01:00
Markus Heiser
d72fa99bd0 [fix] setup.py - needed bugfixes to build a valid package
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-24 07:22:26 +01:00
dependabot[bot]
c7309a0869 Bump selenium from 4.17.2 to 4.18.1
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.17.2 to 4.18.1.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits/selenium-4.18.1)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-23 08:55:09 +01:00
dependabot[bot]
8a11e6ac55 Bump yamllint from 1.35.0 to 1.35.1
Bumps [yamllint](https://github.com/adrienverge/yamllint) from 1.35.0 to 1.35.1.
- [Changelog](https://github.com/adrienverge/yamllint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/adrienverge/yamllint/compare/v1.35.0...v1.35.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-23 08:35:41 +01:00
searxng-bot
671333081c [translations] update from Weblate
946267db3 - 2024-02-23 - return42 <markus.heiser@darmarit.de>
2024-02-23 08:14:58 +01:00
Bnyro
cfbe59b6b3 [feat] engine: implementation of mozhi 2024-02-23 07:50:48 +01:00
Xinos
3c42252c78 [feat] engine: implementation of yandex music
Access to music is limited to a few countries:

- https://yandex.com/support/music/access.html
2024-02-21 17:17:12 +01:00
KalokaK
fb36a06acd [fix] utils/searxng.sh uses searx.shared module which no longer exists
Issue exists since #1954 has been merged / the PR fixed all searx.shared except
this one fixed here in this commit.

Related: https://github.com/searxng/searxng/pull/1954
Closes: https://github.com/searxng/searxng/issues/3224
2024-02-20 15:18:40 +01:00
micsthepick
fde21c8f99 [feat] engine: Add LiveSpace livestreams 2024-02-20 14:45:07 +01:00
searxng-bot
3b80f9fe03 [translations] update from Weblate
df7653397 - 2024-02-19 - return42 <markus.heiser@darmarit.de>
c62c03816 - 2024-02-19 - return42 <markus.heiser@darmarit.de>
a48235060 - 2024-02-18 - tentsbet <remendne@pentrens.jp>
445545961 - 2024-02-19 - return42 <markus.heiser@darmarit.de>
275a77e51 - 2024-02-16 - hankskyjames777 <iamjuanz30312@gmail.com>
0772d9b4c - 2024-02-16 - Fjuro <ifjuro@proton.me>
2024-02-20 12:33:32 +01:00
Markus Heiser
894f164869 [fix] sort RTL_LOCALES before written into locales.json
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 12:29:13 +01:00
Alexandre Flament
ed66ed758d [mod] reduce memory footprint by not calling babel.Locale.parse at runtime
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-02-20 10:43:20 +01:00
Markus Heiser
76845ea42c [mod] engine ask.com - parse JS result to JSON
Parse the result list from ask.com given in the variable named
window.MESON.initialState::

    <script nonce="..">
        window.MESON = window.MESON || {};
        window.MESON.initialState = {"siteConfig": ...
          ...}};
        window.MESON.loadedLang = "en";
    </script>

The result list is in field::

    json_resp['search']['webResults']['results']

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-18 09:17:22 +01:00
Hackurei
3df53d6e50 [feat] engine: implementation of ask.com 2024-02-18 09:17:22 +01:00
Markus Heiser
c197c0e35e [fix] remove twine from requirements-dev
SearXNG is a rolling release / we do not deploy packages on PyPi

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-16 18:29:40 +01:00
dependabot[bot]
08e524fc35 Bump yamllint from 1.34.0 to 1.35.0
Bumps [yamllint](https://github.com/adrienverge/yamllint) from 1.34.0 to 1.35.0.
- [Changelog](https://github.com/adrienverge/yamllint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/adrienverge/yamllint/compare/v1.34.0...v1.35.0)

---
updated-dependencies:
- dependency-name: yamllint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-16 15:48:28 +01:00
searxng-bot
2aef3a556f [translations] update from Weblate
be989636e - 2024-02-14 - return42 <markus.heiser@darmarit.de>
0e3455cb8 - 2024-02-13 - return42 <markus.heiser@darmarit.de>
edc279680 - 2024-02-14 - pietro395 <me@pietro.in>
e0d3b7f9f - 2024-02-14 - kratos <makesocialfoss32@keemail.me>
f68fc5440 - 2024-02-13 - gallegonovato <fran-carro@hotmail.es>
980f3846c - 2024-02-12 - tentsbet <remendne@pentrens.jp>
711618f3a - 2024-02-12 - return42 <markus.heiser@darmarit.de>
1d12e762f - 2024-02-12 - ghose <correo@xmgz.eu>
ab319100b - 2024-02-12 - return42 <markus.heiser@darmarit.de>
9854a5a4a - 2024-02-12 - return42 <markus.heiser@darmarit.de>
ebfb23f13 - 2024-02-10 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
2024-02-16 15:48:10 +01:00
Bnyro
11c0651ef4 [fix] lingva: redirect and parsing error 2024-02-11 11:28:47 +01:00
dalf
bffc4905ce Update searx.data - update_currencies.py 2024-02-10 23:55:41 +01:00
Markus Heiser
bfcd41f04a [clean] drop obsolete py3.7 compatibility
- https://github.com/searxng/searxng/discussions/2356

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-10 09:27:19 +01:00
Hackurei
b0fe0924a3 [feat] engine: implementation of brave goggles 2024-02-10 08:09:50 +01:00
Markus Heiser
53898b8c37 [mod] footer: i18n for the link names in the footer
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-10 08:03:43 +01:00
Bnyro
7e1b5f6cc8 [feat] footer: support for custom entries 2024-02-10 08:03:43 +01:00
dependabot[bot]
596b9b7864 Bump certifi from 2023.11.17 to 2024.2.2
Bumps [certifi](https://github.com/certifi/python-certifi) from 2023.11.17 to 2024.2.2.
- [Commits](https://github.com/certifi/python-certifi/compare/2023.11.17...2024.02.02)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-10 07:47:15 +01:00
dependabot[bot]
bbe42ea81d Bump yamllint from 1.33.0 to 1.34.0
Bumps [yamllint](https://github.com/adrienverge/yamllint) from 1.33.0 to 1.34.0.
- [Changelog](https://github.com/adrienverge/yamllint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/adrienverge/yamllint/compare/v1.33.0...v1.34.0)

---
updated-dependencies:
- dependency-name: yamllint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-10 07:41:03 +01:00
dependabot[bot]
b7740e4922 Bump flask from 3.0.1 to 3.0.2
Bumps [flask](https://github.com/pallets/flask) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/3.0.1...3.0.2)

---
updated-dependencies:
- dependency-name: flask
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-10 07:39:58 +01:00
Markus Heiser
a1c38d5965 Revert "[fix] remove certifi from requirements.txt [1]"
This reverts commit 36ae1c7034.
2024-02-10 07:32:41 +01:00
Markus Heiser
36ae1c7034 [fix] remove certifi from requirements.txt [1]
[1] https://github.com/searxng/searxng/commit/93f7f7eee2e8

forensics:

- Requirement certify was added in 35a2bc5650

- Since commit 93f7f7eee certifi is no longer needed.  Not sure why 93f7f7eee
  upgraded certifi while removing the usage of this package from the source code
  in the same commit.

Closes: https://github.com/searxng/searxng/pull/3182
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-10 07:17:56 +01:00
searxng-bot
459389a2da [translations] update from Weblate
2b940307e - 2024-02-08 - return42 <markus.heiser@darmarit.de>
e7cdce39e - 2024-02-08 - return42 <markus.heiser@darmarit.de>
171fae67d - 2024-02-08 - return42 <markus.heiser@darmarit.de>
d6a760466 - 2024-02-08 - return42 <markus.heiser@darmarit.de>
8cc4c51a9 - 2024-02-04 - return42 <markus.heiser@darmarit.de>
2e76559ba - 2024-02-04 - return42 <markus.heiser@darmarit.de>
2024-02-09 08:15:45 +01:00
Markus Heiser
df1a774003 [fix] KeyError: 'title' in results using key-value.html template
Since #2508 a title is required --> this is a bug when an engine uses the
key-value.html template [1], where no title is needed.

[1] https://github.com/searxng/searxng/blob/master/searx/templates/simple/result_templates/key-value.html

Closes: https://github.com/searxng/searxng/issues/3130
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-06 07:53:39 +01:00
dependabot[bot]
fcfff92017 Bump nose2[coverage_plugin] from 0.14.0 to 0.14.1
Bumps [nose2[coverage_plugin]](https://github.com/nose-devs/nose2) from 0.14.0 to 0.14.1.
- [Changelog](https://github.com/nose-devs/nose2/blob/main/docs/changelog.rst)
- [Commits](https://github.com/nose-devs/nose2/compare/0.14.0...0.14.1)

---
updated-dependencies:
- dependency-name: nose2[coverage_plugin]
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-03 09:41:52 +01:00
searxng-bot
11f918296f [translations] update from Weblate
a00154946 - 2024-02-01 - yuttct <yuttct@yahoo.com>
9f220b2aa - 2024-02-02 - return42 <markus.heiser@darmarit.de>
71951ae12 - 2024-02-02 - return42 <markus.heiser@darmarit.de>
a2f344a70 - 2024-02-02 - return42 <markus.heiser@darmarit.de>
0f2944179 - 2024-02-01 - return42 <markus.heiser@darmarit.de>
f0d42961f - 2024-02-01 - return42 <markus.heiser@darmarit.de>
a5cc1c6d5 - 2024-02-01 - return42 <markus.heiser@darmarit.de>
c5a39252d - 2024-02-01 - return42 <markus.heiser@darmarit.de>
fa01c9758 - 2024-02-01 - return42 <markus.heiser@darmarit.de>
51a86de3d - 2024-02-01 - return42 <markus.heiser@darmarit.de>
4a55d6d8d - 2024-02-01 - return42 <markus.heiser@darmarit.de>
3bb8adf1f - 2024-02-01 - return42 <markus.heiser@darmarit.de>
1b2e23dcb - 2024-02-01 - return42 <markus.heiser@darmarit.de>
7589d6bbc - 2024-02-01 - return42 <markus.heiser@darmarit.de>
c04d8739c - 2024-01-31 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
2024-02-02 08:18:01 +01:00
Markus Heiser
be0d756ad5 [fix] libgen.fun is down, switch to libgen.rs
Closes: https://github.com/searxng/searxng/issues/3178
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-01 20:32:10 +01:00
allixx
6d31ca28b5 [fix] remove missing link icon macro 2024-02-01 08:13:43 +01:00
Hermógenes Oliveira
100a150a33 Remove rtl exception
This right-to-left exception doesn't seem to be called for.
2024-01-31 20:03:10 +01:00
Hermógenes Oliveira
f9f0c2ec03 Fix media exposure toggle
Make initially hidden and the toggle button consistent.
2024-01-31 20:03:10 +01:00
Hermógenes Oliveira
fa7fef7d87 Provide template for results in file category
This is used, for instance, by the recoll engine.
2024-01-31 20:03:10 +01:00
Markus Heiser
ab8e5383fb [mod] remove X-XSS-Protection headers
Deprecated header not used by browsers nowadays[1]:

"""In modern browsers, X-XSS-Protection has been deprecated in favor of the
Content-Security-Policy to disable the use of inline JavaScript. Its use can
introduce XSS vulnerabilities in otherwise safe websites. This should not be
used unless you need to support older web browsers that don’t yet support CSP.
It is thus recommended to set the header as X-XSS-Protection: 0."""[2]

[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
[2] https://infosec.mozilla.org/guidelines/web_security#x-xss-protection

Closes: https://github.com/searxng/searxng/issues/3171
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-01-31 17:23:41 +01:00
allixx
dca78f920f [build] /static 2024-01-31 17:22:03 +01:00
allixx
c85f706601 [fix] wrong engines padding 2024-01-31 17:22:03 +01:00
allixx
30dcaf1db6 [fix] equalize cached/proxied links left margin 2024-01-31 17:22:03 +01:00
allixx
1e03094dee [fix] justify engines/cached/proxied vertically 2024-01-31 17:22:03 +01:00
Markus Heiser
c14b117121 [fix] brave.search - update result selectors to fit to new layout
Closes: https://github.com/searxng/searxng/issues/3167
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-01-31 16:21:56 +01:00
Bnyro
efbee96b1d [feat] brave: fix empty content and parse published dates 2024-01-30 07:41:45 +01:00
Bnyro
90072eb6ff [build] /static 2024-01-29 18:09:22 +01:00
Bnyro
a5decfb838 [feat] preferences: button to copy input to restore preferences hash 2024-01-29 18:09:22 +01:00
Markus Heiser
a8aaf5719b [test.robot] update gecko driver / v0.34.0 required by firefox 121.*
Update gecko driver to v0.34.0 [1]

[1] https://github.com/mozilla/geckodriver/releases/tag/v0.34.0

Closes: https://github.com/searxng/searxng/issues/3141
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-01-29 17:37:30 +01:00
Bnyro
559b860618 [feat] engine: implementation of goodreads 2024-01-29 16:07:24 +01:00
dependabot[bot]
c2f1e760a1 Bump selenium from 4.16.0 to 4.17.2
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.16.0 to 4.17.2.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-29 15:33:35 +01:00
dependabot[bot]
b3691c6421 Bump flask from 3.0.0 to 3.0.1
Bumps [flask](https://github.com/pallets/flask) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/3.0.0...3.0.1)

---
updated-dependencies:
- dependency-name: flask
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-29 15:32:10 +01:00
dependabot[bot]
6d819c2879 Bump typing-extensions from 4.8.0 to 4.9.0
Bumps [typing-extensions](https://github.com/python/typing_extensions) from 4.8.0 to 4.9.0.
- [Release notes](https://github.com/python/typing_extensions/releases)
- [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/python/typing_extensions/compare/4.8.0...4.9.0)

---
updated-dependencies:
- dependency-name: typing-extensions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-29 15:25:39 +01:00
searxng-bot
a962aab9b0 [translations] update from Weblate
c1a3532a2 - 2024-01-23 - return42 <markus.heiser@darmarit.de>
603c6894b - 2024-01-23 - return42 <markus.heiser@darmarit.de>
2920c7342 - 2024-01-22 - Eshan-K-I <2027eiyer@tjhsst.edu>
64cc1168a - 2024-01-20 - return42 <markus.heiser@darmarit.de>
21ec41823 - 2024-01-20 - return42 <markus.heiser@darmarit.de>
2024-01-29 15:01:37 +01:00
dependabot[bot]
7f025a421b Bump sphinx-tabs from 3.4.4 to 3.4.5
Bumps [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) from 3.4.4 to 3.4.5.
- [Release notes](https://github.com/executablebooks/sphinx-tabs/releases)
- [Changelog](https://github.com/executablebooks/sphinx-tabs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/executablebooks/sphinx-tabs/compare/v3.4.4...v3.4.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-29 15:00:06 +01:00
dependabot[bot]
74e28a570a Bump sphinx-issues from 3.0.1 to 4.0.0
Bumps [sphinx-issues](https://github.com/sloria/sphinx-issues) from 3.0.1 to 4.0.0.
- [Commits](https://github.com/sloria/sphinx-issues/compare/3.0.1...4.0.0)

---
updated-dependencies:
- dependency-name: sphinx-issues
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-29 14:51:43 +01:00
dalf
62fa85287a Update searx.data - update_wikidata_units.py 2024-01-29 14:04:24 +01:00
dalf
0ed7548d83 Update searx.data - update_firefox_version.py 2024-01-29 14:04:03 +01:00
dalf
d763934a7a Update searx.data - update_ahmia_blacklist.py 2024-01-29 14:03:03 +01:00
dalf
14f73ef3d9 Update searx.data - update_engine_traits.py 2024-01-29 14:02:30 +01:00
dalf
a393341403 Update searx.data - update_engine_descriptions.py 2024-01-29 13:34:12 +01:00
allixx
e4cf0a7d4f [fix] do highlight replacement at once
Highlights all search queries in search result in one go.

Fixes the case where search query contains word from highlight HTML code,
which causes broken HTML to appear in search results.

Closes #3057
2024-01-29 13:15:37 +01:00
Bnyro
8c73aa772b [fix] semantic scholar: bad request 2024-01-25 06:12:08 +01:00
dependabot[bot]
047c7a7cf6 Bump splinter from 0.20.1 to 0.21.0
Bumps [splinter](https://github.com/cobrateam/splinter) from 0.20.1 to 0.21.0.
- [Release notes](https://github.com/cobrateam/splinter/releases)
- [Changelog](https://github.com/cobrateam/splinter/blob/master/docs/news.rst)
- [Commits](https://github.com/cobrateam/splinter/compare/0.20.1...0.21.0)

---
updated-dependencies:
- dependency-name: splinter
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-19 12:11:10 +01:00
searxng-bot
ab5d2f32bb [translations] update from Weblate
0f8246b81 - 2024-01-17 - return42 <markus.heiser@darmarit.de>
ce23e8ce9 - 2024-01-16 - return42 <markus.heiser@darmarit.de>
1112731cb - 2024-01-17 - return42 <markus.heiser@darmarit.de>
2024-01-19 08:29:29 +01:00
Émilien (perso)
7c80807bb8 Block HeadlessChrome (#3116) 2024-01-17 09:14:36 +01:00
Jinyuan Huang
9c5f9735cf [fix] engine: safesearch parameter in Google Videos engine (#2762)
Closes: https://github.com/searxng/searxng/issues/2762
2024-01-16 15:29:09 +01:00
Markus Heiser
8762863ebf [mod] presearch: set WEB timeout to 4sec & single network for all request
timeout: 4.0
  The timeout of presearch-WEB is left up from the default of 3sec to 4sec.  The
  engine has to send two HTTP requests, they often exceed the default timeout of
  3sec. Since all other presearch categories (images, videos, news) also have a
  timeout of 4 sec, the WEB search should also have the same timeout.

network: presearch
  Place all HTTP requests in the same network, named ``presearch``.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-01-15 19:23:26 +01:00
Markus Heiser
e560d7e373 [mod] presearch: add language & region support
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 19:23:26 +01:00
Markus Heiser
a2c269bbac [mod] presearch: hardening engine's response against KeyErrors
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-01-15 19:23:26 +01:00
Bnyro
0a78f59aba [fix] presearch: safesearch, time ranges, crash when no result found 2024-01-15 19:23:26 +01:00
Markus Heiser
87f18b98ec [fix] SyntaxWarning: invalid escape sequence '\>'
This patch fixes issue reported by ``make test.unit``::

   searx/search/checker/impl.py:39: SyntaxWarning: invalid escape sequence '\>'
      rep = ['<' + tag + '[^\>]*>' for tag in HTML_TAGS]

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-01-15 18:27:21 +01:00
searxng-bot
b0b2efdc8d [translations] update from Weblate
3dafa37f3 - 2024-01-10 - return42 <markus.heiser@darmarit.de>
a641db83f - 2024-01-10 - Rick1029 <yoshibear1029@gmail.com>
a3d2b083f - 2024-01-08 - johnmartzbuntia <johnmartibuntia@jmtb.xyz>
b6dec1f75 - 2024-01-08 - return42 <markus.heiser@darmarit.de>
eb76d8b8d - 2024-01-09 - Rick1029 <yoshibear1029@gmail.com>
2024-01-13 09:33:41 +01:00
dependabot[bot]
a19028bd90 Bump lxml from 5.0.0 to 5.1.0
Bumps [lxml](https://github.com/lxml/lxml) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-5.0.0...lxml-5.1.0)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-12 10:28:26 +01:00
dependabot[bot]
065e95cd05 Bump jinja2 from 3.1.2 to 3.1.3
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.2...3.1.3)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-12 09:29:59 +01:00
Markus Heiser
54a6626582 [fix] issues reported by shellcheck v0.9.0
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-01-09 16:31:19 +01:00
Markus Heiser
f9c5727ddc [mod] get rid of ./utils/brand.env and its workflow
All the environments defined in ./utils/brand.env are generated on the fly, so
there is no longer a need to define the brand environment in this file and all
the workflows to handle this file.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-01-09 16:31:19 +01:00
Alexandre Flament
60bc5baea3 [mod] ./utils/get_setting.py tiny YAML parser for settings.yml
This allow to read settings on the fly even without virtualenv.  The ultimate
goal of the commit is to remove utils/brand.env from the git repository.

The code includes a tiny yaml parser that **should** be good enough.  The code
read searx/settings.yml directly (and ignore the environment variables).

yq [1] is a more reliable alternative but this require to download a binary from
github which is not great.

[1] https://github.com/mikefarah/yq/#install
2024-01-09 16:31:19 +01:00
Bnyro
3dea7e609b [feat] autocompleter: implementation of stract (beta) 2024-01-07 11:18:16 +01:00
Bnyro
621e1313af [feat] engine: implementation of stract (beta) 2024-01-07 11:18:16 +01:00
dependabot[bot]
2f7c800f6f Bump lxml from 4.9.4 to 5.0.0
Bumps [lxml](https://github.com/lxml/lxml) from 4.9.4 to 5.0.0.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.9.4...lxml-5.0.0)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-06 16:26:05 +01:00
Myzel394
55568051d4 fix(docs): Fix development quickstart url 2024-01-06 16:20:38 +01:00
searxng-bot
c90dc201fc [translations] update from Weblate
a04e3b59c - 2024-01-02 - return42 <markus.heiser@darmarit.de>
a4d387847 - 2024-01-02 - return42 <markus.heiser@darmarit.de>
80521c1b3 - 2024-01-02 - return42 <markus.heiser@darmarit.de>
e90952815 - 2024-01-02 - return42 <markus.heiser@darmarit.de>
2debd5992 - 2023-12-29 - alextecplayz <alextec70@outlook.com>
c4d54c3e5 - 2023-12-29 - alexgabi <alexgabi@disroot.org>
1a0c9c025 - 2023-12-29 - SecularSteve <fairfull.playing@gmail.com>
dc99d1390 - 2023-12-29 - ETRB <codeberg-cm58mk@r.acmrb.uk>
477e01149 - 2023-12-29 - SecularSteve <fairfull.playing@gmail.com>
65dacdd30 - 2023-12-29 - staram <gritty.year0043@fastmail.com>
6a20c8853 - 2023-12-29 - SecularSteve <fairfull.playing@gmail.com>
2024-01-06 16:20:13 +01:00
Émilien (perso)
3535377c9a Searx to SearXNG change error message 2023-12-31 16:19:14 +01:00
searxng-bot
27e26b3d65 [translations] update from Weblate
966bbd849 - 2023-12-29 - staram <gritty.year0043@fastmail.com>
d4680cb39 - 2023-12-29 - 1024mb <aberetta@protonmail.com>
b2cf5fbaf - 2023-12-27 - Linuks <linuks@skiff.com>
fa8654087 - 2023-12-27 - tentsbet <remendne@pentrens.jp>
fc759fe0b - 2023-12-27 - Linerly <linerly@protonmail.com>
cf9b03bfd - 2023-12-27 - return42 <markus.heiser@darmarit.de>
03bd73400 - 2023-12-27 - Linerly <linerly@protonmail.com>
88ffa01ec - 2023-12-27 - return42 <markus.heiser@darmarit.de>
736c44d3f - 2023-12-25 - err_connection_closed <err_connection_closed@users.noreply.translate.codeberg.org>
dd3a15279 - 2023-12-26 - ghose <correo@xmgz.eu>
fd68404ee - 2023-12-26 - return42 <markus.heiser@darmarit.de>
941e60232 - 2023-12-23 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
41dfd42d7 - 2023-12-23 - mittwerk <w0o0y8jt@duck.com>
1ca048b0b - 2023-12-23 - Fjuro <ifjuro@proton.me>
2023-12-29 08:48:24 +01:00
dalf
4647981419 Update searx.data - update_wikidata_units.py 2023-12-29 06:09:04 +01:00
dalf
a8cc101c35 Update searx.data - update_ahmia_blacklist.py 2023-12-29 06:08:35 +01:00
dalf
59a67f30c8 Update searx.data - update_firefox_version.py 2023-12-29 06:07:46 +01:00
dalf
81e8638de0 Update searx.data - update_currencies.py 2023-12-29 06:06:51 +01:00
Markus Heiser
d676ae8ab3 [build] /static 2023-12-28 19:15:04 +01:00
Jinyuan Huang
f6d797ef43 [fix] fix a display problem in the image detail preview. 2023-12-28 19:15:04 +01:00
Markus Heiser
0d47322ac8 [build] /static 2023-12-28 18:59:14 +01:00
ahmad-alkadri
07e846e91a Prevent default browser behavior on click event 2023-12-28 18:59:14 +01:00
Markus Heiser
8dfc1dbc5c [fix] engine - offical URL moved to https://lingva.thedaviddelta.com/
The ML top-level domain has been removed from Freenom ... moved the official
instance to https://lingva.thedaviddelta.com  [1]

To test use translation syntax:

    !lv en-de Alternative front-end for Google Translate

[1] https://fosstodon.org/@thedaviddelta/111376540936289966

Closes: https://github.com/searxng/searxng/issues/2718
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-12-25 09:57:35 +01:00
Markus Heiser
2863b0f6da Update searx.data - update_engine_traits.py
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-12-24 08:28:32 +01:00
Markus Heiser
6df922b9da [fix] fetch_traits of google and zlibrary
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-12-24 08:28:32 +01:00
Bnyro
d6ac2b5a55 [feat] engine: implementation of bahnhof.de 2023-12-23 17:38:38 +01:00
Markus Heiser
6129b16165 [mod] simplify no results on pages > 1 to "There are no more results."
BTW: remove not needed whitespaces in the generated HTML

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-12-23 09:50:39 +01:00
obfuscated-loop
2179a418c4 [mod] Change no results error message based on page number 2023-12-23 09:50:39 +01:00
Jay
b4de72a96f [mod] Capitalize theme names/styles in theme.html view file 2023-12-23 09:07:08 +01:00
Markus Heiser
91737f719a [mod] nodejs v16 reaached EOL / upgrade to v20.10
[1] https://nodejs.org/en/about/previous-releases

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-12-23 07:49:03 +01:00
dependabot[bot]
26737fda1b Bump sharp from 0.32.6 to 0.33.0 in /searx/static/themes/simple
Bumps [sharp](https://github.com/lovell/sharp) from 0.32.6 to 0.33.0.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/main/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/compare/v0.32.6...v0.33.0)

---
updated-dependencies:
- dependency-name: sharp
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-23 07:49:03 +01:00
Markus Heiser
3665b32aff Revert "[fix] update user agent"
This reverts commit 3c6549a17f.

Related:

- https://github.com/searxng/searxng/pull/2826
2023-12-23 07:48:38 +01:00
searxng-bot
518dd97c89 [translations] update from Weblate
fc2dfc108 - 2023-12-21 - return42 <markus.heiser@darmarit.de>
3938cfbac - 2023-12-21 - return42 <markus.heiser@darmarit.de>
7b7286fba - 2023-12-21 - return42 <markus.heiser@darmarit.de>
1d066d218 - 2023-12-20 - sriramsekar <srirams_24@yahoo.com>
2023-12-23 07:40:02 +01:00
dependabot[bot]
2e52d06d18 Bump babel from 2.13.1 to 2.14.0
Bumps [babel](https://github.com/python-babel/babel) from 2.13.1 to 2.14.0.
- [Release notes](https://github.com/python-babel/babel/releases)
- [Changelog](https://github.com/python-babel/babel/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-babel/babel/compare/v2.13.1...v2.14.0)

---
updated-dependencies:
- dependency-name: babel
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-23 07:39:26 +01:00
dependabot[bot]
ed085a38bd Bump pylint from 3.0.2 to 3.0.3
Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.0.2...v3.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-23 07:31:57 +01:00
dependabot[bot]
2136c978ff Bump lxml from 4.9.3 to 4.9.4
Bumps [lxml](https://github.com/lxml/lxml) from 4.9.3 to 4.9.4.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.9.3...lxml-4.9.4)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-23 07:30:50 +01:00
Bnyro
8a4104b992 [feat] engine: implementation of rotten tomatoes 2023-12-11 18:59:36 +01:00
Bnyro
dda74fc9c9 [feat] engine: implementation of mdn 2023-12-11 18:57:40 +01:00
Bnyro
b5b81c9806 [feat] engine: implementation of fyyd 2023-12-11 18:56:32 +01:00
Bnyro
527e13ab46 [feat] engine: implementation of podcastindex.org 2023-12-11 18:55:16 +01:00
Bnyro
3bc85c511c [mod] tootfinder: implement python module 2023-12-11 18:54:24 +01:00
Brock Vojkovic
0bcff32dd7 [fix] update check.searx.space IP addresses 2023-12-11 15:21:02 +01:00
dependabot[bot]
8effefa8db Bump selenium from 4.15.2 to 4.16.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.15.2 to 4.16.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits/selenium-4.16.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-10 19:26:02 +01:00
searxng-bot
574ed29d3e [translations] update from Weblate
fa2970d07 - 2023-12-08 - return42 <markus.heiser@darmarit.de>
f19144327 - 2023-12-07 - artnay <jiri.gronroos@iki.fi>
110f1b4db - 2023-12-05 - Ivan Gabaldon <admin@inetol.net>
c791e0c81 - 2023-12-07 - APoniatowski <adam@poniatowski.dev>
1f45cc83a - 2023-12-04 - akwceles <abadcopovisamuel@gmail.com>
5f93c2a39 - 2023-12-04 - return42 <markus.heiser@darmarit.de>
0d735b7aa - 2023-12-04 - return42 <markus.heiser@darmarit.de>
9cad06b09 - 2023-12-04 - akwceles <abadcopovisamuel@gmail.com>
97554eaa2 - 2023-12-03 - kirisameSoup <kirisoup@skiff.com>
2f4e19946 - 2023-12-03 - kirisameSoup <kirisoup@skiff.com>
d1dac8b5b - 2023-12-01 - Luna <github@luwuna.gay>
5c57f6eb5 - 2023-12-01 - return42 <markus.heiser@darmarit.de>
4e3908a20 - 2023-12-01 - return42 <markus.heiser@darmarit.de>
4d2b58e40 - 2023-12-01 - return42 <markus.heiser@darmarit.de>
43a40da4d - 2023-12-01 - return42 <markus.heiser@darmarit.de>
89f08502e - 2023-12-01 - return42 <markus.heiser@darmarit.de>
2023-12-08 08:42:24 +01:00
Markus Heiser
3829c253ff [mod] add option max_page to bing, brave, qwant, startpage & mojeek
[1] https://github.com/searxng/searxng/issues/2982#issuecomment-1808975780

Reported-by: @Damaj301damaj-lol [1]
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-12-03 13:47:17 +01:00
Markus Heiser
2274d55d5a [mod] add option max_page
Related: https://github.com/searxng/searxng/issues/2982
Closes: https://github.com/searxng/searxng/issues/2972

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-12-03 13:47:17 +01:00
dependabot[bot]
1e0813fd3a Bump redis from 4.6.0 to 5.0.1
Bumps [redis](https://github.com/redis/redis-py) from 4.6.0 to 5.0.1.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v4.6.0...v5.0.1)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-03 13:31:02 +01:00
dalf
5a72977efa Update searx.data - update_currencies.py 2023-11-29 06:34:25 +01:00
dalf
b18bef17a7 Update searx.data - update_engine_descriptions.py 2023-11-29 06:24:03 +01:00
dalf
a136b0b44d Update searx.data - update_ahmia_blacklist.py 2023-11-29 06:18:21 +01:00
dalf
3ca84cb8d7 Update searx.data - update_wikidata_units.py 2023-11-29 06:17:32 +01:00
Coccocoa's Helper
a85274eff5 Change the brand.env file to the original state 2023-11-28 09:31:54 +01:00
Bnyro
bf75a8c2a0 [feat] engine: implementation of bpb 2023-11-27 16:46:41 +01:00
Bnyro
04cfce2eb8 [feat] yep: support for images and news (and safesearch) 2023-11-27 15:07:26 +01:00
Markus Heiser
ee2675c999 [update] make pygments.less
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-11-27 14:43:43 +01:00
dependabot[bot]
f23948eecc Bump pygments from 2.16.1 to 2.17.2
Bumps [pygments](https://github.com/pygments/pygments) from 2.16.1 to 2.17.2.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.16.1...2.17.2)

---
updated-dependencies:
- dependency-name: pygments
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-27 14:43:43 +01:00
dependabot[bot]
a18761662a Bump certifi from 2023.7.22 to 2023.11.17
Bumps [certifi](https://github.com/certifi/python-certifi) from 2023.7.22 to 2023.11.17.
- [Commits](https://github.com/certifi/python-certifi/compare/2023.07.22...2023.11.17)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-27 14:39:03 +01:00
dependabot[bot]
e06c720820 Bump splinter from 0.19.0 to 0.20.1
Bumps [splinter](https://github.com/cobrateam/splinter) from 0.19.0 to 0.20.1.
- [Release notes](https://github.com/cobrateam/splinter/releases)
- [Changelog](https://github.com/cobrateam/splinter/blob/master/docs/news.rst)
- [Commits](https://github.com/cobrateam/splinter/compare/0.19.0...0.20.1)

---
updated-dependencies:
- dependency-name: splinter
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-27 14:34:38 +01:00
Markus Heiser
44392bd436 [mod] improve implementation of presearch engine
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-11-27 14:16:42 +01:00
Bnyro
23582aac5c [feat] implementation of presearch engine 2023-11-27 14:16:42 +01:00
obfuscated-loop
99fb565b39 [mod] Retain page numbers even when there are no results 2023-11-27 14:07:04 +01:00
Bnyro
c3cc24be12 [feat] engine: implementation of destatis 2023-11-27 13:54:48 +01:00
searxng-bot
a36eae1d68 [translations] update from Weblate
d0511fe50 - 2023-11-22 - return42 <markus.heiser@darmarit.de>
e5d09a011 - 2023-11-21 - 0que <0que@users.noreply.translate.codeberg.org>
111634b33 - 2023-11-21 - return42 <markus.heiser@darmarit.de>
29df37609 - 2023-11-21 - return42 <markus.heiser@darmarit.de>
bb415aca1 - 2023-11-21 - RTRedreovic <RTRedreovic@users.noreply.translate.codeberg.org>
4b05dce9f - 2023-11-21 - return42 <markus.heiser@darmarit.de>
2f730019b - 2023-11-20 - return42 <markus.heiser@darmarit.de>
389a46a05 - 2023-11-19 - alextecplayz <alextec70@outlook.com>
2620f6911 - 2023-11-20 - return42 <markus.heiser@darmarit.de>
716d7001d - 2023-11-20 - return42 <markus.heiser@darmarit.de>
30f17f24c - 2023-11-20 - return42 <markus.heiser@darmarit.de>
b7c4062e2 - 2023-11-19 - RTRedreovic <RTRedreovic@users.noreply.translate.codeberg.org>
7ba200bc5 - 2023-11-18 - Azharjan <alexander.um.edu@gmail.com>
2023-11-27 07:32:05 +01:00
obfuscated-loop
cc6058057d [build] /static 2023-11-23 07:30:56 +01:00
obfuscated-loop
355d2dc678 [fix] Remove anchor tag outline in image results 2023-11-23 07:30:56 +01:00
searxng-bot
e99ebb3dec [translations] update from Weblate
e245d1bd0 - 2023-11-16 - return42 <markus.heiser@darmarit.de>
8ee33fca3 - 2023-11-16 - return42 <markus.heiser@darmarit.de>
1c8c1557c - 2023-11-16 - return42 <markus.heiser@darmarit.de>
925c63f41 - 2023-11-16 - return42 <markus.heiser@darmarit.de>
15908183b - 2023-11-14 - return42 <markus.heiser@darmarit.de>
dd57115ef - 2023-11-12 - return42 <markus.heiser@darmarit.de>
9db7544d8 - 2023-11-11 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
23ce4d1f2 - 2023-11-12 - return42 <markus.heiser@darmarit.de>
902b8bafd - 2023-11-13 - tentsbet <remendne@pentrens.jp>
2350f4a05 - 2023-11-13 - ghose <correo@xmgz.eu>
10e6293fd - 2023-11-11 - gallegonovato <fran-carro@hotmail.es>
477881443 - 2023-11-13 - return42 <markus.heiser@darmarit.de>
556b2f611 - 2023-11-13 - Fjuro <ifjuro@proton.me>
3133818f8 - 2023-11-12 - return42 <markus.heiser@darmarit.de>
2023-11-22 09:43:45 +01:00
Paul Braeuning
b3d29cb86d Merge pull request #3006 from BernieHuang2008/fix-3003
fix: [BUG] Images cannot be clicked anymore
2023-11-14 16:11:29 +01:00
Jinyuan Huang
3601badd84 [build] /static 2023-11-14 13:34:44 +01:00
Jinyuan Huang
903449e0b5 [fix] Images cannot be clicked anymore #3006
URL in sidedbar only exists in HTTP POST requests.  On HTTP GET requests the
selector ``#search_url button#copy_url`` results in a ``null`` type and a
``.style.display`` raises::

   Uncaught TypeError: d.querySelector(...) is null

As a result, the initialization of the event handler is no longer carried out.

Closes: https://github.com/searxng/searxng/issues/3003
Suggested-by: Markus Heiser <markus.heiser@darmarit.de>
2023-11-14 13:28:50 +01:00
Markus Heiser
76b91a3ef6 [dev] manage runtime versions with asdf
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-11-12 20:54:57 +01:00
searxng-bot
79db70f2b7 [translations] update from Weblate
2b7f195db - 2023-11-09 - proton-penguin <cgshyuankai@proton.me>
411951c72 - 2023-11-09 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
878199f48 - 2023-11-06 - RTRedreovic <RTRedreovic@users.noreply.translate.codeberg.org>
512f9981a - 2023-11-05 - return42 <markus.heiser@darmarit.de>
adcaeb0c6 - 2023-11-05 - return42 <markus.heiser@darmarit.de>
acc01d46d - 2023-11-05 - return42 <markus.heiser@darmarit.de>
32f1dd13c - 2023-11-05 - RTRedreovic <RTRedreovic@users.noreply.translate.codeberg.org>
aafe161aa - 2023-11-03 - quenty_occitania <quentinantonin@free.fr>
c910601c9 - 2023-11-03 - return42 <markus.heiser@darmarit.de>
2023-11-12 20:54:35 +01:00
dependabot[bot]
6368f845c5 Bump yamllint from 1.32.0 to 1.33.0
Bumps [yamllint](https://github.com/adrienverge/yamllint) from 1.32.0 to 1.33.0.
- [Changelog](https://github.com/adrienverge/yamllint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/adrienverge/yamllint/compare/v1.32.0...v1.33.0)

---
updated-dependencies:
- dependency-name: yamllint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-12 20:52:09 +01:00
dependabot[bot]
3c1725bc9e Bump selenium from 4.15.1 to 4.15.2
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.15.1 to 4.15.2.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-12 20:51:32 +01:00
dependabot[bot]
db7abeee06 Bump fasttext-predict from 0.9.2.1 to 0.9.2.2
Bumps [fasttext-predict](https://github.com/searxng/fasttext-predict) from 0.9.2.1 to 0.9.2.2.
- [Release notes](https://github.com/searxng/fasttext-predict/releases)
- [Commits](https://github.com/searxng/fasttext-predict/compare/v0.9.2.1...v0.9.2.2)

---
updated-dependencies:
- dependency-name: fasttext-predict
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-12 20:50:56 +01:00
Alexandre Flament
bd3f526859 Docker: add UWSGI_WORKERS and UWSGI_THREAD environment variables (#2992)
* Docker: add UWSGI_WORKERS and UWSGI_THREAD.

UWSGI_WORKERS specifies the number of process.
UWSGI_THREADS specifies the number of threads.

The Docker convention is to specify the whole configuration
through environment variables. While not done in SearXNG, these two
additional variables allows admins to skip uwsgi.ini

In additional, https://github.com/searxng/preview-environments starts Docker
without additional files through searxng-helm-chat.
Each instance consumes 1Go of RAM which is a lot especially when there are a
lot of instances / pull requests.

* [scripts] add environments UWSGI_WORKERS and UWSGI_THREADS

- UWSGI_WORKERS specifies the number of process.
- UWSGI_THREADS specifies the number of threads.

Templates for uwsgi scripts can be tested by::

    UWSGI_WORKERS=8 UWSGI_THREADS=9 \
      ./utils/searxng.sh --cmd\
      eval "echo \"$(cat utils/templates/etc/uwsgi/*/searxng.ini*)\""\
      | grep "workers\|threads"

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>

---------

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2023-11-12 16:46:34 +00:00
Paul Braeuning
7b1951aa97 Merge pull request #2835 from BernieHuang2008/auto-copy
[feature] added a "copy" button in `search url` sidebar.
2023-11-11 16:19:58 +01:00
Jinyuan Huang
727de1c4ef [build] /static 2023-11-10 13:28:28 +00:00
Jinyuan Huang
8adc7b0433 add a "copy" button to the "search-url" sidebar 2023-11-10 13:28:04 +00:00
searxng-bot
96ccec1aa6 [translations] update from Weblate
acdcdace8 - 2023-11-01 - Ivan Gabaldon <admin@inetol.net>
31a1602a9 - 2023-10-29 - return42 <markus.heiser@darmarit.de>
a1d1070d3 - 2023-10-29 - return42 <markus.heiser@darmarit.de>
2023-11-03 10:01:28 +01:00
dependabot[bot]
dd0ccd7904 Bump selenium from 4.14.0 to 4.15.1
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.14.0 to 4.15.1.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-03 10:00:54 +01:00
dependabot[bot]
baef837eb6 Bump linuxdoc from 20230827 to 20231020
Bumps [linuxdoc](https://github.com/return42/linuxdoc) from 20230827 to 20231020.
- [Changelog](https://github.com/return42/linuxdoc/blob/master/CHANGELOG)
- [Commits](https://github.com/return42/linuxdoc/commits)

---
updated-dependencies:
- dependency-name: linuxdoc
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-03 09:59:06 +01:00
Markus Heiser
b5a8ddfec8 Revert "[fix] limit maximum page number of a search query to page 50." (#2979)
This reverts commit 7e2e335dd1.
2023-11-01 16:55:20 +00:00
Markus Heiser
d13a8f6453 [mod] document server:public_instance & remove it out of the botdetection
- the option server:public_instance lacks some documentation
- the processing of this option belongs in the limiter and not
  in botdetection module

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-11-01 06:44:56 +01:00
Markus Heiser
fd814aac86 [mod] isolation of botdetection from the limiter
This patch was inspired by the discussion around PR-2882 [2].  The goals of this
patch are:

1. Convert plugin searx.plugin.limiter to normal code [1]
2. isolation of botdetection from the limiter [2]
3. searx/{tools => botdetection}/config.py and drop searx.tools
4. in URL /config, 'limiter.enabled' is true only if the limiter is really
   enabled (Redis is available).

This patch moves all the code that belongs to botdetection into namespace
searx.botdetection and code that belongs to limiter is placed in namespace
searx.limiter.

Tthe limiter used to be a plugin at some point botdetection was added, it was
not a plugin.  The modularization of these two components was long overdue.
With the clear modularization, the documentation could then also be organized
according to the architecture.

[1] https://github.com/searxng/searxng/pull/2882
[2] https://github.com/searxng/searxng/pull/2882#issuecomment-1741716891

To test:

- check the app works without the limiter, check `/config`
- check the app works with the limiter and with the token, check `/config`
- make docs.live .. and read
  - http://0.0.0.0:8000/admin/searx.limiter.html
  - http://0.0.0.0:8000/src/searx.botdetection.html#botdetection

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-11-01 06:44:56 +01:00
sev
b05a15540e Check public_instance in simple theme
Fix #2975
2023-10-31 10:40:19 +01:00
Markus Heiser
7e2e335dd1 [fix] limit maximum page number of a search query to page 50.
To test this PR run a local instance and try to query page 51:

    http://127.0.0.1:8888/search?q=foo&pageno=51

A parameter exception will be raised:

    searx.exceptions.SearxParameterException: Invalid value "51" for parameter pageno

And the client will receive a HTTP 400 (Bad request).

Closes https://github.com/searxng/searxng/issues/2972

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-10-29 16:17:25 +01:00
Alexandre Flament
9aeae2142b Add support for Python 3.12 2023-10-29 11:25:58 +01:00
dalf
b63841f0a1 Update searx.data - update_engine_traits.py 2023-10-29 09:04:24 +01:00
dependabot[bot]
12a83b8cb3 Bump babel from 2.13.0 to 2.13.1
Bumps [babel](https://github.com/python-babel/babel) from 2.13.0 to 2.13.1.
- [Release notes](https://github.com/python-babel/babel/releases)
- [Changelog](https://github.com/python-babel/babel/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-babel/babel/compare/v2.13.0...v2.13.1)

---
updated-dependencies:
- dependency-name: babel
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-29 09:03:43 +01:00
dependabot[bot]
15c8301e52 Bump sphinx-tabs from 3.4.1 to 3.4.4
Bumps [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) from 3.4.1 to 3.4.4.
- [Release notes](https://github.com/executablebooks/sphinx-tabs/releases)
- [Changelog](https://github.com/executablebooks/sphinx-tabs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/executablebooks/sphinx-tabs/compare/v3.4.1...v3.4.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-29 08:58:07 +01:00
dependabot[bot]
cf605cf899 Bump uvloop from 0.18.0 to 0.19.0
Bumps [uvloop](https://github.com/MagicStack/uvloop) from 0.18.0 to 0.19.0.
- [Release notes](https://github.com/MagicStack/uvloop/releases)
- [Commits](https://github.com/MagicStack/uvloop/compare/v0.18.0...v0.19.0)

---
updated-dependencies:
- dependency-name: uvloop
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-29 08:54:32 +01:00
dalf
a9d778ee0f Update searx.data - update_wikidata_units.py 2023-10-29 08:45:15 +01:00
dalf
92efb941d8 Update searx.data - update_firefox_version.py 2023-10-29 08:44:59 +01:00
dalf
fa494b9be3 Update searx.data - update_currencies.py 2023-10-29 08:44:35 +01:00
dalf
1b92ea4e70 Update searx.data - update_engine_descriptions.py 2023-10-29 08:44:17 +01:00
dalf
55e7cb3e33 Update searx.data - update_ahmia_blacklist.py 2023-10-29 08:17:29 +01:00
dependabot[bot]
dbe94f111a Bump pylint from 3.0.1 to 3.0.2
Bumps [pylint](https://github.com/pylint-dev/pylint) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v3.0.1...v3.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 10:47:10 +02:00
searxng-bot
6af8644ead [translations] update from Weblate
4e5e5db44 - 2023-10-26 - quenty_occitania <quentinantonin@free.fr>
e1a8d3508 - 2023-10-26 - quenty_occitania <quentinantonin@free.fr>
84bddfb89 - 2023-10-26 - return42 <markus.heiser@darmarit.de>
d67a4114d - 2023-10-26 - quenty_occitania <quentinantonin@free.fr>
62fe8e328 - 2023-10-26 - return42 <markus.heiser@darmarit.de>
6e37ab975 - 2023-10-26 - quenty_occitania <quentinantonin@free.fr>
2cdab3247 - 2023-10-25 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
cf7ea7234 - 2023-10-23 - clsty <celestial.y@outlook.com>
0ea313893 - 2023-10-23 - return42 <markus.heiser@darmarit.de>
22151e440 - 2023-10-23 - return42 <markus.heiser@darmarit.de>
e4eaf42b6 - 2023-10-22 - clsty <celestial.y@outlook.com>
2023-10-27 09:23:23 +02:00
dependabot[bot]
526d5c7b30 Bump uvloop from 0.17.0 to 0.18.0
Bumps [uvloop](https://github.com/MagicStack/uvloop) from 0.17.0 to 0.18.0.
- [Release notes](https://github.com/MagicStack/uvloop/releases)
- [Commits](https://github.com/MagicStack/uvloop/compare/v0.17.0...v0.18.0)

---
updated-dependencies:
- dependency-name: uvloop
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-22 11:01:41 +02:00
Markus Heiser
ef56e1d684 [fix] HTMLParser: undocumented not implemented method
In python versions <py3.10 there is an issue with an undocumented method
HTMLParser.error() [1][2] that was deprecated in Python 3.4 and removed
in Python 3.5.

To be compatible to higher versions (>=py3.10) an error method is implemented
which throws an AssertionError exception like the higher Python versions do [3].

[1] https://github.com/python/cpython/issues/76025
[2] https://bugs.python.org/issue31844
[3] https://github.com/python/cpython/pull/8562

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-10-22 10:35:02 +02:00
searxng-bot
01b5b9cb8e [translations] update from Weblate
2325f1583 - 2023-10-20 - return42 <markus.heiser@darmarit.de>
5090c6a8e - 2023-10-18 - return42 <markus.heiser@darmarit.de>
3a38219d8 - 2023-10-18 - return42 <markus.heiser@darmarit.de>
94a9f4164 - 2023-10-16 - return42 <markus.heiser@darmarit.de>
bdbeb4b30 - 2023-10-16 - return42 <markus.heiser@darmarit.de>
f9b483f48 - 2023-10-16 - return42 <markus.heiser@darmarit.de>
7f1ca1997 - 2023-10-16 - return42 <markus.heiser@darmarit.de>
c5a701dc4 - 2023-10-14 - alexgabi <alexgabi@disroot.org>
2023-10-20 10:44:11 +02:00
Markus Heiser
b013cbb4cc [build] /static 2023-10-13 12:56:29 +02:00
Bnyro
df2e41c150 [fix] search.js: crash on homepage when setting form listeners 2023-10-13 12:56:29 +02:00
Markus Heiser
70521339d9 [fix] black --exclude option is a regular expression
When ``searx/static/themes/simple/node_modules`` are installed the test from
black runs into this path / Error::

    $ make test
    TEST      [yamllint] $YAMLLINT_FILES
    TEST      [black] $BLACK_TARGETS
    --- searx/static/themes/simple/node_modules/flatted/python/test.py	2023-10-13 10:09:50.460026 +0000
    +++ searx/static/themes/simple/node_modules/flatted/python/test.py	2023-10-13 10:10:04.974335 +0000
    @@ -1,9 +1,11 @@
    from flatted import stringify as _stringify, parse
    ...

black --exclude option is not a comma separated list, its a regular expression /
see:

    $ black --help
    ...
    --exclude TEXT   A regular expression that matches files and
                     directories that should be excluded on recursive
                     searches ...

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-10-13 12:44:18 +02:00
dependabot[bot]
7ee1d035bf Bump flask from 2.3.3 to 3.0.0
Bumps [flask](https://github.com/pallets/flask) from 2.3.3 to 3.0.0.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/2.3.3...3.0.0)

---
updated-dependencies:
- dependency-name: flask
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-13 11:49:17 +02:00
Émilien (perso)
4280318fc5 fixing results parsing brave 2023-10-13 11:47:30 +02:00
dependabot[bot]
7f59b6d62e Bump flask-babel from 3.1.0 to 4.0.0
Bumps [flask-babel](https://github.com/python-babel/flask-babel) from 3.1.0 to 4.0.0.
- [Release notes](https://github.com/python-babel/flask-babel/releases)
- [Changelog](https://github.com/python-babel/flask-babel/blob/master/CHANGELOG)
- [Commits](https://github.com/python-babel/flask-babel/compare/v3.1.0...v4.0.0)

---
updated-dependencies:
- dependency-name: flask-babel
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-13 09:51:30 +02:00
dependabot[bot]
32d52cd856 Bump selenium from 4.13.0 to 4.14.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.13.0 to 4.14.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.13.0...selenium-4.14.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-13 09:33:04 +02:00
searxng-bot
ac82daf58d [translations] update from Weblate
74e401e68 - 2023-10-09 - return42 <markus.heiser@darmarit.de>
897dd8db1 - 2023-10-09 - return42 <markus.heiser@darmarit.de>
6ed046a90 - 2023-10-09 - tentsbet <remendne@pentrens.jp>
815ecb336 - 2023-10-09 - return42 <markus.heiser@darmarit.de>
65d9a0c2f - 2023-10-07 - return42 <markus.heiser@darmarit.de>
3ec249ef9 - 2023-10-07 - return42 <markus.heiser@darmarit.de>
53dc6c108 - 2023-10-07 - return42 <markus.heiser@darmarit.de>
2023-10-13 09:20:54 +02:00
Hackurei
efada7cba2 [fix] hackernews keyerror problem 2023-10-13 08:16:47 +02:00
Hackurei
af071121de [fix] imgur - incorrect wikidata id 2023-10-12 09:14:00 +02:00
Markus Heiser
14323d683f [fix] ddg-lite & ddg-extra: don't send empty vqd value
DDG's bot detection is sensitive to the vqd value.  For some search terms (such
as extremely long search terms that are often sent by bots), no vqd value can be
determined.

If SearXNG cannot determine a vqd value, then no request should go out to
DDG (WEB): a request with a wrong vqd value leads to DDG temporarily putting
SearXNG's IP on a block list.

Requests from IPs in this block list run into timeouts.

Not sure, but it seems the block list is a sliding window: to get my IP rid from
the bot list I had to cool down my IP for 1h (send no requests from that IP to
DDG).

Since such issues can't reproduce in a local instance I tested this patch 24h on
my public SearXNG instance: There are still errors (rare), but the reliability
is still 100%.

Related:

- https://github.com/searxng/searxng/pull/2922
- https://github.com/searxng/searxng/pull/2923

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-10-12 08:52:28 +02:00
Umut Ucak
24561370b7 readme typo 2023-10-11 06:19:31 +02:00
Markus Heiser
3388441917 [fix] ddg-lite vqd value: some search terms do not have a vqd value
Some search terms do not have results and therefore no vqd value

BTW: remove a leftover from 9197efa

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-10-10 09:12:30 +02:00
Markus Heiser
9197efa2a7 [fix] duckduckgo lite engine: set HTTP header 'Referer'
We have had problems with this before, the bot protection from ddg-lite seems to
have included this referer in the rating [1][2].

From reverse engineering:

- The Referer ``https://google.com/`` was set in commt 257dc7d6c4 --> DDG lite
  does not like this referer anymore!

- The 'Referer' header is only set on second and follow up pages but not on the
  first page

- The vqd value is not needed on the first page, the ddg-lite client sets this
  value only on follow up pages / this can help to reduce the vqd requests from
  SearXNG.

Related to 'Referer' header & ddg requests:

[1] https://github.com/searxng/searxng/pull/2161
[2] https://github.com/searxng/searxng/pull/2081

Closes: https://github.com/searxng/searxng/issues/2796
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-10-10 08:40:53 +02:00
Bnyro
fa5b2a7948 [mod] yacy: use official instance by default and fix crashes 2023-10-09 20:50:24 +02:00
Alex Balgavy
5d53aac20f [mod] add hotkeys option to settings.yml
The change in the hotkey mechanism introduced in 317db5b04 does not allow
configuration via `settings.yml`.  This commit adds that functionality.

Closes: #2898
2023-10-09 18:13:00 +02:00
Hackurei
ff78b1a902 [feat] implement hackernews engine - news.ycombinator.com 2023-10-09 14:00:04 +02:00
Aine
213cb74378 [fix] matrixrooms add proper MRS integration
Related:

- https://github.com/searxng/searxng/issues/2918
2023-10-09 13:25:13 +02:00
Bnyro
48cb58bd2e [feat] duckduckgo: support for videos and news 2023-10-09 06:53:43 +02:00
Bnyro
c3ab49cd90 [fix] kickass: crash when no results 2023-10-07 11:48:23 +02:00
Bnyro
f22daf8b47 [mod] piped: always show video length if available 2023-10-07 11:45:46 +02:00
Bnyro
ce270961e8 [feat] engine: implementation of mastodon 2023-10-06 10:58:23 +02:00
dependabot[bot]
e5e3e22f7c Bump nose2[coverage_plugin] from 0.13.0 to 0.14.0
Bumps [nose2[coverage_plugin]](https://github.com/nose-devs/nose2) from 0.13.0 to 0.14.0.
- [Changelog](https://github.com/nose-devs/nose2/blob/main/docs/changelog.rst)
- [Commits](https://github.com/nose-devs/nose2/compare/0.13.0...0.14.0)

---
updated-dependencies:
- dependency-name: nose2[coverage_plugin]
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 10:29:40 +02:00
dependabot[bot]
60fecf5125 Bump setproctitle from 1.3.2 to 1.3.3
Bumps [setproctitle](https://github.com/dvarrazzo/py-setproctitle) from 1.3.2 to 1.3.3.
- [Release notes](https://github.com/dvarrazzo/py-setproctitle/releases)
- [Changelog](https://github.com/dvarrazzo/py-setproctitle/blob/master/HISTORY.rst)
- [Commits](https://github.com/dvarrazzo/py-setproctitle/compare/version-1.3.2...version-1.3.3)

---
updated-dependencies:
- dependency-name: setproctitle
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 10:29:12 +02:00
dependabot[bot]
f7ca979c8a Bump pylint from 2.17.6 to 3.0.1
Bumps [pylint](https://github.com/pylint-dev/pylint) from 2.17.6 to 3.0.1.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v2.17.6...v3.0.1)

---
updated-dependencies:
- dependency-name: pylint
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 10:22:57 +02:00
dependabot[bot]
4d3c4ff738 Bump babel from 2.12.1 to 2.13.0
Bumps [babel](https://github.com/python-babel/babel) from 2.12.1 to 2.13.0.
- [Release notes](https://github.com/python-babel/babel/releases)
- [Changelog](https://github.com/python-babel/babel/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-babel/babel/compare/v2.12.1...v2.13.0)

---
updated-dependencies:
- dependency-name: babel
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 10:22:30 +02:00
searxng-bot
48f8ac48d1 [translations] update from Weblate
68d743281 - 2023-10-05 - return42 <markus.heiser@darmarit.de>
42f091b7f - 2023-10-05 - return42 <markus.heiser@darmarit.de>
2479c0d7b - 2023-10-05 - ghose <correo@xmgz.eu>
a4e6cd592 - 2023-10-05 - return42 <markus.heiser@darmarit.de>
9d4e5f5c3 - 2023-10-05 - return42 <markus.heiser@darmarit.de>
b79d44775 - 2023-10-05 - gallegonovato <fran-carro@hotmail.es>
746291184 - 2023-10-06 - return42 <markus.heiser@darmarit.de>
f24d7e8b1 - 2023-10-05 - return42 <markus.heiser@darmarit.de>
6140911f9 - 2023-10-05 - Fjuro <ifjuro@proton.me>
2023-10-06 09:19:00 +02:00
Markus Heiser
fd1422a670 [mod] engine - simplify region & lang handling, make filters configurable
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-10-05 10:55:08 +02:00
Bnyro
3e2ae756f0 [feat] engine: implementation of radio-browser.info 2023-10-05 10:55:08 +02:00
Markus Heiser
d56b31d674 [fix] limiter / botdetection: remove http_connection method
Related:

- https://github.com/searxng/searxng/issues/2892#issuecomment-1742153932

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-10-01 20:24:22 +02:00
Jinyuan Huang
e509cb7c45 [typo] solved a typo in yahoo error message. 2023-10-01 08:29:06 +02:00
Jinyuan Huang
d4d9f2073e [fix] Bug: Yahoo results for simplified Chinese search sometimes have the first character cut off #2866
Co-authored-by: Blair Noctis <n@sail.ng>
2023-10-01 08:29:06 +02:00
Alexandre Flament
fb88721532 Upgrade dependencies
* geckodriver: 0.33.0
* node 16.20.2
* pyright 1.1.329
* eslint 8.50.0
2023-10-01 08:25:00 +02:00
Bnyro
fe9386b58d [fix] emojipedia: fix engine 2023-10-01 08:19:45 +02:00
Markus Heiser
32a4ea350e [fix] Revision of the Bing engines
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-10-01 08:01:38 +02:00
jazzzooo
079636c079 [fix] engine - bing fix search, pagination, remove safesearch 2023-10-01 08:01:38 +02:00
Bnyro
5ce1792432 [feat] engine: implementation of pinterest 2023-09-30 15:01:45 +02:00
Bnyro
6096457e4d [fix] matrixrooms.info: pagination not working properly 2023-09-30 14:51:07 +02:00
Markus Heiser
e1a8b8189f [fix] engine - moviepilot instead of thumbnail use img_src
Instead of thumbnail use img_src in the result item, otherwise the "movies"
categories looks clunky.

Related:

- b4e0d2eedc (r128785388)

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-30 11:29:19 +02:00
Bnyro
159629c588 [mod] tagesschau: add option to only use tagesschau urls 2023-09-30 11:00:11 +02:00
Bnyro
2ca60a19fc [feat] engine: implementation of matrixrooms.info 2023-09-30 09:09:23 +02:00
Bnyro
d1a3fc5be6 [feat] engine: implementation of tootfinder 2023-09-29 23:00:30 +02:00
Bnyro
fc4a20f734 [mod] add movies category for tmdb, imdb and moviepilot 2023-09-29 22:37:51 +02:00
Émilien (perso)
0330648b98 [mod] warn to info for failed ping limiter 2023-09-29 22:20:56 +02:00
Bnyro
26fed56d51 [mod] settings.yml: remove plugin settings for plugins that don't exist anymore 2023-09-29 11:26:49 +02:00
dependabot[bot]
7c8a744ae1 Bump selenium from 4.12.0 to 4.13.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.12.0 to 4.13.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.12.0...selenium-4.13.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-29 10:46:52 +02:00
dependabot[bot]
81b7291613 Bump pylint from 2.17.5 to 2.17.6
Bumps [pylint](https://github.com/pylint-dev/pylint) from 2.17.5 to 2.17.6.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v2.17.5...v2.17.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-29 09:57:28 +02:00
searxng-bot
9a065832e0 [translations] update from Weblate
80bbf74ef - 2023-09-27 - return42 <markus.heiser@darmarit.de>
5d554ef71 - 2023-09-27 - BernieHuang2008 <berniehuang2008@163.com>
771fd1b90 - 2023-09-27 - return42 <markus.heiser@darmarit.de>
d412012c8 - 2023-09-27 - y0nei <y0nei@proton.me>
1ac171d0a - 2023-09-27 - return42 <markus.heiser@darmarit.de>
a004c40cc - 2023-09-27 - return42 <markus.heiser@darmarit.de>
47e729f89 - 2023-09-27 - return42 <markus.heiser@darmarit.de>
f85b28cc4 - 2023-09-26 - Fjuro <ifjuro@proton.me>
75ce5d581 - 2023-09-27 - return42 <markus.heiser@darmarit.de>
40ce06009 - 2023-09-24 - nonepork <ptohrek@gmail.com>
21f343f71 - 2023-09-25 - tentsbet <remendne@pentrens.jp>
4c80f80fd - 2023-09-22 - return42 <markus.heiser@darmarit.de>
ef3c859e4 - 2023-09-22 - artnay <jiri.gronroos@iki.fi>
2023-09-29 09:12:12 +02:00
dalf
ae2762eb78 Update searx.data - update_firefox_version.py 2023-09-29 06:58:11 +02:00
dalf
18da3d65c5 Update searx.data - update_ahmia_blacklist.py 2023-09-29 06:57:40 +02:00
dalf
4a66fa3e7d Update searx.data - update_wikidata_units.py 2023-09-29 06:56:50 +02:00
dalf
9be6e20256 Update searx.data - update_engine_traits.py 2023-09-29 06:56:10 +02:00
dalf
d821ec44dd Update searx.data - update_currencies.py 2023-09-29 06:55:04 +02:00
dalf
cdee5aa3b9 Update searx.data - update_engine_descriptions.py 2023-09-29 06:53:05 +02:00
Bnyro
75587d03a6 [fix] categories.html: can't select social media category using search on category select 2023-09-28 10:45:49 +02:00
jazzzooo
e37d775fa2 [fix] engine - currency fix and simplify 2023-09-28 08:29:38 +02:00
Jinyuan Huang
ae28d429c9 [fix] bilibili new api used 2023-09-28 08:24:51 +02:00
jazzzooo
1a66d74673 [fix] engine - kickass update url, fix parsing, use multiple mirrors 2023-09-27 10:19:41 +02:00
Markus Heiser
0c39064d60 Update searx.data - update_engine_traits.py
Update searx.data - update_engine_traits.py

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-27 09:12:38 +02:00
Markus Heiser
b428ccc5a0 [fix] engine brave - fetch traits (modified settings menu)
Brave has changed it settings menu fundamental.  Region codes are no longer in
the HTML page, we have to read the regional codes from a JS:

  https://cdn.search.brave.com/serp/v2/_app/immutable/chunks/parameters.734c106a.js

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-27 09:12:38 +02:00
Markus Heiser
3a456b1282 [fix] engine annas archive - fetch traits (modified xpath selectors)
Anna’s Archive has cleaned up their languages, available file extensions and
changed the HTML form.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-27 09:12:38 +02:00
Jinyuan Huang
1f835a9f1f solve #2839 2023-09-25 23:01:14 +02:00
Markus Heiser
51bcd95a75 [fix] harmonize default settings for caching of /static files
Caching files on the client side for more than a day can confuse the end user
when updating static files[1].

Depending on the way of providing a SearXNG instance via HTTP, there are several
ways to optimize the access to the /static files.  However, since we don't know
what optimization an admin has provided for his static files, we should have
moderate settings in the defaults that run robustly in a wide variety of
installations.

In this sense, all caches on the client side should be cleared after one day at
the latest.  So far the files were cached for one year on client side; as soon
as changes are made to the static files (with the option `static_use_hash:
true`) the old static files are kept for one year on the CLient side / which can
also be evaluated as unnecessary caching.

[1] https://github.com/searxng/searxng/discussions/2821

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-25 22:52:23 +02:00
jazzzooo
3c6549a17f [fix] update user agent 2023-09-25 22:46:22 +02:00
Emilien Devos
ffec8d1b4c add warning about enabling public_instance setting 2023-09-25 22:31:14 +02:00
Emilien Devos
47721a3485 add new parameter called server.public_instance
for enabling by default advanced limiter functions
in the future allow us to add features just for the public instances
2023-09-25 22:31:14 +02:00
Jinyuan Huang
1df4588279 [build] /static 2023-09-25 17:45:21 +02:00
Jinyuan Huang
98366bcf90 [fix] settings icon invisble on mobile devices 2023-09-25 17:45:21 +02:00
Alexandre Flament
19383921d7 /config: expose limiter configuration 2023-09-24 11:01:11 +02:00
Émilien (perso)
1851f27154 [mod] remove twitter (#2843) 2023-09-24 08:32:53 +00:00
Emilien Devos
827af00d9e Revert "[mod] activate limiter & link_token method (aka CSS ping) by default"
This reverts commit 3af629ec09.
2023-09-23 14:16:29 +02:00
Markus Heiser
3af629ec09 [mod] activate limiter & link_token method (aka CSS ping) by default
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-23 14:00:03 +02:00
Markus Heiser
597c68b4aa [doc] move dosc of botdetection from developer to admin section
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-23 14:00:03 +02:00
Bnyro
75c9de02d1 [feat] engine: implementation of imgur 2023-09-22 20:50:53 +02:00
Bnyro
fb72f71f0a [fix] internet archive scholar: crash when there's no title 2023-09-22 18:49:39 +02:00
searxng-bot
0660d20e1d [translations] update from Weblate
f27a3bbd4 - 2023-09-21 - return42 <markus.heiser@darmarit.de>
a97336d0a - 2023-09-21 - return42 <markus.heiser@darmarit.de>
91e8946b3 - 2023-09-19 - return42 <markus.heiser@darmarit.de>
19f53731e - 2023-09-20 - ghose <correo@xmgz.eu>
daf10bd75 - 2023-09-19 - gallegonovato <fran-carro@hotmail.es>
ab004b8b8 - 2023-09-19 - return42 <markus.heiser@darmarit.de>
cdedd99c9 - 2023-09-19 - return42 <markus.heiser@darmarit.de>
2023-09-22 18:05:02 +02:00
dependabot[bot]
37b1becab8 Bump typing-extensions from 4.7.1 to 4.8.0
Bumps [typing-extensions](https://github.com/python/typing_extensions) from 4.7.1 to 4.8.0.
- [Release notes](https://github.com/python/typing_extensions/releases)
- [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/python/typing_extensions/compare/4.7.1...4.8.0)

---
updated-dependencies:
- dependency-name: typing-extensions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-22 18:03:03 +02:00
Bnyro
95885e7f9f [build] /static 2023-09-22 17:54:55 +02:00
Bnyro
8b0b6731fc [fix] search.less: start page search view on mobile devices 2023-09-22 17:54:55 +02:00
Markus Heiser
71358e9c67 Revert "[fix] engine - duckduckgo vqd edge-case"
This reverts commit 102502a4f0.
2023-09-22 09:31:25 +02:00
Bnyro
51236ae47a [feat] engine: implementation of chefkoch.de 2023-09-21 17:23:59 +02:00
jazzzooo
8bcca0e620 [fix] engine - brave don't show ads 2023-09-21 16:55:39 +02:00
jazzzooo
b729542a66 [fix] engine - google images error when no results 2023-09-21 16:38:37 +02:00
Bnyro
f0df53673e [mod] search-syntax.md: add tutorial about the feeling lucky feature 2023-09-21 15:17:23 +02:00
Bnyro
cc2e0537a3 [feat] engine: implementation of google icons/material design icons 2023-09-21 15:16:49 +02:00
Bnyro
c999cfb422 [feat] engine: implementation of wallhaven 2023-09-21 14:25:43 +02:00
jazzzooo
102502a4f0 [fix] engine - duckduckgo vqd edge-case 2023-09-20 20:05:06 +02:00
Markus Heiser
d013f51a25 [fix] Search on category select without JavaScript PR #2740
Small addendum to #2740; search_on_category_select is now no longer a plugin.

Related: https://github.com/searxng/searxng/pull/2740#issuecomment-1725437584
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-19 21:03:02 +02:00
Markus Heiser
0ce10046c4 [build] /static 2023-09-19 20:15:51 +02:00
ormai
a76c8e4101 Improve the layout of the search page on mobile 2023-09-19 20:15:51 +02:00
Émilien (perso)
33496e7f51 Switch back to qwant web normal API 2023-09-19 17:07:22 +02:00
Markus Heiser
043dcbf7c5 [fix] engine qwant (web-lite) - ignore advertising adds
Closes: https://github.com/searxng/searxng/issues/2812
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-19 17:06:56 +02:00
Markus Heiser
3ac7c40b6a [build] /static 2023-09-19 11:15:25 +02:00
Emilien Devos
33e722f83b better error message when no results found 2023-09-19 11:10:48 +02:00
Émilien (perso)
ad725ce7d7 wikipedia wikidata infobox + disable wikisource (#2806)
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-19 10:31:02 +02:00
Bnyro
dcee823345 [feat] implement feeling lucky feature 2023-09-19 09:40:57 +02:00
Markus Heiser
71508abcbf [build] /static 2023-09-19 08:06:06 +02:00
Jinyuan Huang
2ec77ef813 [mod] reformatted keyBindingLayouts in JS client (default, vim) 2023-09-19 08:06:06 +02:00
Markus Heiser
317db5b04f [mod] preferences: implement drop-down menu for hotkeys (default, vim)
Replace the on/off checkbox of the vim-hotkeys in the preferences by a drop-down
menu.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-19 08:06:06 +02:00
Markus Heiser
09935e2897 [build] /static 2023-09-18 21:29:11 +02:00
Bnyro
a55e0ac553 [feat] search on category select without JS
Co-authored-by: Alexandre Flament <alex@al-f.net>
2023-09-18 21:29:11 +02:00
Markus Heiser
90b0bfd1bf [fix] accidentally pushed utils/brand.env
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-18 18:18:37 +02:00
Bnyro
efd3a2d6d1 [feat] engine: implementation of internet archive scholar 2023-09-18 18:12:00 +02:00
jazzzooo
223b3487c3 [fix] spelling 2023-09-18 16:20:27 +02:00
Markus Heiser
a9b6963971 [fix] engine - qwant delivers only 5 pages maximum
all qwant engines (incl qwant-lite) delivers only 5 pages maximum

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-18 01:43:43 +02:00
jazzzooo
da1446c5ed [fix] engine - qwant wrong error type 2023-09-18 01:43:43 +02:00
Markus Heiser
7398d525c8 [fix] qwant: subsequent fix of commit d9dbcedeb
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-17 17:52:56 +02:00
Markus Heiser
d9dbcedeb6 [feat] implementation of qwant lite for web search
Related: https://github.com/searxng/searxng/issues/2719
Replace: https://github.com/searxng/searxng/pull/2748
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-17 16:53:25 +02:00
Bnyro
b4e0d2eedc [feat] engine: implemenation of moviepilot (de) 2023-09-17 14:30:56 +02:00
jazzzooo
7dfcc3386e [fix] tagesschau videos 2023-09-16 18:40:26 +02:00
Markus Heiser
89fbac5763 [build] /static 2023-09-16 13:45:43 +02:00
Jinyuan Huang
92d0c378e0 [fix] keyboard navigation / simple theme (UI)
- avoid loop select
- fix select next item in mixed result lists

Replaces: https://github.com/searxng/searxng/pull/2789
Closes: https://github.com/searxng/searxng/issues/2751
Closes: https://github.com/searxng/searxng/issues/2788
2023-09-16 13:45:43 +02:00
jazzzooo
ec540a967a [fix] brave.videos 2023-09-15 22:00:09 +02:00
jazzzooo
27477f51fd [fix] brave.news 2023-09-15 22:00:09 +02:00
Bnyro
140125e641 [feat] implementation of the movie database 2023-09-15 19:41:37 +02:00
Markus Heiser
b56db4e04e [CI] upgrade actions/checkout@v4 & actions/upload-artifact@v3
Closes: https://github.com/searxng/searxng/issues/2777#issuecomment-1720958570
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-15 14:45:54 +02:00
Bnyro
2b6b811aed [chore] fix typo and spacing in pull request template 2023-09-15 10:46:51 +02:00
dependabot[bot]
70e2f4c66d Bump sphinx from 7.2.5 to 7.2.6
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.2.5 to 7.2.6.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.2.5...v7.2.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-15 09:57:09 +02:00
searxng-bot
4eebb25882 [translations] update from Weblate
4f055ccb8 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
9edaacb09 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
ccb3e8934 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
206640415 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
d8db608c2 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
6db95be68 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
0792cd970 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
949ad5db8 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
0921f948e - 2023-09-11 - return42 <markus.heiser@darmarit.de>
3677f0ccb - 2023-09-11 - return42 <markus.heiser@darmarit.de>
2dea9cd3a - 2023-09-11 - return42 <markus.heiser@darmarit.de>
5038588e8 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
6b63e980b - 2023-09-11 - return42 <markus.heiser@darmarit.de>
858a8660b - 2023-09-11 - return42 <markus.heiser@darmarit.de>
5852633d2 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
92d25097b - 2023-09-11 - return42 <markus.heiser@darmarit.de>
8ae9d7a20 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
989ccd21a - 2023-09-11 - return42 <markus.heiser@darmarit.de>
1c309f3fc - 2023-09-11 - return42 <markus.heiser@darmarit.de>
3ee5e679e - 2023-09-11 - return42 <markus.heiser@darmarit.de>
7420db0cf - 2023-09-11 - return42 <markus.heiser@darmarit.de>
7327ffb1f - 2023-09-11 - return42 <markus.heiser@darmarit.de>
542814e22 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
5f2623600 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
7bea3da45 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
68a854d93 - 2023-09-11 - ghose <correo@xmgz.eu>
1781efe60 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
016a60442 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
00f143119 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
8e61bb7ac - 2023-09-11 - return42 <markus.heiser@darmarit.de>
d04327a41 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
841227415 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
9ed21b385 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
914b774da - 2023-09-11 - return42 <markus.heiser@darmarit.de>
ff7b45ec8 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
4146f8707 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
383602051 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
b050d9ee4 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
8d6e7a20c - 2023-09-11 - return42 <markus.heiser@darmarit.de>
ee77e2072 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
0420f44b6 - 2023-09-11 - return42 <markus.heiser@darmarit.de>
2023-09-15 09:12:13 +02:00
Justas Zabulionis
41ef73ca3a [fix] rumble redirect 2023-09-14 19:21:21 +02:00
Justas Zabulionis
b701ee257b [fix] habrahabr 2023-09-14 18:43:14 +02:00
Justas Zabulionis
be888810ba [fix] pubmed content being None 2023-09-14 18:40:15 +02:00
Justas Zabulionis
cf734e6008 [fix] engine - pub.dev 2023-09-14 18:07:55 +02:00
Justas Zabulionis
92d39de410 [fix] solidtorrents redirects 2023-09-14 18:03:21 +02:00
Justas Zabulionis
cf8a6cf6db [fix] solidtorrents pagination 2023-09-14 18:03:21 +02:00
Justas Zabulionis
8172f89075 [fix] solidtorrents 2023-09-14 18:03:21 +02:00
jazzzooo
74600c028d [fix] engine - Crossref
Crossref was broken on result types journal-issue and component .. The old code
had lots of assumptions, and broke during parsing.  Now the assumptions are more
explicit and checked them with the API.
2023-09-14 17:39:23 +02:00
Markus Heiser
ed6a5a01bb [build] /static 2023-09-14 16:26:10 +02:00
Jinyuan Huang
0984b00b7e [mod] UI smooth scroll added / CSS scroll-behavior
This PR improves the UX by making auto-scroll more smoother.  The css is changed
so all the auto-scroll will be smoother but User-scroll will not be influenced.

  The scroll-behavior CSS property sets the behavior for a scrolling box when
  scrolling is triggered by the navigation or CSSOM scrolling APIs.[1]

[1] https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior
2023-09-14 16:26:10 +02:00
Bnyro
bf7af99ef2 [mod] make data.traits: add Odysee 2023-09-13 21:41:33 +02:00
Bnyro
3568a3cafb [feat] odysee: implement fetch_traits for language support 2023-09-13 21:41:33 +02:00
Bnyro
09c61dabc9 [mod] odysee: time range support 2023-09-13 21:41:33 +02:00
jazzzooo
b98907e91f [fix] engine - piped.music incorrect timestamps 2023-09-13 21:39:37 +02:00
jazzzooo
6039dbf211 [fix] engine - invidious thumbnails 2023-09-13 11:37:42 +02:00
jazzzooo
ed3819bdd5 add inv.tux.pizza 2023-09-13 11:12:01 +02:00
jazzzooo
122b4342eb remove invidious.snopyta.org 2023-09-13 11:12:01 +02:00
jazzzooo
e2a5e183cc [fix] settings.yml - change default invidious instances 2023-09-13 11:12:01 +02:00
jazzzooo
b2fd6304bf [fix] engine - openstreetmap currency rendering 2023-09-13 10:56:52 +02:00
jazzzooo
976b3e21c4 [fix] engine - pypi redirect 2023-09-12 21:14:48 +02:00
jazzzooo
54a3e03b45 [fix] engine - openstreetmap currency matching 2023-09-12 20:57:05 +02:00
Bnyro
64d9587ac8 [feat] new engine: svgrepo 2023-09-12 20:38:36 +02:00
Markus Heiser
aa1453db0c [build] /static 2023-09-12 20:30:50 +02:00
Markus Heiser
a987672340 [mod] improve handling of the hotkeys
- KeyboardEvent: keyCode property is depricated, replaced by key property [2]

- the check for ifDetailOpened is not necessary, because the hotkeys are not
  only applicable to image-results, by example:

   `!goi !go !scc hello`

- Key bindings like h for help are to be used in general (not only in vim-mode)

[1] https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode
[2] https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-12 20:30:50 +02:00
Jinyuan Huang
e6b160da62 [feature] key bindings: left & right arrow are always on 2023-09-12 20:30:50 +02:00
jazzzooo
b189578b6b [fix] engine - brave 2023-09-12 11:31:43 +02:00
Bnyro
f182abd6f8 [mod] library of congress: fix engine 2023-09-11 19:42:31 +02:00
Bnyro
e73a6f5d14 [fix] engine deviantart: review of the result-scrapper
The deviantart site changed and hence deviantart is currently unusable.
2023-09-11 13:22:36 +02:00
Markus Heiser
1f7366060e [build] /static 2023-09-11 12:27:56 +02:00
Markus Heiser
935aed7ca4 [feature] dark theme for code highlighter in the result list
Closes: https://github.com/searxng/searxng/issues/1354

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-11 12:27:56 +02:00
Markus Heiser
432febd810 [README] revision
The searx project has been archived, differentiation of the project in the
README is no longer necessary.  The README has been reduced to the important
entry points for users, maintainers and developers.

Related: 276ffd3f01

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-11 10:23:06 +02:00
dependabot[bot]
e8da9b36a1 Bump brotli from 1.0.9 to 1.1.0
Bumps [brotli](https://github.com/google/brotli) from 1.0.9 to 1.1.0.
- [Release notes](https://github.com/google/brotli/releases)
- [Changelog](https://github.com/google/brotli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/brotli/compare/v1.0.9...v1.1.0)

---
updated-dependencies:
- dependency-name: brotli
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-11 10:02:55 +02:00
Alexandre Flament
d07c006aed Replace chompjs with pure Python code
The new implementation is good enough for the current usage (brave)
2023-09-09 13:02:36 +02:00
Markus Heiser
8e45ac4271 [build] /static 2023-09-09 00:39:51 +02:00
Markus Heiser
15a3dbf7a0 [fix] preferences - layout of the "special queries" tab
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-09 00:39:51 +02:00
Bnyro
9e83c0dedc [feat] engine: implementation of Yummly
Co-authored-by: Markus Heiser <markus.heiser@damarit.de>
2023-09-08 11:47:13 +02:00
Bnyro
a3d7e9c285 [mod] utils.py: add markdown_to_text helper function 2023-09-08 11:47:13 +02:00
Markus Heiser
668b1d55ab [fix] dependabot: ignore Sphinx<=7.1.2
[1] https://github.com/searxng/searxng/pull/2727#issuecomment-1711282706

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-08 11:23:44 +02:00
searxng-bot
c62605b3e3 [translations] update from Weblate
304f6af5c - 2023-09-04 - return42 <markus.heiser@darmarit.de>
76a4b6496 - 2023-09-03 - alexgabi <alexgabi@disroot.org>
2023-09-08 09:20:19 +02:00
Markus Heiser
019bd97f4b [fix] settings.yml - fix docs-links in the comments
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-06 11:35:39 +02:00
Hackurei
1f21ac7d62 [feat] engine: implementation of bilibili https://www.bilibili.com 2023-09-05 22:53:03 +02:00
Markus Heiser
696c35d2c3 [fix] engine - duckduckgo_images / determination of vqd value incorrect
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-05 22:24:51 +02:00
bonswouar
4fb26cd96d [fix] engine duckduckgo weather api changes 2023-09-05 16:55:00 +02:00
Markus Heiser
01be9e0e20 [fix] engine: wikicommons - don't quoute ':|' in URL parameters
From [1]: It seems to be because of [2] For some reason it gets url encoded
twice, resulting in

- ``filetype%253Abitmap%257Cdrawing+birds`` instead of
- ``filetype:bitmap%7Cdrawing+birds``

[1] https://github.com/searxng/searxng/issues/2707
[2] https://github.com/searxng/searxng/blob/master/searx/engines/wikicommons.py#L43

Closes: #2707
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-03 18:45:39 +02:00
Markus Heiser
4f8895c6de [fix] follow-up of 4da7003ae / add missing review from @Bnyro
[1] https://github.com/searxng/searxng/pull/2656#pullrequestreview-1607956209

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-02 09:26:45 +02:00
Hackurei
4da7003ae0 [feat] engine: implementation of odysee 2023-09-02 09:14:12 +02:00
dependabot[bot]
beccec2e1f Bump selenium from 4.11.2 to 4.12.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.11.2 to 4.12.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits/selenium-4.12.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-01 18:41:14 +02:00
Bnyro
9c4e9d3814 [feat] implementation of Wikimedia commons for images 2023-09-01 18:39:24 +02:00
dependabot[bot]
d92c6dbf6c Bump sphinx from 7.1.2 to 7.2.5
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.1.2 to 7.2.5.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.1.2...v7.2.5)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-01 11:29:25 +02:00
searxng-bot
9fce459c7f [translations] update from Weblate
979909acc - 2023-09-01 - return42 <markus.heiser@darmarit.de>
f40af3403 - 2023-08-28 - return42 <markus.heiser@darmarit.de>
2023-09-01 09:29:07 +02:00
Jafar Farganlooj
7af66736c0 Create search-syntax.md fa 2023-08-30 16:39:10 +02:00
Jafar Farganlooj
26cd770cf7 [mod] Persian translation of the about page (fa_IR) 2023-08-30 16:13:44 +02:00
Markus Heiser
ac89b159c1 Bump sphinx-notfound-page from 1.0.0rc1 to 1.0.0
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-30 14:39:27 +02:00
Alexandre Flament
faa4280e1a [mod] bing: resolve redirect without additional requests
Remove the usage of searx.network.multi_requests
The results from Bing contains the target URL encoded in base64
See the u parameter, remove the first two character "a1", and done.

Also add a comment the check of the result_len / pageno
( from https://github.com/searx/searx/pull/1387 )
2023-08-29 07:39:06 +02:00
dalf
f57842b05d Update searx.data - update_firefox_version.py 2023-08-29 07:21:46 +02:00
dalf
a5cd777350 Update searx.data - update_ahmia_blacklist.py 2023-08-29 07:21:21 +02:00
dalf
f361a10af6 Update searx.data - update_currencies.py 2023-08-29 07:20:42 +02:00
dalf
978062bdbe Update searx.data - update_engine_descriptions.py 2023-08-29 07:20:06 +02:00
dalf
f59fd8dc9b Update searx.data - update_wikidata_units.py 2023-08-29 07:17:44 +02:00
Markus Heiser
3294e7cfe4 [fix] reduce error logs related to X-Forwarded-For & X-Real-IP headers
To test start a `make run` instance and query multiple times for `ip` (the
answerer), you should see only once the error message(s):

    ERROR   searx.botdetection            : X-Forwarded-For header is not set!
    ERROR   searx.botdetection            : X-Real-IP header is not set!

[1] https://github.com/searxng/searxng-docker/discussions/174
[2] https://github.com/searxng/searxng-docker/pull/162#issuecomment-1692834457

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-28 08:05:17 +02:00
dependabot[bot]
bad692e0f0 Bump flask from 2.3.2 to 2.3.3
Bumps [flask](https://github.com/pallets/flask) from 2.3.2 to 2.3.3.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/2.3.2...2.3.3)

---
updated-dependencies:
- dependency-name: flask
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-28 08:04:23 +02:00
Bnyro
1428385d1c [mod] preferences.py: add and use BooleanSetting for checkbox preferences 2023-08-27 21:23:43 +02:00
Bnyro
e5535ec078 [feat] settings: replace boolean select preferences with checkboxes 2023-08-27 21:23:43 +02:00
Bnyro
5a5cfc1930 [mod] random answerer: add random hex color generator 2023-08-27 18:59:54 +02:00
Markus Heiser
b0d2cd5ca9 [doc] add documentation of Mwmbl engine & autocompleter
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-27 17:25:26 +02:00
Bnyro
df71c24b20 [mod] autocomplete.py: add support for mwmbl completions 2023-08-27 17:25:26 +02:00
Bnyro
19300a5659 [mod] engine mwmbl: add link to official api docs 2023-08-27 17:25:26 +02:00
Markus Heiser
1e2d11fb57 [dev-env] upgrade Sphinx-doc 7.2.3 and unpin at v7.1.2 on py3.8
- Sphinx-doc 7.2.0 drops py3.8 support [1][2]
- last version with py3.8 support is 7.1.2

Many LTS distributions still have py3.8 which EOL is in 2024-10 [3].

To continue to support a development environment on py3.8 the rigid dependency
in the development environment is unpinned in py3.8 / environment markers [4].

To get 7.2.3. work, a fix in sphinx-notfound-page is needed [5][6].

[1] https://github.com/searxng/searxng/pull/2658#issuecomment-1684867270
[2] https://github.com/sphinx-doc/sphinx/issues/11621
[3] https://devguide.python.org/versions/#supported-versions
[4] https://peps.python.org/pep-0508/#environment-markers
[5] https://github.com/readthedocs/sphinx-notfound-page/issues/219
[6] https://github.com/readthedocs/sphinx-notfound-page/issues/219#issuecomment-1694691135

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-27 17:22:45 +02:00
Alexandre Flament
97b1df1629 [mod] searx.network: memory optimization
Avoid to create a SSLContext in AsyncHTTPTransportNoHttp

See:
* 0f61aa58d6/httpx/_transports/default.py (L271)
* https://github.com/encode/httpx/issues/2298
2023-08-27 11:49:40 +02:00
Alexandre Flament
e16c007c22 [fix] openstreetmap engine
It seems there is an API change:
extratags can be either a dictionnary or None.

This commit avoid crash when extratags is None

Test query "!osm gare du nord"
2023-08-27 11:49:16 +02:00
Markus Heiser
0647f83a3e [fix] google engine: don't overspecify the search query to Google
The method EngineTraits.get_region(..) returns engine's region string
that **best fits** to SearXNG's locale.  This means it returns a
region (country) if only a language is set in the locale.  By example the method
returns for a locale tag `es` a region `ES`.

Google's search parameter `cr` restricts search results to documents originating
in a particular country / in case of a locale tag (language) as described above,
this argument should be unset in the query send to Google.

Closes: https://github.com/searxng/searxng/issues/2672
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-26 07:47:07 +02:00
searxng-bot
7d806d1020 [translations] update from Weblate
a6c2d1988 - 2023-08-22 - shoko <nickskorohod@outlook.com>
38bc33a71 - 2023-08-20 - return42 <markus.heiser@darmarit.de>
0ff21aa3c - 2023-08-19 - MonsoonFire <re1qnb5mq@mozmail.com>
2023-08-25 09:36:49 +02:00
Paul Braeuning
9069da051a Merge pull request #2644 from dalf/update_httpx
Bump httpx 0.21.2 from to 0.24.1
2023-08-24 23:12:06 +02:00
Markus Heiser
4b42644579 [fix] engine google_video: google has changed the layout of the rsponse
Closes: https://github.com/searxng/searxng/issues/2664
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-22 08:34:04 +02:00
Alexandre Flament
b4e4cfc026 Bump httpx 0.21.2 from to 0.24.1 2023-08-21 22:05:12 +02:00
Markus Heiser
d52919cc3e [mod] decrease the weighting of wikivoyage, wikibooks, wikisource and wikiversity
The search engines deliver hits for many search terms [1], but these are usually
not the focus of the user. In order to arrange these hits further down in the
list, their weighting is reduced.

[1] https://github.com/searxng/searxng/pull/2589#issuecomment-1670915089

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-21 21:52:40 +02:00
PlayDay
018b0a9322 [feat] engine: XPath configuration for pkg.go.dev 2023-08-19 19:19:31 +02:00
Bnyro
c59ae91b76 [feat] engine: implementation of mwmbl 2023-08-19 18:23:42 +02:00
searxng-bot
bb9e9ab773 [translations] update from Weblate
d8e4100b6 - 2023-08-16 - return42 <markus.heiser@darmarit.de>
b8e03f3bc - 2023-08-17 - ghose <correo@xmgz.eu>
2023-08-18 19:22:13 +02:00
Markus Heiser
c741fc6f00 [mod] currency_convert: support for showing the answer source url
Show URL of the ddg-search page, not the URL of a (generic) Javascript.  The
latter one is not usefull for the user.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-18 19:07:14 +02:00
Markus Heiser
e2744520f8 [mod] google: support for showing the answer source url
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-18 19:07:14 +02:00
Bnyro
5ec7df3480 [mod] engine duckduckgo definitions: support for answer source 2023-08-18 19:07:14 +02:00
Bnyro
64bc98b5fb [mod] brave: support for showing the answer source url 2023-08-18 19:07:14 +02:00
Markus Heiser
6fc2ee514d [build] /static 2023-08-18 19:07:14 +02:00
Bnyro
13d801b75d [feat] results: show source of suggested answer 2023-08-18 19:07:14 +02:00
Markus Heiser
9100a48541 [mod] improve seekr engines and add documentation
Tis patch adds some more fields to the result items and changed paging to the
``nextResultSet`` given in seekr's JSON response.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-15 16:17:42 +02:00
Bnyro
2bab658d39 [feat] engine: implementation of seekr for news, images and videos 2023-08-15 16:17:42 +02:00
Markus Heiser
7052a1a7cf [drop] engine archive.is / blocked by CAPTCHA [1]
Sadly archive.is is blocked by a CAPTCHA that can't be avoid (at least in a
XPath engine).

[1] https://github.com/searxng/searxng/issues/2643

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-14 08:50:13 +02:00
mrpaulblack
621b09b9b9 [fix] preferences: change engine table category colspan to 8
* this is a small fix to increase the colspan of the category in engine preferences from 7 to 8, since there was a column added
=> fixing a small fallout from 4731290317
2023-08-14 07:11:06 +02:00
ToxyFlog1627
f175574f37 [fix] typos in documentation & messages 2023-08-13 08:50:29 +02:00
Alexandre Flament
4573417b6c uwsgi.ini: remove unused cache2
cache2 was used before PR #1856
2023-08-13 07:55:05 +02:00
Markus Heiser
905ce2a6f6 [doc] add tagesschau API to the debveloper documentation
supplement to the commit e25d1c728

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-11 12:31:03 +02:00
Markus Heiser
01c0ec5d19 [fix] typo in docs/admin/settings/settings_general.rst (doc)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-11 11:07:38 +02:00
Markus Heiser
c348427f07 [update] make pygments.less
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-11 10:54:50 +02:00
dependabot[bot]
9d8a20891a Bump pygments from 2.15.1 to 2.16.1
Bumps [pygments](https://github.com/pygments/pygments) from 2.15.1 to 2.16.1.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.15.1...2.16.1)

---
updated-dependencies:
- dependency-name: pygments
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-11 10:54:50 +02:00
searxng-bot
99df7b84d1 [translations] update from Weblate
12c527bcd - 2023-08-10 - maxch <maxletters@tutanota.com>
ea46b66fc - 2023-08-10 - return42 <markus.heiser@darmarit.de>
ae3d8dcdf - 2023-08-10 - return42 <markus.heiser@darmarit.de>
ab6a59e35 - 2023-08-10 - return42 <markus.heiser@darmarit.de>
1db1affcc - 2023-08-10 - gallegonovato <fran-carro@hotmail.es>
94b682aa0 - 2023-08-10 - Fjuro <ifjuro@proton.me>
07c49bb6c - 2023-08-10 - return42 <markus.heiser@darmarit.de>
2023-08-11 09:17:56 +02:00
Bnyro
c76c999a1e [feat] engine: implementation of anaconda 2023-08-10 23:51:07 +02:00
Bnyro
e25d1c7288 [feat] engine: implementation of German news, Tagesschau
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-10 20:27:54 +02:00
GeckoLinux
2256ba2ffb [mod] settings.yml: move wolframalpha to categ general & disable by default
As suggested in comment [1] as a good compromise between [2] and [3].

This will help users that want Wolfram Alpha instant answers by default with
every query and don't mind the slowness.  It will be disabled by default so it's
fast for all users, and those that need it can enable it as a user-configurable
option without requiring setting up their own instance to change the Wolfram
Alpha categorization.

[1] https://github.com/searxng/searxng/pull/813#issuecomment-1574851572
[2] https://github.com/searxng/searxng/pull/813#issuecomment-1020581765
[3] https://github.com/searxng/searxng/issues/966#issue-1171107451
2023-08-10 14:31:09 +02:00
Bnyro
834e1c3f12 [mod] engine lemmy: increase thumbnail quality to align with theme 2023-08-10 12:58:40 +02:00
Markus Heiser
c381fc001f [mod] settings: remove lemmy from categ 'general' & enable by default
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-10 12:58:40 +02:00
Markus Heiser
fda111c0c9 [mod] engine lemmy: add more info fields to the result items
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-10 12:58:40 +02:00
Bnyro
224f2250ae [feat] engine: support for lemmy communities, posts, comments and users 2023-08-10 12:58:40 +02:00
Bnyro
9f82c39610 [mod] engine google_play: raise error on unsupported category 2023-08-10 12:35:24 +02:00
Bnyro
0a99dc85b9 [mod] engine brave: raise error on unsupported category 2023-08-10 12:35:24 +02:00
Bnyro
4731290317 [mod] settings: show weight of each instance 2023-08-10 10:50:14 +02:00
Markus Heiser
733b795d53 [fix] make flask_babel.gettext() work in engine modules (L10n & threads)
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-08-09 13:27:43 +02:00
allendema_searxng_pi
c00c0c5434 [mod] remove discontinued petalsearch engines 2023-08-09 07:17:40 +02:00
Markus Heiser
b8352eca0c [mod] brave engines: add fetch_traits() / improve language support
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-08 16:21:45 +02:00
Markus Heiser
460bbe5b81 [mod] implement brave (WEB) engine to replace XPath configuration
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-08 16:21:45 +02:00
Bnyro
d151497db3 [feat] engine: brave - support for news 2023-08-08 16:21:45 +02:00
Bnyro
cae06f2781 [feat] engine: brave - support for videos 2023-08-08 16:21:45 +02:00
Bnyro
73364e158e [feat] engine: brave - support for images 2023-08-08 16:21:45 +02:00
Markus Heiser
bcaaae699f [doc] fix some minor typos in the doc-strings of class EngineTraits
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-08 08:15:53 +02:00
Markus Heiser
a2108432f7 [fix] settings.yml: typo in engine name wikipecies -> wikispecies
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-07 10:35:44 +02:00
Markus Heiser
64100db904 [doc] improve documentation of make targets and ./manage script
BTW force modularization of the ./mange script into sub modules:

- utils/lib_sxng_data.sh
- utils/lib_sxng_node.sh
- utils/lib_sxng_static.sh
- utils/lib_sxng_test.sh
- utils/lib_sxng_themes.sh

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-06 19:37:12 +02:00
Markus Heiser
1d0abb7157 [doc] engine bt4g: add documentation to docs/dev/engines/online/
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-06 09:30:48 +02:00
Emilien Devos
0fc8f99ecc [feat] new engine: bt4g added & enabled and disable by default btdigg
Disable btdigg because on most SearXNG instances, SearXNG is blocked by btdigg
due to cloudflare too many requests.

This impementation did not parse the HTML page because there is an API in
XML (RSS).  The RSS feed provides fewer data like amount of seeders/leechers and
the files in the torrent file. It's a tradeoff for a "stable" engine as the XML
from RSS content will change way less than the HTML page.

Closes: https://github.com/searxng/searxng/issues/2553
2023-08-06 09:30:48 +02:00
Julian Marcos
5fcc751856 [fix]: typo in issue template for engine request 2023-08-06 08:53:00 +02:00
Markus Heiser
dad16c0949 [mod] settings.yml: enable engines from Wikimedia Foundation
The Wikimedia wikis [1] engines provide good answers and have short response
times --> no reason to disable these enhgines by default.  BTW: this patch adds
a (sub-) category ``wikimedia`` for the engines [1].

[1] https://meta.wikimedia.org/wiki/Wikimedia_wikis

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-04 19:06:50 +02:00
Markus Heiser
db522cf76d [mod] engine: wikimedia - improve results, add addition settings & doc
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-04 19:06:50 +02:00
Bnyro
7d8c20c80d [feat] new engine: wikispecies 2023-08-04 19:06:50 +02:00
dependabot[bot]
5a5b95df3e Bump selenium from 4.10.0 to 4.11.2
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.10.0 to 4.11.2.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-04 09:54:12 +02:00
dependabot[bot]
996da1fae0 Bump sphinx from 7.1.1 to 7.1.2
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.1.1 to 7.1.2.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.1.1...v7.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-04 09:53:56 +02:00
searxng-bot
9a5e91ce84 [translations] update from Weblate
310daeb72 - 2023-08-03 - return42 <markus.heiser@darmarit.de>
01be8a264 - 2023-08-01 - return42 <markus.heiser@darmarit.de>
2023-08-04 09:30:11 +02:00
Markus Heiser
1b030d4b41 [doc] engine: Yacy
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-03 19:58:51 +02:00
zutto
ca518c6803 add option to change yacy search mode 2023-08-03 19:58:51 +02:00
Markus Heiser
203f1f0928 [fix] engine piped: 'invalid content'
SearXNG does not allow a None value in the content field of a result item.

If the key (shortDescription, uploaderName) in the JSON response from piped
exists but is set to None, SearXNG ignores this result item::

  DEBUG   searx    : result: invalid content: { ..,  'content': None,  ..}

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-03 16:23:36 +02:00
Markus Heiser
207fcc0c8c [mod] engine piped: add paging support
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-03 16:23:36 +02:00
Markus Heiser
ef5831cd84 [mod] engine piped: split into two dedicated engiens for video & music
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-03 16:23:36 +02:00
Markus Heiser
7aa95d2d52 [doc] engine piped: add documentation to docs/dev/engines/online/
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-03 16:23:36 +02:00
Bnyro
636bfdac68 [feat] engine: implementation of Piped 2023-08-03 16:23:36 +02:00
dalf
8b4ba204b7 Update searx.data - update_engine_descriptions.py 2023-07-29 11:02:54 +02:00
dalf
d421385dc6 Update searx.data - update_wikidata_units.py 2023-07-29 11:02:23 +02:00
dalf
290f16207b Update searx.data - update_currencies.py 2023-07-29 11:02:14 +02:00
dalf
fcd2013511 Update searx.data - update_firefox_version.py 2023-07-29 11:01:28 +02:00
dalf
cfa8169509 Update searx.data - update_ahmia_blacklist.py 2023-07-29 09:25:24 +02:00
Markus Heiser
0623d5ae76 [doc] reduce copyright remark in the footer to the SearXNG team
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-07-29 09:18:14 +02:00
dependabot[bot]
112e4c08fd Bump sphinx from 7.0.1 to 7.1.1
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.0.1 to 7.1.1.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.0.1...v7.1.1)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-29 09:18:14 +02:00
searxng-bot
f45d1920d9 [translations] update from Weblate
ba4888c96 - 2023-07-26 - return42 <markus.heiser@darmarit.de>
6ec8a8a28 - 2023-07-22 - return42 <markus.heiser@darmarit.de>
0a7b701b3 - 2023-07-24 - artnay <jiri.gronroos@iki.fi>
c0b34cbdb - 2023-07-23 - MonsoonFire <re1qnb5mq@mozmail.com>
37cbd41c2 - 2023-07-22 - return42 <markus.heiser@darmarit.de>
2023-07-29 08:15:21 +02:00
Markus Heiser
b8fe71a1c2 Merge pull request #2569 from searxng/dependabot/pip/certifi-2023.7.22
Bump certifi from 2023.5.7 to 2023.7.22
2023-07-29 08:13:37 +02:00
dependabot[bot]
d3c3259bc7 Bump pylint from 2.17.4 to 2.17.5
Bumps [pylint](https://github.com/pylint-dev/pylint) from 2.17.4 to 2.17.5.
- [Release notes](https://github.com/pylint-dev/pylint/releases)
- [Commits](https://github.com/pylint-dev/pylint/compare/v2.17.4...v2.17.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-29 08:05:11 +02:00
dependabot[bot]
b0f7d18274 Bump certifi from 2023.5.7 to 2023.7.22
Bumps [certifi](https://github.com/certifi/python-certifi) from 2023.5.7 to 2023.7.22.
- [Commits](https://github.com/certifi/python-certifi/compare/2023.05.07...2023.07.22)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-25 23:08:25 +00:00
mrpaulblack
65d8b1a310 [fix] remove disabled: false from engine definitions in settings.yml
* setting disabled: false is not needed, since it is by default enabled
2023-07-22 18:19:01 +02:00
searxng-bot
51c531d450 [translations] update from Weblate
b7f1e9ae - 2023-07-17 - Hudobni Volk <hudobni.volk@tuta.io>
3c7c821e - 2023-07-16 - alextecplayz <alextec70@outlook.com>
0e305f84 - 2023-07-17 - return42 <markus.heiser@darmarit.de>
80745a22 - 2023-07-15 - tentsbet <remendne@pentrens.jp>
afef0e2e - 2023-07-16 - Salif Mehmed <mail@salif.eu>
4a7687ac - 2023-07-14 - Ivan Gabaldon <admin@inetol.net>
2023-07-22 17:47:05 +02:00
dependabot[bot]
a259bd4d4e Bump pyyaml from 6.0 to 6.0.1
Bumps [pyyaml](https://github.com/yaml/pyyaml) from 6.0 to 6.0.1.
- [Changelog](https://github.com/yaml/pyyaml/blob/6.0.1/CHANGES)
- [Commits](https://github.com/yaml/pyyaml/compare/6.0...6.0.1)

---
updated-dependencies:
- dependency-name: pyyaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-22 17:46:12 +02:00
Paul Braeuning
a446dea1bb Merge pull request #2535 from KiruPoruno/master
theme: fix "#backToTop" button always being clickable
2023-07-19 15:12:57 +02:00
mrpaulblack
b477349824 [build] /static 2023-07-19 15:07:45 +02:00
Kiru
de5c1cedca fix "#backToTop" button always being clickable
`pointer-events` never gets set to "none" when the button is hidden,
allowing you to click the button. And your mouse further changes it's
cursor to the pointer style.
2023-07-19 15:06:09 +02:00
dependabot[bot]
4380fc2bac Bump mock from 5.0.2 to 5.1.0
Bumps [mock](https://github.com/testing-cabal/mock) from 5.0.2 to 5.1.0.
- [Changelog](https://github.com/testing-cabal/mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/testing-cabal/mock/compare/5.0.2...5.1.0)

---
updated-dependencies:
- dependency-name: mock
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-14 10:21:45 +02:00
searxng-bot
b7b184244d [translations] update from Weblate
01350cf1 - 2023-07-13 - return42 <markus.heiser@darmarit.de>
5f037a4d - 2023-07-12 - return42 <markus.heiser@darmarit.de>
820a78ad - 2023-07-12 - return42 <markus.heiser@darmarit.de>
73037743 - 2023-07-12 - return42 <markus.heiser@darmarit.de>
e656795c - 2023-07-09 - Linerly <linerly@protonmail.com>
0ee18285 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
c087c7fb - 2023-07-08 - return42 <markus.heiser@darmarit.de>
6eb318c5 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
3b4a3d1f - 2023-07-08 - return42 <markus.heiser@darmarit.de>
b3187499 - 2023-07-09 - return42 <markus.heiser@darmarit.de>
c1226646 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
2356a402 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
c9a74b52 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
3d9f2938 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
68af8585 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
261a2a72 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
fcea15cf - 2023-07-08 - return42 <markus.heiser@darmarit.de>
7685385e - 2023-07-08 - return42 <markus.heiser@darmarit.de>
ec0a3727 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
0130ddf7 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
b93f9609 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
4a5cdcb3 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
9cba3939 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
d973d937 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
ce076245 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
5c36ccab - 2023-07-08 - return42 <markus.heiser@darmarit.de>
226ff7d4 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
8148a9ed - 2023-07-08 - return42 <markus.heiser@darmarit.de>
840bc189 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
51ffc22e - 2023-07-08 - return42 <markus.heiser@darmarit.de>
394ec63e - 2023-07-08 - return42 <markus.heiser@darmarit.de>
428c16a8 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
218cf51e - 2023-07-08 - return42 <markus.heiser@darmarit.de>
70260934 - 2023-07-09 - ghose <correo@xmgz.eu>
c6244c2b - 2023-07-08 - return42 <markus.heiser@darmarit.de>
b92dc5c1 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
43917957 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
df1bf630 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
d1c00dff - 2023-07-08 - return42 <markus.heiser@darmarit.de>
0a6da54f - 2023-07-08 - return42 <markus.heiser@darmarit.de>
12377e28 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
b5b8ea78 - 2023-07-07 - gallegonovato <fran-carro@hotmail.es>
ec31e65f - 2023-07-08 - return42 <markus.heiser@darmarit.de>
6c33b1fe - 2023-07-08 - return42 <markus.heiser@darmarit.de>
393d390c - 2023-07-08 - return42 <markus.heiser@darmarit.de>
a4f6b353 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
0f8d6b6b - 2023-07-08 - return42 <markus.heiser@darmarit.de>
67f2fc96 - 2023-07-08 - Fjuro <ifjuro@proton.me>
5f2d3f02 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
5ae2b8dc - 2023-07-08 - return42 <markus.heiser@darmarit.de>
0bd4fb1e - 2023-07-08 - return42 <markus.heiser@darmarit.de>
ce768726 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
a22ae2f2 - 2023-07-08 - return42 <markus.heiser@darmarit.de>
b5b8774f - 2023-07-08 - return42 <markus.heiser@darmarit.de>
2023-07-14 10:21:27 +02:00
Paolo Basso
cada89ee36 [feat] engine: re-enables z-library (zlibrary-global.se)
- re-enables z-library as the new domain zlibrary-global.se is now available
  from the open web.   The announcement of the domain:

    https://www.reddit.com/r/zlibrary/comments/13whe08/mod_note_zlibraryglobalse_domain_is_officially/

  It is an official domain, it requires to log in to the "personal" subdomain
  only to download files, but the search works.

- changes the result template of zlibrary to paper.html, filling the appropriate fields
- implements language filtering for zlibrary
- implement zlibrary custom filters (engine traits)
- refactor and document the zlibrary engine
2023-07-07 21:36:51 +02:00
Hackurei
cb92767f19 [feat] enigine: add CrowdView forum search engine 2023-07-07 21:36:11 +02:00
dependabot[bot]
535c6ea39c Bump lxml from 4.9.2 to 4.9.3
Bumps [lxml](https://github.com/lxml/lxml) from 4.9.2 to 4.9.3.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.9.2...lxml-4.9.3)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-07 21:16:21 +02:00
dependabot[bot]
6ece9412eb Bump typing-extensions from 4.7.0 to 4.7.1
Bumps [typing-extensions](https://github.com/python/typing_extensions) from 4.7.0 to 4.7.1.
- [Release notes](https://github.com/python/typing_extensions/releases)
- [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/python/typing_extensions/compare/4.7.0...4.7.1)

---
updated-dependencies:
- dependency-name: typing-extensions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-07 21:14:06 +02:00
searxng-bot
4a2f310da3 [translations] update from Weblate
152f2008 - 2023-07-05 - return42 <markus.heiser@darmarit.de>
9dbf6b22 - 2023-07-01 - return42 <markus.heiser@darmarit.de>
4ad4c00f - 2023-07-01 - Bananhylsa <thayer@hjemmeserver.net>
2023-07-07 21:13:47 +02:00
dependabot[bot]
55d238de2e Bump redis from 4.5.5 to 4.6.0
Bumps [redis](https://github.com/redis/redis-py) from 4.5.5 to 4.6.0.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v4.5.5...v4.6.0)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-05 07:40:27 +02:00
Markus Heiser
5720844fcd [doc] rearranges Settings & Engines docs for better readability
We have built up detailed documentation of the *settings* and the *engines* over
the past few years.  However, this documentation was still spread over various
chapters and was difficult to navigate in its entirety.

This patch rearranges the Settings & Engines documentation for better
readability.

To review new ordered docs::

   make docs.clean docs.live

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-07-01 22:45:19 +02:00
dependabot[bot]
8e8d8dabe9 Bump linuxdoc from 20230506 to 20230629
Bumps [linuxdoc](https://github.com/return42/linuxdoc) from 20230506 to 20230629.
- [Changelog](https://github.com/return42/linuxdoc/blob/master/CHANGELOG)
- [Commits](https://github.com/return42/linuxdoc/commits)

---
updated-dependencies:
- dependency-name: linuxdoc
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-30 11:49:43 +02:00
searxng-bot
81c9a18456 [translations] update from Weblate
2238e87b - 2023-06-28 - jenishngl <jenishngl+codeberg@gmail.com>
c70d228a - 2023-06-24 - nogb <u8cn71wq@yogibo.anonaddy.me>
389c0c62 - 2023-06-24 - return42 <markus.heiser@darmarit.de>
656d9fcb - 2023-06-23 - return42 <markus.heiser@darmarit.de>
a9c9b116 - 2023-06-25 - alma <alma@users.noreply.translate.codeberg.org>
528b845f - 2023-06-24 - nogb <u8cn71wq@yogibo.anonaddy.me>
b8c50f23 - 2023-06-23 - return42 <markus.heiser@darmarit.de>
39f47c0f - 2023-06-23 - return42 <markus.heiser@darmarit.de>
ae0aa811 - 2023-06-24 - Fjuro <ifjuro@proton.me>
c8216259 - 2023-06-26 - lemonadeforlife <nahianlabiblimon44@gmail.com>
2023-06-30 11:49:07 +02:00
dependabot[bot]
69dd54ebf9 Bump typing-extensions from 4.6.3 to 4.7.0
Bumps [typing-extensions](https://github.com/python/typing_extensions) from 4.6.3 to 4.7.0.
- [Release notes](https://github.com/python/typing_extensions/releases)
- [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/python/typing_extensions/compare/4.6.3...4.7.0)

---
updated-dependencies:
- dependency-name: typing-extensions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-30 11:44:36 +02:00
Markus Heiser
e2917e64ff [mod] Upgrade Sphinx from 6.2.1 to 7.0.1
To upgrade Sphinx, MyST-Parser and markdown-it-py must also be updated at the
same time:

Closes: https://github.com/searxng/searxng/pull/2433
Closes: https://github.com/searxng/searxng/pull/2492
Closes: https://github.com/searxng/searxng/pull/2504
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-29 14:33:19 +02:00
dalf
fbb72fc1f4 Update searx.data - update_engine_descriptions.py 2023-06-29 13:59:25 +02:00
Markus Heiser
749b04ac1a Merge [feat] engine: implementation of Anna's Archive
Anna's Archive [1] is a free non-profit online shadow library metasearch engine
providing access to a variety of book resources (also via IPFS), created by a
team of anonymous archivists [2].

[1] https://annas-archive.org/
[2] https://annas-software.org/AnnaArchivist/annas-archive
2023-06-29 13:56:19 +02:00
Markus Heiser
87e7926ae9 [fix] engine: Anna's Archive - grep results from '.js-scroll-hidden' elements
The renderuing of the WEB page is very strange; except the firts position all
other positions of Anna's result page are enclosed in SGML comments.  These
cooments are *uncommented* by some JS code, see query of the class
'.js-scroll-hidden' in Anna's HTML template [1].

[1] https://annas-software.org/AnnaArchivist/annas-archive/-/blob/main/allthethings/templates/macros/md5_list.html

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-29 09:32:57 +02:00
Markus Heiser
e2df6b77a3 [mod] engine: Anna's Archive - additionl settings (content, sort, ext)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-29 09:32:57 +02:00
Markus Heiser
eafc2906f1 [mod] engine: Anna's Archive - fetch search arguments from search form
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-29 09:32:57 +02:00
Paolo Basso
7adb9090e5 [mod] engine: Anna's Archive - add language support 2023-06-29 09:32:57 +02:00
Paolo Basso
e5637fe7b9 [feat] engine: implementation of Anna's Archive
Anna's Archive [1] is a free non-profit online shadow library metasearch engine
providing access to a variety of book resources (also via IPFS), created by a
team of anonymous archivists [2].

[1] https://annas-archive.org/
[2] https://annas-software.org/AnnaArchivist/annas-archive
2023-06-29 09:32:57 +02:00
Markus Heiser
fd26f37073 [upd] make data.all
- ahmia_blacklist.txt
- currencies.json
- engine_descriptions.json
- engine_traits.json
- osm_keys_tags.json
- useragents.json

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-28 21:21:53 +02:00
Markus Heiser
0ebff871a5 [fix] update_currencies.py - AttributeError: 'str' object has no attribute '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-28 21:21:53 +02:00
Markus Heiser
efea962504 [fix] simple template: preferences - add missing icon_smal import
Related: https://github.com/searxng/searxng/commit/2149e88bdd64#r119535272
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-28 18:36:52 +02:00
Paolo Basso
401561cb58 [mod] engine torznab - refactor & option to hide links
- torznab engine using types and clearer code
- torznab option to hide torrent and magnet links.
- document the torznab engine
- add myself to authors

Closes: https://github.com/searxng/searxng/issues/1124
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-28 10:03:44 +02:00
Markus Heiser
da7c30291d [fix] Google API changed
It seems that Google is rolling out a modified WEB API [1][2].

In the past there was only the UI language in the `hl` argument but nowadays it
seems a combination of the UI language and the "search region" is mixed in this
argument and the `gl` argument has been removed.  I'm very surprised that google
is starting to mix the parameters of the UI with the parameters of the search
index.

This patch modifies the get_google_info(..) function.  Beside Google-WEB this
function is also used by other Google services, here are some examples to test
region & language of ..

- Google-WEB:    `!go dragon boat :en-CA`
- Google-News:   `!gon dragon boat :en-CA`
- Google-Videos: `!gov bmw :en-CA`
- Goolge-Images  `!goi bmw :en-CA`

- [1] https://github.com/searxng/searxng/issues/2515#issuecomment-1606294635
- [2] https://github.com/searxng/searxng/issues/2515#issuecomment-1607150817

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-26 18:28:09 +02:00
Markus Heiser
e8706fb738 [fix] engine & network issues / documentation and type annotations
This patch fixes some quirks and issues related to the engines and the network.
Each engine has its own network and this network was broken for the following
engines[1]:

- archlinux
- bing
- dailymotion
- duckduckgo
- google
- peertube
- startpage
- wikipedia

Since the files have been touched anyway, the type annotaions of the engine
modules has also been completed so that error messages from the type checker are
no longer reported.

Related and (partial) fixed issue:

- [1] https://github.com/searxng/searxng/issues/762#issuecomment-1605323861
- [2] https://github.com/searxng/searxng/issues/2513
- [3] https://github.com/searxng/searxng/issues/2515

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-25 13:58:26 +02:00
searxng-bot
2e4a435134 [translations] update from Weblate
9512b92a - 2023-06-23 - Coccocoas_Helper <coccocoahelper@gmail.com>
ca08c51e - 2023-06-23 - Coccocoas_Helper <coccocoahelper@gmail.com>
56ad4f21 - 2023-06-21 - return42 <markus.heiser@darmarit.de>
3ee419d6 - 2023-06-21 - return42 <markus.heiser@darmarit.de>
2023-06-23 09:34:46 +02:00
Markus Heiser
86db08793b [fix] implement a JSONEncoder for the json format
This patch implements a simple JSONEncoder just to fix #2502 / on the long term
SearXNG needs a data schema for the result items and a json generator for the
result list.

Closes: https://github.com/searxng/searxng/issues/2505
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-19 19:49:44 +02:00
Markus Heiser
fa1ef9a07b [mod] move some code from webapp module to webutils module (no functional 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>
2023-06-19 19:49:44 +02:00
searxng-bot
71b6ff07ca [translations] update from Weblate
98f61c70 - 2023-06-15 - alexgabi <alexgabi@disroot.org>
a1679b93 - 2023-06-13 - return42 <markus.heiser@darmarit.de>
ebd1d574 - 2023-06-13 - return42 <markus.heiser@darmarit.de>
b28a1da3 - 2023-06-13 - return42 <markus.heiser@darmarit.de>
56409bf0 - 2023-06-11 - return42 <markus.heiser@darmarit.de>
abc4916c - 2023-06-10 - return42 <markus.heiser@darmarit.de>
b1900abe - 2023-06-10 - return42 <markus.heiser@darmarit.de>
b48e84c4 - 2023-06-10 - return42 <markus.heiser@darmarit.de>
bf395e32 - 2023-06-10 - return42 <markus.heiser@darmarit.de>
c9c0a3c9 - 2023-06-10 - return42 <markus.heiser@darmarit.de>
3f50d31e - 2023-06-10 - return42 <markus.heiser@darmarit.de>
9da1c142 - 2023-06-09 - artnay <jiri.gronroos@iki.fi>
2023-06-16 09:20:43 +02:00
Markus Heiser
825846ed4b [doc] settings.yml: add missing $SEARXNG_REDIS_URL to the docs
Closes: https://github.com/searxng/searxng/issues/2499
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-16 07:49:41 +02:00
Markus Heiser
1f0fb3122d [doc] code and sytle injection is not supported by the simple theme
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-13 11:57:40 +02:00
Markus Heiser
5f11155ccb Merge pull request #2494 from searxng/dependabot/pip/master/pallets-sphinx-themes-2.1.1
Bump pallets-sphinx-themes from 2.1.0 to 2.1.1
2023-06-10 08:14:27 +02:00
dependabot[bot]
5f39b7ace0 Bump pallets-sphinx-themes from 2.1.0 to 2.1.1
Bumps [pallets-sphinx-themes](https://github.com/pallets/pallets-sphinx-themes) from 2.1.0 to 2.1.1.
- [Release notes](https://github.com/pallets/pallets-sphinx-themes/releases)
- [Changelog](https://github.com/pallets/pallets-sphinx-themes/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/pallets-sphinx-themes/compare/2.1.0...2.1.1)

---
updated-dependencies:
- dependency-name: pallets-sphinx-themes
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-10 05:20:21 +00:00
Markus Heiser
7db28944f0 Merge pull request #2493 from searxng/dependabot/pip/master/selenium-4.10.0
Bump selenium from 4.9.1 to 4.10.0
2023-06-10 07:19:41 +02:00
dependabot[bot]
f6cbc3630a Bump selenium from 4.9.1 to 4.10.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.9.1 to 4.10.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.9.1...selenium-4.10.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-09 07:56:59 +00:00
Markus Heiser
280a66b24b Merge pull request #2491 from searxng/translations_update
Update translations
2023-06-09 09:25:24 +02:00
searxng-bot
1be27d5d83 [translations] update from Weblate
b40da1a3 - 2023-06-06 - return42 <markus.heiser@darmarit.de>
666ee7d4 - 2023-06-06 - return42 <markus.heiser@darmarit.de>
1e0e8ead - 2023-06-06 - return42 <markus.heiser@darmarit.de>
404b9937 - 2023-06-07 - Ivan Gabaldon <admin@inetol.net>
a627f9a1 - 2023-06-04 - return42 <markus.heiser@darmarit.de>
a234d2f8 - 2023-06-04 - gallegonovato <fran-carro@hotmail.es>
cc41f9b5 - 2023-06-02 - return42 <markus.heiser@darmarit.de>
24651eac - 2023-06-02 - return42 <markus.heiser@darmarit.de>
c37b0627 - 2023-06-02 - return42 <markus.heiser@darmarit.de>
9a435ea1 - 2023-06-02 - return42 <markus.heiser@darmarit.de>
40e0adad - 2023-06-02 - return42 <markus.heiser@darmarit.de>
6833b142 - 2023-06-02 - return42 <markus.heiser@darmarit.de>
00f397ad - 2023-06-02 - tentsbet <remendne@pentrens.jp>
7d3d4a97 - 2023-06-02 - return42 <markus.heiser@darmarit.de>
f7d713a4 - 2023-06-02 - return42 <markus.heiser@darmarit.de>
b1ec3160 - 2023-06-03 - ghose <correo@xmgz.eu>
04591a3a - 2023-06-02 - return42 <markus.heiser@darmarit.de>
cb3ac67c - 2023-06-02 - return42 <markus.heiser@darmarit.de>
fe81dbc7 - 2023-06-02 - return42 <markus.heiser@darmarit.de>
7882670f - 2023-06-02 - return42 <markus.heiser@darmarit.de>
38882f3b - 2023-06-02 - return42 <markus.heiser@darmarit.de>
c6df5047 - 2023-06-02 - return42 <markus.heiser@darmarit.de>
6ca23c3b - 2023-06-02 - return42 <markus.heiser@darmarit.de>
72f1ee09 - 2023-06-02 - return42 <markus.heiser@darmarit.de>
2023-06-09 07:07:51 +00:00
Markus Heiser
b295b497f7 Merge pull request #2484 from return42/limiter-ip_lists
[mod] limiter: blocklist and passlist (ip_lists)
2023-06-06 09:09:20 +02:00
Markus Heiser
22b13f4fa5 [mod] tools.Config.get(): add missing type annotations
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-05 14:07:19 +02:00
Markus Heiser
f3763d73ad [mod] limiter: blocklist and passlist (ip_lists)
A blocklist and a passlist can be configured in /etc/searxng/limiter.toml::

    [botdetection.ip_lists]
    pass_ip = [
      '51.15.252.168',  # IPv4 of check.searx.space
    ]

    block_ip = [
      '93.184.216.34',  # IPv4 of example.org
    ]

Closes: https://github.com/searxng/searxng/issues/2127
Closes: https://github.com/searxng/searxng/pull/2129
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-05 14:07:19 +02:00
Markus Heiser
de2f396e50 Merge pull request #2489 from return42/remove-marginalia-cfg
[fix] engines: don't spam marginalia.nu with default settings
2023-06-05 09:24:36 +02:00
Markus Heiser
f77807257b [fix] engines: don't spam marginalia.nu with default settings
The engine configuration of marginalia [2][3][4][5] spams marginalia.nu with
requests from SearXNG instances [1].  It is not in the interest of SearXNG to
disturb other FOSS projects, so the engine will be removed::

    - name: marginalia
      engine: json_engine
      shortcut: mar
      categories: general
      paging: false
      # Key and license: https://www.marginalia.nu/marginalia-search/api/
      # index: 0 popular, 1 blogs, 2 big_sites, 3 default, 4 experimental
      search_url: https://api.marginalia.nu/<insert your key here>/search/{query}?index=4&count=20
      results_query: results
      url_query: url
      title_query: title
      content_query: description
      timeout: 1.5
      disabled: true
      about:
        website: https://www.marginalia.nu/
        official_api_documentation: https://api.marginalia.nu/
        use_official_api: true
        require_api_key: true
        results: JSON

[1] https://github.com/searxng/searxng/issues/1673
[2] https://github.com/searxng/searxng/pull/1627
[3] https://github.com/searxng/searxng/issues/1620
[4] https://news.ycombinator.com/item?id=35874640
[5] d82a858491/code/services-satellite/api-service/src/main/java/nu/marginalia/api/svc/ResponseCache.java (L12-L20)

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-05 08:23:17 +02:00
Markus Heiser
80aaef6c95 Merge pull request #2357 / limiter -> botdetection
The monolithic implementation of the limiter was divided into methods and
implemented in the Python package searx.botdetection.  Detailed documentation on
the methods has been added.

The methods are divided into two groups:

1. Probe HTTP headers

- Method http_accept
- Method http_accept_encoding
- Method http_accept_language
- Method http_connection
- Method http_user_agent

2. Rate limit:

- Method ip_limit
- Method link_token (new)

The (reduced) implementation of the limiter is now in the module
searx.botdetection.limiter.  The first group was transferred unchanged to this
module.  The ip_limit contains the sliding windows implemented by the limiter so
far.

This merge also fixes some long outstandig issue:

- limiter does not evaluate the Accept-Language correct [1]
- limiter needs a IPv6 prefix to block networks instead of IPs [2]

Without additional configuration the limiter works as before (apart from the
bugfixes).  For the commissioning of additional methods (link_toke), a
configuration must be made in an additional configuration file.  Without this
configuration, the limiter runs as before (zero configuration).

The ip_limit Method implements the sliding windows of the vanilla limiter,
additionally the link_token method can be used in this method.  The link_token
method can be used to investigate whether a request is suspicious. To activate
the link_token method in the ip_limit method add the following to your
/etc/searxng/limiter.toml::

    [botdetection.ip_limit]
    link_token = true


[1] https://github.com/searxng/searxng/issues/2455
[2] https://github.com/searxng/searxng/issues/2477
2023-06-03 06:00:15 +02:00
Markus Heiser
1a1ab34d9d [fix] URL percent-encoding in translations fail in babel
Closes: https://github.com/searxng/searxng/issues/2482
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-02 20:30:41 +02:00
Markus Heiser
1541f8660e Merge pull request #2481 / [mod] template preferences: split into elements
HINT: this patch has no functional change / it is the preparation for following changes and bugfixes

Over the years, the preferences template became an unmanageable beast. To make the source code more readable the monolith is splitted into elements. The splitting into elements also has the advantage that a new template can make use of them.

The reversed checkbox is a quirk that is only used in the prefereces and must be eliminated in the long term. For this the macro 'checkbox_onoff_reversed' was added to the preferences.html template. The 'checkbox' macro is also a quirk of the preferences.html we don't want to use in other templates (it is an input-checkbox in a HTML form that was misused for status display).
2023-06-02 19:55:43 +02:00
Markus Heiser
b867c39ce0 [build] /static 2023-06-02 19:05:43 +02:00
Markus Heiser
2149e88bdd [mod] template preferences: split into elements (no functional change)
HINT: this patch has no functional change / it is the preparation for following
      changes and bugfixes

Over the years, the preferences template became an unmanageable beast.  To make
the source code more readable the monolith is splitted into elements.  The
splitting into elements also has the advantage that a new template can make use
of them.

The reversed checkbox is a quirk that is only used in the prefereces and must be
eliminated in the long term.  For this the macro 'checkbox_onoff_reversed' was
added to the preferences.html template.  The 'checkbox' macro is also a quirk of
the preferences.html we don't want to use in other templates (it is an
input-checkbox in a HTML form that was misused for status display).

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-02 19:05:43 +02:00
dependabot[bot]
d289a8b225 Bump typing-extensions from 4.6.2 to 4.6.3
Bumps [typing-extensions](https://github.com/python/typing_extensions) from 4.6.2 to 4.6.3.
- [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/python/typing_extensions/compare/4.6.2...4.6.3)

---
updated-dependencies:
- dependency-name: typing-extensions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-02 10:04:46 +02:00
searxng-bot
789b43ab60 [translations] update from Weblate
5344314f - 2023-05-30 - return42 <markus.heiser@darmarit.de>
ee8fd955 - 2023-06-01 - BBTranslate <357835338@qq.com>
1ce31caf - 2023-05-29 - return42 <markus.heiser@darmarit.de>
fe75c53d - 2023-05-29 - return42 <markus.heiser@darmarit.de>
ca60af52 - 2023-05-30 - return42 <markus.heiser@darmarit.de>
f34b88f3 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
22d76a26 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
43d8c982 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
43a92e85 - 2023-05-30 - return42 <markus.heiser@darmarit.de>
2bfc12dd - 2023-05-29 - return42 <markus.heiser@darmarit.de>
e2b5fb5f - 2023-05-29 - return42 <markus.heiser@darmarit.de>
9f088420 - 2023-05-30 - return42 <markus.heiser@darmarit.de>
bdf81b4c - 2023-05-29 - return42 <markus.heiser@darmarit.de>
f6a24c5d - 2023-05-30 - return42 <markus.heiser@darmarit.de>
01bcea56 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
8c0209f8 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
c629c610 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
a4e4945d - 2023-05-29 - return42 <markus.heiser@darmarit.de>
96bad166 - 2023-06-01 - mradalbert <mister.adalbert@gmail.com>
b0032d90 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
366adaef - 2023-05-29 - return42 <markus.heiser@darmarit.de>
2e4271bf - 2023-05-29 - return42 <markus.heiser@darmarit.de>
c5856fd6 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
790b5a6f - 2023-05-29 - return42 <markus.heiser@darmarit.de>
6c9f92a9 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
f5a6a35d - 2023-05-29 - return42 <markus.heiser@darmarit.de>
4c8eeb32 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
7b8c0618 - 2023-05-30 - nicfab <nicfab@icloud.com>
4e851dd4 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
0fa6006e - 2023-05-29 - return42 <markus.heiser@darmarit.de>
877f4396 - 2023-05-30 - return42 <markus.heiser@darmarit.de>
c3bb1da7 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
e66e6fae - 2023-05-30 - return42 <markus.heiser@darmarit.de>
1cac4771 - 2023-05-30 - return42 <markus.heiser@darmarit.de>
949e994f - 2023-05-28 - ghose <correo@xmgz.eu>
8b181582 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
65f8fb93 - 2023-05-30 - return42 <markus.heiser@darmarit.de>
e5088e1c - 2023-05-29 - return42 <markus.heiser@darmarit.de>
f151100c - 2023-05-29 - return42 <markus.heiser@darmarit.de>
51d169fa - 2023-05-29 - return42 <markus.heiser@darmarit.de>
e68ac961 - 2023-05-30 - return42 <markus.heiser@darmarit.de>
c336c5a1 - 2023-05-31 - dom1torii <djmdmitri.a@gmail.com>
88bda0d0 - 2023-05-30 - Fijxu <fijxu@zzls.xyz>
6a57c29a - 2023-05-29 - return42 <markus.heiser@darmarit.de>
0c585b4d - 2023-05-30 - return42 <markus.heiser@darmarit.de>
e8ca9891 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
817b2da4 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
6b2508aa - 2023-05-29 - return42 <markus.heiser@darmarit.de>
3a5b1842 - 2023-05-30 - return42 <markus.heiser@darmarit.de>
fd826ab8 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
a3938c43 - 2023-05-30 - return42 <markus.heiser@darmarit.de>
30cad6b2 - 2023-05-30 - Ivan Gabaldon <admin@inetol.net>
e997055f - 2023-05-30 - return42 <markus.heiser@darmarit.de>
de6bd3d8 - 2023-05-30 - return42 <markus.heiser@darmarit.de>
ba5e0129 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
e48fd248 - 2023-05-29 - return42 <markus.heiser@darmarit.de>
b0e7d3f1 - 2023-05-30 - return42 <markus.heiser@darmarit.de>
2023-06-02 09:34:36 +02:00
Markus Heiser
80af38d37b [mod] increase SUSPICIOUS_IP_WINDOW from one day to 30 days
In my tests I see bots rotating IPs (with endless IP lists).  If such a bot has
100 IPs and has three attempts (SUSPICIOUS_IP_MAX = 3) then it can successfully
send up to 300 requests in one day while rotating the IP.  To block the bots for
a longer period of time the SUSPICIOUS_IP_WINDOW, as the time period in which an
IP is observed, must be increased.

For normal WEB-browsers this is no problem, because the SUSPICIOUS_IP_WINDOW is
deleted as soon as the CSS with the token is loaded.

SUSPICIOUS_IP_WINDOW = 3600 * 24 * 30
  Time (sec) before sliding window for one suspicious IP expires.

SUSPICIOUS_IP_MAX = 3
  Maximum requests from one suspicious IP in the :py:obj:`SUSPICIOUS_IP_WINDOW`."""

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-01 16:00:49 +02:00
Markus Heiser
281e36f4b7 [fix] limiter: replace real_ip by IPv4/v6 network
Closes: https://github.com/searxng/searxng/issues/2477
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-01 15:51:14 +02:00
Markus Heiser
38431d2e14 [fix] correct determination of the IP for the request
For correct determination of the IP to the request the function
botdetection.get_real_ip() is implemented.  This fonction is used in the
ip_limit and link_token method of the botdetection and it is used in the
self_info plugin.

A documentation about the X-Forwarded-For header has been added.

[1] https://github.com/searxng/searxng/pull/2357#issuecomment-1566211059

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-01 14:38:53 +02:00
Markus Heiser
b8c7c2c9aa [mod] botdetection - improve ip_limit and link_token methods
- counting requests in LONG_WINDOW and BURST_WINDOW is not needed when the
  request is validated by the link_token method [1]

- renew a ping-key on validation [2], this is needed for infinite scrolling,
  where no new token (CSS) is loaded. / this does not fix the BURST_MAX issue in
  the vanilla limiter

- normalize the counter names of the ip_limit method to 'ip_limit.*'

- just integrate the ip_limit method straight forward in the limiter plugin /
  non intermediate code --> ip_limit now returns None or a werkzeug.Response
  object that can be passed by the plugin to the flask application / non
  intermediate code that returns a tuple

[1] https://github.com/searxng/searxng/pull/2357#issuecomment-1566113277
[2] https://github.com/searxng/searxng/pull/2357#discussion_r1208542206
[3] https://github.com/searxng/searxng/pull/2357#issuecomment-1566125979

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-01 14:38:53 +02:00
Markus Heiser
52f1452c09 [mod] limiter: ip_limt - monitore suspicious IPs
To intercept bots that get their IPs from a range of IPs, there is a
``SUSPICIOUS_IP_WINDOW``.  In this window the suspicious IPs are stored for a
longer time.  IPs stored in this sliding window have a maximum of
``SUSPICIOUS_IP_MAX`` accesses before they are blocked.  As soon as the IP makes
a request that is not suspicious, the sliding window for this IP is droped.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-01 14:38:53 +02:00
Markus Heiser
9d7456fd6c [fix] limiter.toml: botdetection.ip_limit turn off link_token by default
To activate the ``link_token`` method in the ``ip_limit`` method add the
following to your ``/etc/searxng/limiter.toml``::

   [botdetection.ip_limit]
   link_token = true

Related: https://github.com/searxng/searxng/pull/2357#issuecomment-1554116941
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-01 14:38:53 +02:00
Markus Heiser
66fdec0eb9 [mod] limiter: add config file /etc/searxng/limiter.toml
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-06-01 14:38:53 +02:00
Markus Heiser
1ec325adcc [mod] limiter -> botdetection: modularization and documentation
In order to be able to meet the outstanding requirements, the implementation is
modularized and supplemented with documentation.

This patch does not contain functional change, except it fixes issue #2455

----

Aktivate limiter in the settings.yml and simulate a bot request by::

    curl -H 'Accept-Language: de-DE,en-US;q=0.7,en;q=0.3' \
         -H 'Accept: text/html'
         -H 'User-Agent: xyz' \
         -H 'Accept-Encoding: gzip' \
         'http://127.0.0.1:8888/search?q=foo'

In the LOG:

    DEBUG   searx.botdetection.link_token : missing ping for this request: .....

Since ``BURST_MAX_SUSPICIOUS = 2`` you can repeat the query above two time
before you get a "Too Many Requests" response.

Closes: https://github.com/searxng/searxng/issues/2455
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-05-29 14:54:56 +02:00
Markus Heiser
5226044c13 [mod] limiter: add random token to the limiter URL
By adding a random component in the limiter URL a bot can no longer send a ping
by request a static URL.

Related: https://github.com/searxng/searxng/pull/2357#issuecomment-1518525094
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-05-29 14:54:56 +02:00
Markus Heiser
dba569462d [mod] limiter: reduce request rates for requests without a ping
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-05-29 14:54:56 +02:00
dalf
c1b5ff7e1c Update searx.data - update_engine_descriptions.py 2023-05-29 07:28:50 +02:00
dalf
2ba50d392e Update searx.data - update_currencies.py 2023-05-29 07:28:18 +02:00
dalf
cb843ef13c Update searx.data - update_engine_traits.py 2023-05-29 07:27:40 +02:00
dalf
512e001277 Update searx.data - update_firefox_version.py 2023-05-29 07:27:07 +02:00
dalf
f03ac9b152 Update searx.data - update_wikidata_units.py 2023-05-29 07:26:47 +02:00
dalf
e12e350f7f Update searx.data - update_ahmia_blacklist.py 2023-05-29 07:26:20 +02:00
Markus Heiser
3ca97cf5e3 [fix] simple theme: move engine alerts in case of no results into sidebar
If there were no results but errors in the engines then the error dialogs of the
engines was displayed in the result list.

With the new design errors of the engines should only be displayed in the
sidebar and at the same time duplications of the (template) code will be
avoided.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-05-28 12:19:32 +02:00
mrpaulblack
60b94dfdca [build] /static 2023-05-28 12:19:32 +02:00
mrpaulblack
f087959b02 [mod] simple theme: build design for details (collapsables)
* set border top and bottom on sidebar collasables
* inrease peading on summary so its easier to click on mobile
* remove margins and add flex wrapper to normalize elements in sidebar
2023-05-28 12:19:32 +02:00
Markus Heiser
b7e315563d [mod] simple theme: collaps/expand elements in the sidebar
Make elements in the sidebar collapse able.  Except infoboxes all elements in
the sidebar are collapsed by default.

By folding out the sidebar elements, the UI looks less cluttered.  Especially on
small devices like smartphones, where the sidebar is above the results list, the
UX should be improved [1].

[1] https://github.com/searxng/searxng/issues/2140

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-05-28 12:19:32 +02:00
Markus Heiser
79c02456c1 Merge pull request #2462 from return42/fix-typos
[doc] fix tyops in docs/dev/reST.rst
2023-05-26 12:06:19 +02:00
Markus Heiser
64cbe80d05 Merge pull request #2459 from searxng/translations_update
Update translations
2023-05-26 12:03:58 +02:00
Markus Heiser
ce3230f365 Merge pull request #2460 from searxng/dependabot/pip/master/typing-extensions-4.6.2
Bump typing-extensions from 4.5.0 to 4.6.2
2023-05-26 12:03:05 +02:00
Markus Heiser
620415f4cf Merge pull request #2461 from searxng/dependabot/pip/master/yamllint-1.32.0
Bump yamllint from 1.31.0 to 1.32.0
2023-05-26 12:02:14 +02:00
Markus Heiser
68a0e1bfc3 [doc] fix tyops in docs/dev/reST.rst
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-05-26 11:51:35 +02:00
dependabot[bot]
5137452677 Bump yamllint from 1.31.0 to 1.32.0
Bumps [yamllint](https://github.com/adrienverge/yamllint) from 1.31.0 to 1.32.0.
- [Changelog](https://github.com/adrienverge/yamllint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/adrienverge/yamllint/compare/v1.31.0...v1.32.0)

---
updated-dependencies:
- dependency-name: yamllint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-26 07:56:43 +00:00
dependabot[bot]
8ce08f201b Bump typing-extensions from 4.5.0 to 4.6.2
Bumps [typing-extensions](https://github.com/python/typing_extensions) from 4.5.0 to 4.6.2.
- [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/python/typing_extensions/compare/4.5.0...4.6.2)

---
updated-dependencies:
- dependency-name: typing-extensions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-26 07:56:37 +00:00
searxng-bot
e8054026fb [translations] update from Weblate
69171f12 - 2023-05-25 - fabiosantoscode <fabiosantosart@gmail.com>
2caaed0a - 2023-05-23 - trmx <borcan.cristian1@gmail.com>
84d1702b - 2023-05-21 - return42 <markus.heiser@darmarit.de>
65cc6eb8 - 2023-05-21 - return42 <markus.heiser@darmarit.de>
e0ab3383 - 2023-05-22 - return42 <markus.heiser@darmarit.de>
23e87f15 - 2023-05-21 - return42 <markus.heiser@darmarit.de>
14f0fc6b - 2023-05-21 - return42 <markus.heiser@darmarit.de>
5b7c7b7d - 2023-05-21 - return42 <markus.heiser@darmarit.de>
c725b38d - 2023-05-21 - return42 <markus.heiser@darmarit.de>
2023-05-26 07:08:21 +00:00
Markus Heiser
b2d0b74357 Merge pull request #2453 from return42/fix-typo
[fix] typo: dues --> does
2023-05-22 13:23:48 +02:00
Markus Heiser
ebe22a4319 [fix] typo: dues --> does
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-05-22 13:18:22 +02:00
Markus Heiser
cea277ce52 Merge pull request #2452 from return42/fix-2434
[fix] ClientPref - don't raise exception if Accept-Language is invalid
2023-05-22 12:46:26 +02:00
Markus Heiser
bc647fabaf [fix] ClientPref - don't raise exception if Accept-Language is invalid
If the Accept-Language header [1] is set but empty or holds a value that is
unknown to babel, an excpetion is raised::

    $ curl --header 'Accept-Language: xyz' 'http://127.0.0.1:8888/search?q=foo'
    ...
    Traceback (most recent call last):
      File "searx/preferences.py", line 335, in from_http_request
        return cls(locale=pairs[0][0])
    IndexError: list index out of range

[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language

Reported by: @Eolien55 in https://github.com/searxng/searxng/issues/2434#issuecomment-1556199789
Closes: https://github.com/searxng/searxng/issues/2434
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-05-22 12:38:59 +02:00
Markus Heiser
73c023bbea Merge pull request #2451 from return42/doc-captcha-from-server-ip
[doc] answer CAPTCHA from server's IP
2023-05-22 10:59:27 +02:00
Markus Heiser
0ee27ba3aa [doc] answer CAPTCHA from server's IP
Related: https://github.com/searxng/searxng/issues/2011#issuecomment-1553317619
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-05-22 10:46:10 +02:00
Markus Heiser
ddbab4b3c9 Merge pull request #2450 from return42/lxc-doc
[doc] update & fix documentation of the "SearXNG LXC suite"
2023-05-21 18:26:14 +02:00
Markus Heiser
c9833ded9f [doc] update & fix documentation of the "SearXNG LXC suite"
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-05-21 18:12:39 +02:00
Markus Heiser
d867bf17e6 Merge pull request #2447 from searxng/dependabot/pip/master/linuxdoc-20230506
Bump linuxdoc from 20230321 to 20230506
2023-05-19 20:08:11 +02:00
Markus Heiser
bab730c8a8 Merge pull request #2446 from searxng/translations_update
Update translations
2023-05-19 19:59:58 +02:00
Markus Heiser
7b2f1079f6 Merge pull request #2448 from Pankwings/logger_warning
use logger.warning
2023-05-19 19:58:47 +02:00
pankaj
4900c091a6 use logger.warning
logger.warn() is depricated.
logger.warning is already being used in some files.
2023-05-19 19:35:29 +05:30
dependabot[bot]
ef31fa8097 Bump linuxdoc from 20230321 to 20230506
Bumps [linuxdoc](https://github.com/return42/linuxdoc) from 20230321 to 20230506.
- [Changelog](https://github.com/return42/linuxdoc/blob/master/CHANGELOG)
- [Commits](https://github.com/return42/linuxdoc/commits)

---
updated-dependencies:
- dependency-name: linuxdoc
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-19 07:56:49 +00:00
searxng-bot
23b53a03c2 [translations] update from Weblate
2eeec66c - 2023-05-13 - return42 <markus.heiser@darmarit.de>
87058e51 - 2023-05-13 - return42 <markus.heiser@darmarit.de>
2023-05-19 07:07:56 +00:00
Markus Heiser
50cd7e2b03 Merge pull request #2435 from return42/disable-donation
[mod] donation_url: disable by default
2023-05-15 09:41:15 +02:00
Markus Heiser
007a615ffa [mod] donation_url: disable by default
SearXNG's donation campaign has been ended.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-05-15 09:19:17 +02:00
Markus Heiser
84c23a8f62 Merge pull request #2408 from return42/changelog
[releases] rolling release: commit history replaces the CHANGELOG
2023-05-13 18:15:48 +02:00
Markus Heiser
ba1c8355dc Merge pull request #2414 from nberlee/master
Bump Alpine 3.18 (Python 3.11)
2023-05-13 17:55:23 +02:00
Markus Heiser
2c74f8dee5 Merge pull request #2421 from searxng/dependabot/pip/master/redis-4.5.5
Bump redis from 4.5.4 to 4.5.5
2023-05-13 06:57:20 +02:00
Markus Heiser
15f44339a0 Merge pull request #2423 from searxng/dependabot/pip/master/selenium-4.9.1
Bump selenium from 4.9.0 to 4.9.1
2023-05-13 06:56:14 +02:00
Markus Heiser
1fc268a52d Merge pull request #2424 from searxng/dependabot/pip/master/certifi-2023.5.7
Bump certifi from 2022.12.7 to 2023.5.7
2023-05-13 06:55:23 +02:00
dependabot[bot]
e1dedfd8c3 Bump selenium from 4.9.0 to 4.9.1
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.9.0 to 4.9.1.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.9.0...selenium-4.9.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-13 04:06:23 +00:00
Markus Heiser
6625b6193e Merge pull request #2420 from searxng/translations_update
Update translations
2023-05-13 06:06:07 +02:00
Markus Heiser
9c97a04180 Merge pull request #2422 from searxng/dependabot/pip/master/pylint-2.17.4
Bump pylint from 2.17.3 to 2.17.4
2023-05-13 06:05:41 +02:00
Markus Heiser
19ce3d88ce Merge pull request #2430 from return42/fix-2419-ddg
[fix] engine ddg: minor change in the API of ddg
2023-05-13 05:55:33 +02:00
Markus Heiser
caebd297e9 [fix] engine ddg: minor change in the API of ddg
Closes: https://github.com/searxng/searxng/issues/2419
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-05-12 18:58:49 +02:00
dependabot[bot]
cb7fc29891 Bump certifi from 2022.12.7 to 2023.5.7
Bumps [certifi](https://github.com/certifi/python-certifi) from 2022.12.7 to 2023.5.7.
- [Commits](https://github.com/certifi/python-certifi/compare/2022.12.07...2023.05.07)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-12 07:57:09 +00:00
dependabot[bot]
bb767589b4 Bump pylint from 2.17.3 to 2.17.4
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.17.3 to 2.17.4.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.17.3...v2.17.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-12 07:56:58 +00:00
dependabot[bot]
af696dbe1c Bump redis from 4.5.4 to 4.5.5
Bumps [redis](https://github.com/redis/redis-py) from 4.5.4 to 4.5.5.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v4.5.4...v4.5.5)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-12 07:56:48 +00:00
searxng-bot
f5c407eaa0 [translations] update from Weblate
df7e1be3 - 2023-05-10 - return42 <markus.heiser@darmarit.de>
7ae9877e - 2023-05-08 - return42 <markus.heiser@darmarit.de>
c2fe5131 - 2023-05-07 - KDesp73 <kdesp2003@gmail.com>
2023-05-12 07:07:40 +00:00
Markus Heiser
cb1c3741d7 Merge pull request #2416 from return42/fix-2413
[fix] version format string generated by 'git show'
2023-05-10 18:42:22 +02:00
Markus Heiser
a60851bd59 [fix] version format string generated by 'git show'
Newer versions of git [1] do no longer support a format string that includes a minus
to remove leading zeros [2].  The format string '%Y.%m.%d'  is more version rod.

[1] https://github.com/searxng/searxng/issues/2413#issuecomment-1542320387
[2] https://github.com/searxng/searxng/pull/2122/files

Closes: https://github.com/searxng/searxng/issues/2413
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-05-10 18:33:45 +02:00
Nico Berlee
fe0cce2ad9 Bump Alpine 3.18 (Python 3.11) 2023-05-10 10:36:15 +02:00
Markus Heiser
6caf86743c [releases] rolling release: commit history replaces the CHANGELOG
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-05-06 14:49:33 +02:00
Markus Heiser
0aade75eae Merge pull request #2405 from searxng/dependabot/pip/master/nose2-coverage_plugin--0.13.0
Bump nose2[coverage_plugin] from 0.12.0 to 0.13.0
2023-05-06 06:27:15 +02:00
Markus Heiser
db95c4713b Merge pull request #2406 from searxng/dependabot/npm_and_yarn/searx/static/themes/simple/master/grunt-contrib-cssmin-5.0.0
Bump grunt-contrib-cssmin from 4.0.0 to 5.0.0 in /searx/static/themes/simple
2023-05-06 05:54:15 +02:00
Markus Heiser
6f0f9baa38 Merge pull request #2403 from searxng/translations_update
Update translations
2023-05-05 11:46:42 +02:00
dependabot[bot]
673837f83e Bump grunt-contrib-cssmin in /searx/static/themes/simple
Bumps [grunt-contrib-cssmin](https://github.com/gruntjs/grunt-contrib-cssmin) from 4.0.0 to 5.0.0.
- [Release notes](https://github.com/gruntjs/grunt-contrib-cssmin/releases)
- [Changelog](https://github.com/gruntjs/grunt-contrib-cssmin/blob/main/CHANGELOG)
- [Commits](https://github.com/gruntjs/grunt-contrib-cssmin/compare/v4.0.0...v5.0.0)

---
updated-dependencies:
- dependency-name: grunt-contrib-cssmin
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-05 07:57:12 +00:00
dependabot[bot]
3dd4ba528b Bump nose2[coverage_plugin] from 0.12.0 to 0.13.0
Bumps [nose2[coverage_plugin]](https://github.com/nose-devs/nose2) from 0.12.0 to 0.13.0.
- [Changelog](https://github.com/nose-devs/nose2/blob/main/docs/changelog.rst)
- [Commits](https://github.com/nose-devs/nose2/compare/0.12.0...0.13.0)

---
updated-dependencies:
- dependency-name: nose2[coverage_plugin]
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-05 07:56:54 +00:00
searxng-bot
54c4d08167 [translations] update from Weblate
70336613 - 2023-05-03 - return42 <markus.heiser@darmarit.de>
55d82b96 - 2023-05-03 - artnay <jiri.gronroos@iki.fi>
3911fe35 - 2023-05-03 - return42 <markus.heiser@darmarit.de>
81b6ebd1 - 2023-05-03 - return42 <markus.heiser@darmarit.de>
6655ac63 - 2023-05-01 - return42 <markus.heiser@darmarit.de>
3b9cccb8 - 2023-04-30 - return42 <markus.heiser@darmarit.de>
51601c0b - 2023-04-30 - return42 <markus.heiser@darmarit.de>
2023-05-05 07:07:41 +00:00
Markus Heiser
e840c48122 Merge pull request #2396 from return42/block-petal
[mod] limiter: block requests from PetalBot
2023-05-03 08:25:59 +02:00
Markus Heiser
e6f4765e09 Merge pull request #2398 from searxng/dependabot/pip/flask-2.3.2
Bump flask from 2.3.1 to 2.3.2
2023-05-03 08:25:08 +02:00
dependabot[bot]
bcd3cafbd6 Bump flask from 2.3.1 to 2.3.2
Bumps [flask](https://github.com/pallets/flask) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/2.3.1...2.3.2)

---
updated-dependencies:
- dependency-name: flask
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-02 00:34:40 +00:00
Markus Heiser
823c490c84 [mod] limiter: block requests from PetalBot
Block requests from PetalBlock.  Normally robots.txt is enough to stop
PetalBlock from making requests [1].  However, if SearXNG is offered below a
path (example.org/search), then the robots.txt is not available in the root
paths of the domain / subdomain.

[1] https://webmaster.petalsearch.com/site/petalbot

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-30 09:49:26 +02:00
Markus Heiser
9967fbb7d1 Merge pull request #2383 from searxng/dependabot/pip/master/flask-2.3.1
Bump flask from 2.2.3 to 2.3.1
2023-04-30 08:32:45 +02:00
Markus Heiser
ac241fe6b9 Merge pull request #2386 from searxng/dependabot/pip/master/pallets-sphinx-themes-2.1.0
Bump pallets-sphinx-themes from 2.0.3 to 2.1.0
2023-04-30 08:18:47 +02:00
Markus Heiser
7b43f98ebb Merge pull request #2382 from searxng/translations_update
Update translations
2023-04-30 08:11:00 +02:00
Markus Heiser
3f090f68fe Merge pull request #2385 from searxng/dependabot/pip/master/yamllint-1.31.0
Bump yamllint from 1.30.0 to 1.31.0
2023-04-30 07:53:20 +02:00
Markus Heiser
bc94f2a764 Merge pull request #2384 from searxng/dependabot/pip/master/pylint-2.17.3
Bump pylint from 2.17.2 to 2.17.3
2023-04-30 07:50:05 +02:00
Markus Heiser
e0c8e1923d Merge pull request #2390 from searxng/update_data_update_wikidata_units.py
Update searx.data - update_wikidata_units.py
2023-04-30 07:16:31 +02:00
Markus Heiser
d63dbb10fc Merge pull request #2391 from searxng/update_data_update_firefox_version.py
Update searx.data - update_firefox_version.py
2023-04-30 07:15:55 +02:00
Markus Heiser
e9fdfab76e Merge pull request #2392 from searxng/update_data_update_currencies.py
Update searx.data - update_currencies.py
2023-04-30 07:15:28 +02:00
Markus Heiser
836827517d Merge pull request #2393 from searxng/update_data_update_ahmia_blacklist.py
Update searx.data - update_ahmia_blacklist.py
2023-04-30 07:14:53 +02:00
Markus Heiser
cfc01ea068 Merge pull request #2394 from searxng/update_data_update_engine_traits.py
Update searx.data - update_engine_traits.py
2023-04-30 07:14:23 +02:00
Markus Heiser
b20964b2b6 Merge pull request #2395 from searxng/update_data_update_engine_descriptions.py
Update searx.data - update_engine_descriptions.py
2023-04-30 07:14:02 +02:00
dalf
c2fbace534 Update searx.data - update_engine_descriptions.py 2023-04-29 00:24:27 +00:00
dalf
4f31ab7d4b Update searx.data - update_engine_traits.py 2023-04-29 00:14:09 +00:00
dalf
df4cc070ec Update searx.data - update_ahmia_blacklist.py 2023-04-29 00:13:21 +00:00
dalf
5b93f97fb2 Update searx.data - update_currencies.py 2023-04-29 00:13:19 +00:00
dalf
7c90a6a222 Update searx.data - update_firefox_version.py 2023-04-29 00:13:09 +00:00
dalf
4336f70b59 Update searx.data - update_wikidata_units.py 2023-04-29 00:13:08 +00:00
dependabot[bot]
7199cee165 Bump pallets-sphinx-themes from 2.0.3 to 2.1.0
Bumps [pallets-sphinx-themes](https://github.com/pallets/pallets-sphinx-themes) from 2.0.3 to 2.1.0.
- [Release notes](https://github.com/pallets/pallets-sphinx-themes/releases)
- [Changelog](https://github.com/pallets/pallets-sphinx-themes/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/pallets-sphinx-themes/compare/2.0.3...2.1.0)

---
updated-dependencies:
- dependency-name: pallets-sphinx-themes
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-28 07:57:05 +00:00
dependabot[bot]
0ea9a2dd8a Bump yamllint from 1.30.0 to 1.31.0
Bumps [yamllint](https://github.com/adrienverge/yamllint) from 1.30.0 to 1.31.0.
- [Release notes](https://github.com/adrienverge/yamllint/releases)
- [Changelog](https://github.com/adrienverge/yamllint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/adrienverge/yamllint/compare/v1.30.0...v1.31.0)

---
updated-dependencies:
- dependency-name: yamllint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-28 07:57:01 +00:00
dependabot[bot]
efa566730d Bump pylint from 2.17.2 to 2.17.3
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.17.2 to 2.17.3.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.17.2...v2.17.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-28 07:56:56 +00:00
dependabot[bot]
18c8ac0683 Bump flask from 2.2.3 to 2.3.1
Bumps [flask](https://github.com/pallets/flask) from 2.2.3 to 2.3.1.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/2.3.1/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/2.2.3...2.3.1)

---
updated-dependencies:
- dependency-name: flask
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-28 07:56:49 +00:00
searxng-bot
274fcd46b6 [translations] update from Weblate
b6658877 - 2023-04-27 - return42 <markus.heiser@darmarit.de>
d7a3917b - 2023-04-25 - return42 <markus.heiser@darmarit.de>
879248ad - 2023-04-25 - return42 <markus.heiser@darmarit.de>
6ccafe4e - 2023-04-25 - return42 <markus.heiser@darmarit.de>
d202aed8 - 2023-04-23 - Parsa Ranjbar <parsa@disr.it>
2023-04-28 07:08:09 +00:00
Markus Heiser
216751dac8 Merge pull request #2374 from searxng/dependabot/pip/master/sphinx-6.2.1
Bump sphinx from 5.3.0 to 6.2.1
2023-04-25 15:54:34 +02:00
dependabot[bot]
a2ee093287 Bump sphinx from 5.3.0 to 6.2.1
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 5.3.0 to 6.2.1.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v5.3.0...v6.2.1)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-25 13:48:33 +00:00
Markus Heiser
4d0f12129e Merge pull request #2355 from return42/drop-py37
[CI] drop Python 3.7 from CI
2023-04-25 15:46:50 +02:00
Markus Heiser
45529f51a1 Merge pull request #2347 from return42/mod-lang-detection
If language recognition fails use the Accept-Language
2023-04-25 15:46:26 +02:00
Markus Heiser
12df30070b Merge pull request #2369 from Jorengarenar/master
Go to main instead of search page when external bang query is empty
2023-04-25 15:17:14 +02:00
Jakub Łukasiewicz
7da47edd93 [mod] external bang: go to main instead of search page when query is empty
Closes: #2368
2023-04-25 15:02:34 +02:00
Markus Heiser
98387e2910 Merge pull request #2361 from searxng/dependabot/pip/master/pygments-2.15.1
Bump pygments from 2.15.0 to 2.15.1
2023-04-21 13:39:18 +02:00
Markus Heiser
4080eca3dd [build] /static 2023-04-21 13:38:29 +02:00
Markus Heiser
26212d22bf Merge pull request #2363 from searxng/dependabot/pip/master/selenium-4.9.0
Bump selenium from 4.8.3 to 4.9.0
2023-04-21 13:32:02 +02:00
Markus Heiser
9b1b318826 Merge pull request #2362 from searxng/dependabot/pip/master/mock-5.0.2
Bump mock from 5.0.1 to 5.0.2
2023-04-21 13:31:25 +02:00
dependabot[bot]
08651d6e68 Bump selenium from 4.8.3 to 4.9.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.8.3 to 4.9.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits/selenium-4.9.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-21 07:56:46 +00:00
dependabot[bot]
55a3eedc53 Bump mock from 5.0.1 to 5.0.2
Bumps [mock](https://github.com/testing-cabal/mock) from 5.0.1 to 5.0.2.
- [Release notes](https://github.com/testing-cabal/mock/releases)
- [Changelog](https://github.com/testing-cabal/mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/testing-cabal/mock/compare/5.0.1...5.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-21 07:56:41 +00:00
dependabot[bot]
d9c81cd2cd Bump pygments from 2.15.0 to 2.15.1
Bumps [pygments](https://github.com/pygments/pygments) from 2.15.0 to 2.15.1.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.15.0...2.15.1)

---
updated-dependencies:
- dependency-name: pygments
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-21 07:56:38 +00:00
Markus Heiser
0265bf52c4 Merge pull request #2360 from searxng/translations_update
Update translations
2023-04-21 09:23:18 +02:00
searxng-bot
b41e47eea6 [translations] update from Weblate
72d42638 - 2023-04-15 - tentsbet <remendne@pentrens.jp>
560e1885 - 2023-04-16 - return42 <markus.heiser@darmarit.de>
7370b026 - 2023-04-16 - return42 <markus.heiser@darmarit.de>
20946697 - 2023-04-16 - return42 <markus.heiser@darmarit.de>
2023-04-21 07:07:58 +00:00
Markus Heiser
b12d8261d4 Merge pull request #2358 from spalinger/patch-2
fix typos/grammar in docs
2023-04-21 07:13:10 +02:00
spalinger
1918fb2ea0 [fix] typos/grammar in docs 2023-04-21 06:51:44 +02:00
Markus Heiser
fc8bd98c59 [CI] drop Python 3.7 from CI
- Python 3.7 supports security fixes only, as needed, until 2023-06 [1]
- Some of SearXNG's dependencies do no longer support Python 3.7 [2]

[1] https://peps.python.org/pep-0537/#and-beyond-schedule
[2] https://github.com/searxng/searxng/pull/2102

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-19 14:55:17 +02:00
Markus Heiser
3ba0587666 Merge pull request #2354 from return42/fix-doc-zh
[fix] doc of locales.get_engine_locale() / zh-classical is missleading
2023-04-17 08:53:27 +02:00
Markus Heiser
9b575a997b [fix] doc of locales.get_engine_locale() / zh-classical is missleading
Wikipedia's zh-classical is not zh_Hant (see doc-string of engines.wikipedia).
Fixed the example in the doc-string of locales.get_engine_locale() to 'zh_TW'.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-17 08:48:57 +02:00
Markus Heiser
c0bc8634fd Merge pull request #2352 from return42/fix-1599
[fix] engine: google play movies
2023-04-16 21:03:19 +02:00
Markus Heiser
f1b6351ae1 [fix] engine: google play movies
Closes: https://github.com/searxng/searxng/pull/1746
Closes: https://github.com/searxng/searxng/issues/1599

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-16 19:15:44 +02:00
Markus Heiser
b55a62dbc9 Merge pull request #2349 from return42/doc-reorder-1
[doc] slightly reorder the chapters & improve TOCs for better navigation
2023-04-16 15:24:58 +02:00
Markus Heiser
a5dad3b7c8 [doc] slightly reorder the chapters & improve TOCs for better navigation
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-16 15:21:26 +02:00
Markus Heiser
3e18aa6fbf Merge pull request #2348 from MarcAbonce/patch-1
Fix Israeli flag emoji in locale dropdown
2023-04-16 09:03:07 +02:00
Marc Abonce Seguin
be1f6ee1c4 Update searx.data - update_engine_traits.py 2023-04-16 08:40:44 +02:00
Marc Abonce Seguin
d72bfb8ef5 [fix] Israeli flag emoji in locale dropdown
🇮🇱 https://emojipedia.org/flag-israel/
2023-04-16 08:40:23 +02:00
Markus Heiser
8adbc4fcec [mod] settings.yml: enable language detection by default_lang (auto)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-15 22:24:59 +02:00
Markus Heiser
d5ecda9930 [mod] move language recognition to get_search_query_from_webapp
To set the language from language recognition and hold the value selected by the
client, the previous implementation creates a copy of the SearchQuery object and
manipulates the SearchQuery object by calling function replace_auto_language().

This patch tries to implement a similar functionality in a more central place,
in function get_search_query_from_webapp() when the SearchQuery object is build
up.

Additional this patch uses the language preferred by the client, if language
recognition does not have a match / the existing implementation does not care
about client preferences and uses 'all' in case of no match.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-15 22:23:33 +02:00
Markus Heiser
c03b0ea650 [mod] add a Preferences.client property to store client prefs
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-15 21:41:57 +02:00
Markus Heiser
5a3f99ee1a Merge pull request #2346 from return42/fix-1566
[mod] Ignore autocomplete_min on queries that include '!' (!bang)
2023-04-15 20:43:30 +02:00
Markus Heiser
6592f0d36e [build] /static 2023-04-15 18:59:46 +02:00
Markus Heiser
abf574dc0c [mod] Ignore autocomplete_min on queries that include '!' (!bang)
Closes: https://github.com/searxng/searxng/issues/1566
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-15 18:54:47 +02:00
Markus Heiser
5c8d56e73a Merge pull request #2316 from return42/fix-2314-upd-desc
[fix] searxng_extra/update/update_engine_descriptions.py
2023-04-15 16:10:53 +02:00
Markus Heiser
09295a3fd1 Update searx.data - update_engine_descriptions.py
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-15 16:04:05 +02:00
Alexandre FLAMENT
bb5db079c7 [fix] searxng_extra/update/update_engine_descriptions.py (part 2)
Wikipedia description are fetched without the help the wikipedia engine:

* the SQPARL query return the wikipedia URL of the article
2023-04-15 16:04:05 +02:00
Markus Heiser
a8fb6dffb2 [upd] make data.traits --> searx/data/engine_traits.json
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-15 16:04:05 +02:00
Markus Heiser
27369ebec2 [fix] searxng_extra/update/update_engine_descriptions.py (part 1)
Follow up of #2269

The script to update the descriptions of the engines does no longer work since
PR #2269 has been merged.

searx/engines/wikipedia.py
==========================

1. There was a misusage of zh-classical.wikipedia.org:

   - `zh-classical` is dedicate to classical Chinese [1] which is not
     traditional Chinese [2].

   - zh.wikipedia.org has LanguageConverter enabled [3] and is going to
     dynamically show simplified or traditional Chinese according to the
     HTTP Accept-Language header.

2. The update_engine_descriptions.py needs a list of all wikipedias.  The
   implementation from #2269 included only a reduced list:

   - https://meta.wikimedia.org/wiki/Wikipedia_article_depth
   - https://meta.wikimedia.org/wiki/List_of_Wikipedias

searxng_extra/update/update_engine_descriptions.py
==================================================

Before PR #2269 there was a match_language() function that did an approximation
using various methods.  With PR #2269 there are only the types in the data model
of the languages, which can be recognized by babel.  The approximation methods,
which are needed (only here) in the determination of the descriptions, must be
replaced by other methods.

[1] https://en.wikipedia.org/wiki/Classical_Chinese
[2] https://en.wikipedia.org/wiki/Traditional_Chinese_characters
[3] https://www.mediawiki.org/wiki/Writing_systems#LanguageConverter

Closes: https://github.com/searxng/searxng/issues/2330
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-15 16:03:59 +02:00
Markus Heiser
0adfed195e Merge pull request #2338 from return42/block-old-farside
[mod] limiter: block unmaintained Farside instances
2023-04-15 08:40:30 +02:00
Markus Heiser
5f6ee2f82c Merge pull request #2342 from searxng/dependabot/pip/master/pygments-2.15.0
Bump pygments from 2.14.0 to 2.15.0
2023-04-15 08:28:05 +02:00
Markus Heiser
b3d8d305d2 [build] /static 2023-04-15 08:21:02 +02:00
Markus Heiser
6de98ca598 Merge pull request #2341 from searxng/dependabot/pip/master/flask-babel-3.1.0
Bump flask-babel from 3.0.1 to 3.1.0
2023-04-15 08:14:55 +02:00
Markus Heiser
254b8bbc09 Merge pull request #2340 from searxng/translations_update
Update translations
2023-04-15 07:58:04 +02:00
dependabot[bot]
efa51e863f Bump pygments from 2.14.0 to 2.15.0
Bumps [pygments](https://github.com/pygments/pygments) from 2.14.0 to 2.15.0.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.14.0...2.15.0)

---
updated-dependencies:
- dependency-name: pygments
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-14 07:56:42 +00:00
dependabot[bot]
95309ee635 Bump flask-babel from 3.0.1 to 3.1.0
Bumps [flask-babel](https://github.com/python-babel/flask-babel) from 3.0.1 to 3.1.0.
- [Release notes](https://github.com/python-babel/flask-babel/releases)
- [Changelog](https://github.com/python-babel/flask-babel/blob/master/CHANGELOG)
- [Commits](https://github.com/python-babel/flask-babel/compare/v3.0.1...v3.1.0)

---
updated-dependencies:
- dependency-name: flask-babel
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-14 07:56:38 +00:00
searxng-bot
a938aeaf1b [translations] update from Weblate
8d1975e8 - 2023-04-12 - return42 <markus.heiser@darmarit.de>
76ff8083 - 2023-04-13 - return42 <markus.heiser@darmarit.de>
a53721ef - 2023-04-13 - return42 <markus.heiser@darmarit.de>
9d8b4810 - 2023-04-08 - Eryk Michalak <gnu.ewm@protonmail.com>
1587a991 - 2023-04-10 - tentsbet <remendne@pentrens.jp>
16c84cef - 2023-04-10 - return42 <markus.heiser@darmarit.de>
29845d20 - 2023-04-09 - ghose <correo@xmgz.eu>
ccdee956 - 2023-04-08 - gallegonovato <fran-carro@hotmail.es>
402b3d27 - 2023-04-08 - return42 <markus.heiser@darmarit.de>
44b1ea99 - 2023-04-10 - return42 <markus.heiser@darmarit.de>
2023-04-14 07:07:48 +00:00
Markus Heiser
8c83547683 [mod] limiter: block unmaintained Farside instances
Since [bb3a01f8] has been merged to the Farside project, Farside instances do no
longer need to send requests to SearXNG instances [1].

There are some old unmaintained Farside instances on the web that continue to
query SearXNG instances --> we can safely block their requests.

[1] https://github.com/benbusby/farside/issues/95
[bb3a01f8] https://github.com/benbusby/farside/commit/bb3a01f8

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-13 16:53:37 +02:00
Alexandre Flament
b07e44e552 Update AUTHORS.rst 2023-04-12 14:01:54 +02:00
Markus Heiser
007bc73227 Merge pull request #2331 from rinagorsha/update-input-with-keyboard
[mod] Update input when selecting autocomplete prediction with keyboard
2023-04-10 16:38:46 +02:00
Markus Heiser
c678b82625 [build] /static 2023-04-10 16:26:41 +02:00
Markus Heiser
962b4c719f [mod] Update input when selecting by TAB
When the user press [TAB] the input form should be filled with the highlighted
item from the autocomplete list, but not release a search / with other words:
what we now have by pressing once on [ENTER] should be mapped to the [TAB] key
and pressing [ENTER] once should release a search query. [1]

[1] https://github.com/searxng/searxng/issues/778#issuecomment-1016593816

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-10 16:26:41 +02:00
rinagorsha
e9fb9f2705 [mod] Update input when selecting autocomplete prediction with keyboard
- Update input when selecting autocomplete prediction with keyboard
- Search immediately by pressing enter key
- Search immediately by clicking on an autocomplete suggestion

Related:
- https://github.com/searxng/searxng/issues/778
2023-04-10 14:36:05 +02:00
Markus Heiser
3372fcdb49 Merge pull request #2311 from return42/fix-1020-part-1
[fix] don't show a category if there is no active engine in
2023-04-10 09:27:24 +02:00
Markus Heiser
7d17d37ac7 [fix] don't show a category if there is no active engine in
When deactivate all the engines of a category, this category should disappeare.
This feature has been lost in commit 8e9ad1cc.

For better readability, webapp.get_enabled_categories() has been rewritten with
identical functionality.

Related:

- https://github.com/searxng/searxng/issues/1020
- https://github.com/searxng/searxng/issues/1604

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-10 09:22:21 +02:00
Markus Heiser
ac040fda32 Merge pull request #2332 from xrrxr/patch-1
[doc] misspelling: weight
2023-04-10 09:09:17 +02:00
xrrxr
c9d55e3559 [doc] misspelling: weight 2023-04-09 21:21:55 +08:00
Markus Heiser
fed2bab65b Merge pull request #2329 from return42/fix-bing-no-descr
[fix] Bing-WEB: use <span class='algoSlug_icon'> for the description
2023-04-08 17:03:34 +02:00
Alexandre Flament
71bd091f6b Merge pull request #2327 from return42/ui-pref-add-bang
[mod] in the preference page, show !bang of subgrouping categories
2023-04-08 11:20:03 +02:00
Markus Heiser
0def555869 [build] /static 2023-04-08 11:10:34 +02:00
Markus Heiser
f117f969d8 [mod] in the preference page, show !bang of subgrouping categories
The names of the subgrouping categories in the preference page are translated,
to use this categories the user needs to know by which !bang the category can be
selected.  Related to "Make 'non tab category' bangs discoverable" in [#690].

Related:

- [#690] https://github.com/searxng/searxng/issues/690
- https://github.com/searxng/searxng/issues/1604
- https://github.com/searxng/searxng/pull/1545

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-08 11:10:14 +02:00
Markus Heiser
bbb2af7d94 [fix] minor typo in de/search-syntax page
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-08 10:25:52 +02:00
Markus Heiser
23ac964e35 [fix] Bing-WEB: use <span class='algoSlug_icon'> for the description
On some result items from Bing-WEB the `<span class='algoSlug_icon'>` tag is the
only tag that contains a description.  The issue can be reproduced by [1]::

    !bi vmware

[1] https://github.com/searxng/searxng/issues/1764#issuecomment-1417990531

Reported-by: @AlyoshaVasilieva
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-08 09:43:04 +02:00
Markus Heiser
393e14965a Merge pull request #2326 from return42/ungrouped
[mod] clarify the difference of the default category and subgrouping
2023-04-07 13:34:24 +02:00
Markus Heiser
53c154e2b1 Merge pull request #2325 from searxng/dependabot/pip/master/pylint-2.17.2
Bump pylint from 2.17.1 to 2.17.2
2023-04-07 13:30:20 +02:00
Markus Heiser
8f79dd7659 [doc] additional descriptions about categories & categories_as_tabs
Add missing documentation of PR [#634].  Related to checkbox "Document how to
categorize engines" in [#690].

Related:

- [#634] https://github.com/searxng/searxng/pull/634#issuecomment-1004757502
- [#690] https://github.com/searxng/searxng/issues/690
- https://github.com/searxng/searxng/issues/1604
- https://github.com/searxng/searxng/pull/1545

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-07 12:56:45 +02:00
Markus Heiser
2ffd446e5c [mod] clarify the difference of the default category and subgrouping
This PR does no functional change it is just an attempt to make more clear in
the code, what a default category is and what a subcategory is.  The previous
name 'others' leads to confusion with the **category 'other'**.

If a engine is not assigned to a category, the default is assigned::

    DEFAULT_CATEGORY = 'other'

If an engine has only one category and this category is shown as tab in the user
interface, this engine has no further subgrouping::

    NO_SUBGROUPING = 'without further subgrouping'

Related:

- https://github.com/searxng/searxng/issues/1604
- https://github.com/searxng/searxng/pull/1545

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-07 11:03:25 +02:00
dependabot[bot]
36d5102f49 Bump pylint from 2.17.1 to 2.17.2
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.17.1 to 2.17.2.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.17.1...v2.17.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-07 07:56:50 +00:00
Markus Heiser
e1a06cebb0 Merge pull request #2324 from searxng/translations_update
Update translations
2023-04-07 09:12:49 +02:00
searxng-bot
7850c77c2c [translations] update from Weblate
d2fb466c - 2023-04-02 - return42 <markus.heiser@darmarit.de>
5576f597 - 2023-04-02 - return42 <markus.heiser@darmarit.de>
4b28cab9 - 2023-03-31 - Vistaus <vistausss@fastmail.com>
2023-04-07 07:07:51 +00:00
Markus Heiser
f46d0584ef Merge pull request #2322 from return42/fix-2321
[fix] Gigablast.com has been erased
2023-04-06 23:49:58 +02:00
Markus Heiser
64e221426a Merge pull request #2312 from return42/fix-1020-part-2
[fix] categories can't be removed from UI (categories_as_tabs)
2023-04-06 10:36:51 +02:00
Markus Heiser
5234e45010 [fix] Gigablast.com has been erased
[1] https://www.reddit.com/r/searchengines/comments/128wdcp/gigablastcom_has_been_erased/

Closes: https://github.com/searxng/searxng/issues/2321
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-06 08:22:57 +02:00
Markus Heiser
934249dd05 Merge pull request #2315 from return42/fix-2314
[fix] ./manage: replace data.languages by data.traits
2023-04-05 07:53:41 +02:00
Markus Heiser
cd26f3ea2f [fix] ./manage: replace data.languages by data.traits
Follow up of https://github.com/searxng/searxng/pull/2269

Related:

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

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-05 07:44:29 +02:00
Markus Heiser
3ab85db5dd Merge pull request #2313 from return42/limiter-route-healthz
[fix] limiter: never block a /healthz request
2023-04-03 19:42:26 +02:00
Markus Heiser
03f94962b6 [fix] limiter: never block a /healthz request
Related: https://github.com/searxng/searxng/issues/2310#issuecomment-1494417531
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-03 19:36:28 +02:00
Markus Heiser
0c4003ab2d [fix] categories can't be removed from UI (categories_as_tabs)
When using ``use_default_settings: true``, removing default categories from
settings.yml will not remove them from the UI.

The value ``categories_as_tabs`` is a dictionary type (a4c2cfb) and dictionary
types are merged additive by ``settings_loader.update_settings()``.

This patch replaces the default ``categories_as_tabs`` by the one from the
``user_settings``.

Related: https://github.com/searxng/searxng/issues/1019#issuecomment-1193145654
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-03 19:08:27 +02:00
Markus Heiser
464e69665c Merge pull request #2309 from return42/fix-392
[fix] engine ddg: quote !bangs in a request send to ddg
2023-04-03 09:59:16 +02:00
Markus Heiser
a762172bf7 [fix] engine ddg: quote !bangs in a request send to ddg
Closes: https://github.com/searxng/searxng/issues/392
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-03 09:52:16 +02:00
Markus Heiser
b8100e4e16 Merge pull request #2308 from return42/fix-1959-2
[fix] engine google-News: fix decoding of URLs (part 2)
2023-04-02 19:25:10 +02:00
Markus Heiser
0430662189 [fix] engine google-News: fix decoding of URLs (part 2)
Follow up of 8de8070ed to fix the issue reported by AlyoshaVasilieva [1].

[1] https://github.com/searxng/searxng/issues/1959#issuecomment-1493300574

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-02 19:19:59 +02:00
Markus Heiser
a5155a32c0 Merge pull request #2306 from return42/fix-1959
[fix] engine google-News: fix decoding of URLs
2023-04-02 08:02:37 +02:00
Paul Braeuning
24dba7634e Merge pull request #2304 from return42/limiter-mod
[mod] limiter: minor improvements
2023-04-01 21:55:13 +02:00
Markus Heiser
66810ce711 [mod] limiter: minor improvements
- requests without HTTP header 'Connection' or missing 'User-Agent' will be
  blocked by the limiter

- re_bot is related to 'User-Agent' and has been renamed to block_user_agent

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-01 19:42:49 +02:00
Markus Heiser
8de8070ed9 [fix] engine google-News: fix decoding of URLs
Google-News returns internal links where the origin URL is encoded in a
base64 (RFC 2045 aka URL-safe) string.

Closes: https://github.com/searxng/searxng/issues/1959
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-01 19:33:13 +02:00
Markus Heiser
7592d85982 Merge pull request #2186 from return42/limiter-debug-log
[mod] plugin limiter: improve the log messages
2023-04-01 10:11:17 +02:00
Markus Heiser
afd8fcce36 [mod] plugin limiter: improve the log messages
In debug mode more detailed logging is needed to evaluate if an access should
have been blocked by the limiter.

BTW: remove duplicate code checking bot signature ``re_bot.match(user_agent)``

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-04-01 09:20:58 +02:00
Markus Heiser
901ccce664 Merge pull request #2303 from Venca24/devel_seznam
[fix] engine seznam
2023-03-31 17:33:09 +02:00
Markus Heiser
509afbbb84 [fix] engine seznam: fix issues reported by black & pylint
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-31 17:25:39 +02:00
Venca24
c8d78355ff [fix] engine seznam 2023-03-31 16:11:27 +02:00
Markus Heiser
27611470bf Merge pull request #2300 from searxng/dependabot/npm_and_yarn/searx/static/themes/simple/master/sharp-0.32.0
Bump sharp from 0.31.3 to 0.32.0 in /searx/static/themes/simple
2023-03-31 14:48:25 +02:00
dependabot[bot]
b99e028ed0 Bump sharp from 0.31.3 to 0.32.0 in /searx/static/themes/simple
Bumps [sharp](https://github.com/lovell/sharp) from 0.31.3 to 0.32.0.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/main/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/compare/v0.31.3...v0.32.0)

---
updated-dependencies:
- dependency-name: sharp
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-31 11:39:17 +00:00
Markus Heiser
68703ba22e Merge pull request #2282 from searxng/dependabot/npm_and_yarn/searx/static/themes/simple/master/ionicons-7.1.0
Bump ionicons from 6.1.3 to 7.1.0 in /searx/static/themes/simple
2023-03-31 13:36:12 +02:00
Markus Heiser
7e0e461aa1 Merge pull request #2298 from searxng/dependabot/pip/master/redis-4.5.4
Bump redis from 4.5.1 to 4.5.4
2023-03-31 13:25:25 +02:00
Markus Heiser
f3b8e5734b Merge pull request #2299 from searxng/dependabot/pip/master/selenium-4.8.3
Bump selenium from 4.8.2 to 4.8.3
2023-03-31 13:12:57 +02:00
dependabot[bot]
615c8ebcfd Bump selenium from 4.8.2 to 4.8.3
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.8.2 to 4.8.3.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-31 07:56:56 +00:00
dependabot[bot]
ec5739bec9 Bump redis from 4.5.1 to 4.5.4
Bumps [redis](https://github.com/redis/redis-py) from 4.5.1 to 4.5.4.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v4.5.1...v4.5.4)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-31 07:56:50 +00:00
Markus Heiser
a9680f0f75 Merge pull request #2297 from searxng/translations_update
Update translations
2023-03-31 09:24:58 +02:00
searxng-bot
c1c24fc231 [translations] update from Weblate
17ad1118 - 2023-03-29 - return42 <markus.heiser@darmarit.de>
61446791 - 2023-03-29 - return42 <markus.heiser@darmarit.de>
2023-03-31 07:07:59 +00:00
Markus Heiser
0311d634ae Merge pull request #2296 from return42/fix-1879
[fix] engine flickr: adapt to the new data model from flicker's response
2023-03-30 21:21:05 +02:00
Markus Heiser
270ad18897 [fix] engine flickr: adapt to the new data model from flicker's response
Closes: https://github.com/searxng/searxng/issues/1879
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-30 21:04:53 +02:00
Markus Heiser
767f22eca1 Merge pull request #2293 from return42/fix-1454
[fix] engine gigablast: add &userid=<User ID>&code=<Feed Code>
2023-03-29 17:50:40 +02:00
Markus Heiser
2b8dfab33f [fix] engine gigablast: add &userid=<User ID>&code=<Feed Code>
Gigablast's API does block unauthorized request[1].

[1] https://gigablast.com/searchfeed.html

Closes: https://github.com/searxng/searxng/issues/1454
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-29 16:18:02 +02:00
Markus Heiser
d179b62cf5 Merge pull request #2288 from searxng/update_data_update_firefox_version.py
Update searx.data - update_firefox_version.py
2023-03-29 13:48:32 +02:00
Markus Heiser
381c6751d6 Merge pull request #2289 from searxng/update_data_update_ahmia_blacklist.py
Update searx.data - update_ahmia_blacklist.py
2023-03-29 13:48:03 +02:00
Markus Heiser
fc51d9a0fe Merge pull request #2291 from searxng/update_data_update_currencies.py
Update searx.data - update_currencies.py
2023-03-29 13:46:40 +02:00
Markus Heiser
2fbe4ab0c0 Merge pull request #2292 from searxng/update_data_update_engine_descriptions.py
Update searx.data - update_engine_descriptions.py
2023-03-29 13:46:14 +02:00
Markus Heiser
f950119ca8 Merge pull request #2269 from return42/locale-revision
Revision of the locale- and language- handling in SearXNG
2023-03-29 09:47:21 +02:00
dalf
4c80340b62 Update searx.data - update_engine_descriptions.py 2023-03-29 00:28:45 +00:00
dalf
b39ce7ff82 Update searx.data - update_currencies.py 2023-03-29 00:16:21 +00:00
dalf
814ac8cacb Update searx.data - update_ahmia_blacklist.py 2023-03-29 00:16:17 +00:00
dalf
43d30cab81 Update searx.data - update_firefox_version.py 2023-03-29 00:16:14 +00:00
Markus Heiser
6f9e678346 [fix] engine: google has changed the layout of its response
Since 28. March google has changed its response, this patch fixes the google
engine to scrap out the results & images from the new designed response.

closes: https://github.com/searxng/searxng/issues/2287

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-28 14:39:16 +02:00
dalf
1498202b0b Update searx.data - update_engine_traits.py 2023-03-24 11:30:18 +01:00
dependabot[bot]
212de1a0f5 Bump babel from 2.11.0 to 2.12.1
Bumps [babel](https://github.com/python-babel/babel) from 2.11.0 to 2.12.1.
- [Release notes](https://github.com/python-babel/babel/releases)
- [Changelog](https://github.com/python-babel/babel/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-babel/babel/compare/v2.11.0...v2.12.1)

---
updated-dependencies:
- dependency-name: babel
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-24 11:26:15 +01:00
Markus Heiser
16f0db4493 [mod] replace utils.match_language by locales.match_locale
This patch replaces the *full of magic* ``utils.match_language`` function by a
``locales.match_locale``.  The ``locales.match_locale`` function is based on the
``locales.build_engine_locales`` introduced in 9ae409a0 [1].

In the past SearXNG did only support a search by a language but not in a region.
This has been changed a long time ago and regions have been added to SearXNG
core but not to the engines.  The ``utils.match_language`` was the function to
handle the different aspects of language/regions in SearXNG core and the
supported *languages* in the engine.  The ``utils.match_language`` did it with
some magic and works good for most use cases but fails in some edge case.

To replace the concurrence of languages and regions in the SearXNG core the
``locales.build_engine_locales`` was introduced in 9ae409a0 [1].  With the last
patches all engines has been migrated to a ``fetch_traits`` and a
language/region concept that is based on ``locales.build_engine_locales``.

To summarize: there is no longer a need for the ``locales.match_language``.

[1] https://github.com/searxng/searxng/pull/1652

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
4d4aa13e1f [mod] remove obsolete EngineTraits.supported_languages
All engines has been migrated from ``supported_languages`` to the
``fetch_traits`` concept.  There is no longer a need for the obsolete code that
implements the ``supported_languages`` concept.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
96a2eec3b5 [mod] Archlinux Wiki: improved request API & upgrade to data_type: traits_v1
re-implementation of the Archlinux Wiki:

- fetch_traits(): fetch languages, wiki URLs and title arguments
- add content field to the result list
- add documentation

Wikis from wiki.archlinux.fr, wiki.archlinux.ro, archtr.org/wiki do no longer
exists (has been merged in the main wiki).

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
057e9bc1d1 [mod] SepiaSearch: re-engineered & upgrade to data_type: traits_v1
- fetch_traits() SepiaSearch and Peertube are using identical languages.
  Replace module's dictionary `supported_languages` by `engine.traits.languages`
  (data_type: `traits_v1`).
- fixed code to pass pylint
- request(): add argument boostLanguages
- response(): is replaced by peertube's video_response() function, which adds
  metadata from channel name, host & tags

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
8a8c584fec [mod] Dailymotion: improved request API & upgrade to data_type: traits_v1
- fetch_traits(): fetch locales (and languages) from dailymotion API
- removed obsolete data-type "supported_languages"
- add documentation
- improved argument list of the HTTP request:
  - add argument: family_filter_map
  - add conditional argument: localization
    Don't add localization and country arguments if the user does select a
    language (:de, :en, ..)
- improve code quality (mainly improve readability)

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
2499899554 [mod] Google: reversed engineered & upgrade to data_type: traits_v1
Partial reverse engineering of the Google engines including a improved language
and region handling based on the engine.traits_v1 data.

When ever possible the implementations of the Google engines try to make use of
the async REST APIs.  The get_lang_info() has been generalized to a
get_google_info() function / especially the region handling has been improved by
adding the cr parameter.

searx/data/engine_traits.json
  Add data type "traits_v1" generated by the fetch_traits() functions from:

  - Google (WEB),
  - Google images,
  - Google news,
  - Google scholar and
  - Google videos

  and remove data from obsolete data type "supported_languages".

  A traits.custom type that maps region codes to *supported_domains* is fetched
  from https://www.google.com/supported_domains

searx/autocomplete.py:
  Reversed engineered autocomplete from Google WEB.  Supports Google's languages and
  subdomains.  The old API suggestqueries.google.com/complete has been replaced
  by the async REST API: https://{subdomain}/complete/search?{args}

searx/engines/google.py
  Reverse engineering and extensive testing ..
  - fetch_traits():  Fetch languages & regions from Google properties.
  - always use the async REST API (formally known as 'use_mobile_ui')
  - use *supported_domains* from traits
  - improved the result list by fetching './/div[@data-content-feature]'
    and parsing the type of the various *content features* --> thumbnails are
    added

searx/engines/google_images.py
  Reverse engineering and extensive testing ..
  - fetch_traits():  Fetch languages & regions from Google properties.
  - use *supported_domains* from traits
  - if exists, freshness_date is added to the result
  - issue 1864: result list has been improved a lot (due to the new cr parameter)

searx/engines/google_news.py
  Reverse engineering and extensive testing ..
  - fetch_traits():  Fetch languages & regions from Google properties.
    *supported_domains* is not needed but a ceid list has been added.
  - different region handling compared to Google WEB
  - fixed for various languages & regions (due to the new ceid parameter) /
    avoid CONSENT page
  - Google News do no longer support time range
  - result list has been fixed: XPath of pub_date and pub_origin

searx/engines/google_videos.py
  - fetch_traits():  Fetch languages & regions from Google properties.
  - use *supported_domains* from traits
  - add paging support
  - implement a async request ('asearch': 'arc' & 'async':
    'use_ac:true,_fmt:html')
  - simplified code (thanks to '_fmt:html' request)
  - issue 1359: fixed xpath of video length data

searx/engines/google_scholar.py
  - fetch_traits():  Fetch languages & regions from Google properties.
  - use *supported_domains* from traits
  - request(): include patents & citations
  - response(): fixed CAPTCHA detection (Scholar has its own CATCHA manager)
  - hardening XPath to iterate over results
  - fixed XPath of pub_type (has been change from gs_ct1 to gs_cgt2 class)
  - issue 1769 fixed: new request implementation is no longer incompatible

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
c80e82a855 [mod] DuckDuckGo: reversed engineered & upgrade to data_type: traits_v1
Partial reverse engineering of the DuckDuckGo (DDG) engines including a
improved language and region handling based on the enigne.traits_v1 data.

- DDG Lite
- DDG Instant Answer API
- DDG Images
- DDG Weather

docs/src/searx.engine.duckduckgo.rst:
  Online documentation of the DDG engines (make docs.live)

searx/data/engine_traits.json
  Add data type "traits_v1" generated by the fetch_traits() functions from:

  - "duckduckgo" (WEB),
  - "duckduckgo images" and
  - "duckduckgo weather"

  and remove data from obsolete data type "supported_languages".

searx/autocomplete.py:
  Reversed engineered Autocomplete from DDG.  Supports DDG's languages.

searx/engines/duckduckgo.py:
  - fetch_traits():  Fetch languages & regions from DDG.

  - get_ddg_lang(): Get DDG's language identifier from SearXNG's locale.  DDG
    defines its languages by region codes.  DDG-Lite does not offer a language
    selection to the user, only a region can be selected by the user.

  - Cache ``vqd`` value: The vqd value depends on the query string and is needed
    for the follow up pages or the images loaded by a XMLHttpRequest (DDG
    images).  The ``vqd`` value of a search term is stored for 10min in the
    redis DB.

  - DDG Lite engine: reversed engineered request method with improved Language
    and region support and better ``vqd`` handling.

searx/engines/duckduckgo_definitions.py: DDG Instant Answer API
  The *instant answers* API does not support languages, or at least we could not
  find out how language support should work.  It seems that most of the features
  are based on English terms.

searx/engines/duckduckgo_images.py: DDG Images
  Reversed engineered request method.  Improved language and region handling
  based on cookies and the enigne.traits_v1 data.  Response: add image format to
  the result list

searx/engines/duckduckgo_weather.py: DDG Weather
  Improved language and region handling based on cookies and the
  enigne.traits_v1 data.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
e9afc4f8ce [mod] Startpage: reversed engineered & upgrade to data_type: traits_v1
One reason for the often seen CAPTCHA of the Startpage requests are the
incomplete requests SearXNG sends to startpage.com: this patch is a complete new
implementation of the ``request()`` function, reversed engineered from the
Startpage's search form.  The new implementation:

- use traits of data_type: traits_v1 and drop deprecated data_type: supported_languages
- adds time-range support
- adds save-search support
- fix searxng/searxng/issues 1884
- fix searxng/searxng/issues 1081 --> improvements to avoid CAPTCHA

In preparation for more categories (News, Images, Videos ..) from Startpage, the
variable ``startpage_categ`` was set up.  The default value is ``web`` and other
categories from Startpage are not yet implemented.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
858aa3e604 [mod] wikipedia & wikidata: upgrade to data_type: traits_v1
BTW this fix an issue in wikipedia: SearXNG's locales zh-TW and zh-HK are now
using language `zh-classical` from wikipedia (and not `zh`).

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
e0a6ca96cc [doc] add a description of bing engines (web, news, video, images)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
15eaf0f15f [mod] bing_news: use async API & upgrade to data_type: traits_v1
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
ff80e7637e [mod] bing_images: use async API & upgrade to data_type: traits_v1
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
bc21d28298 [mod] bing_videos: use async API & upgrade to data_type: traits_v1
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
d0f465e6fa [mod] bing: add time_range support & upgrade to data_type: traits_v1
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
c9cd376186 [mod] replace searx.languages by searx.sxng_locales
With the language and region tags from the EngineTraitsMap the handling of
SearXNG's tags of languages and regions has been normalized and is no longer
a *mystery*.  The "languages" became "locales" that are supported by babel and
by this, the update_engine_traits.py can be simplified a lot.

Other code places can be simplified as well, but these simplifications
should (respectively can) only be done when none of the engines work with the
deprecated EngineTraits.supported_languages interface anymore.

This commit replaces searx.languages by searx.sxng_locales and fix the naming of
some names from "language" to "locale" (e.g. language_codes --> sxng_locales).

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
7daf4f95ef [mod] Wikipedia: fetch engine traits (data_type: supported_languages)
Implements a fetch_traits function for the Wikipedia engines.

.. note::

   Does not include migration of the request methode from 'supported_languages'
   to 'traits' (EngineTraits) object!

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
f78f908383 [mod] Google: fetch engine traits (data_type: supported_languages)
Implements a fetch_traits function for the Google engines.

.. note::

   Does not include migration of the request methode from 'supported_languages'
   to 'traits' (EngineTraits) object!

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
dba8977b09 [mod] DuckDuckGo: fetch engine traits (data_type: supported_languages)
Implements a fetch_traits function for the DuckDuckGo engines.

.. note::

   Does not include migration of the request methode from 'supported_languages'
   to 'traits' (EngineTraits) object!

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
ef143729a0 [mod] yahoo: fetch engine traits (data_type: traits_v1)
Implements a fetch_traits function for the Yahoo engine.

.. note::

   Includes migration of the request methode from 'supported_languages' to
   'traits' (EngineTraits) object!

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
c1ae2ef57c [mod] qwant: fetch engine traits (data_type: traits_v1)
Implements a fetch_traits function for the Qwant engines.

.. note::

   Includes migration of the request methode from 'supported_languages' to
   'traits' (EngineTraits) object!

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
fc0c775030 [mod] Dailymotion: fetch engine traits (data_type: supported_languages)
Implements a fetch_traits function for the Dailymotion engine.

.. note::

   Does not include migration of the request methode from 'supported_languages'
   to 'traits' (EngineTraits) object!

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
61383edb27 [mod] Startpage: fetch engine traits (data_type: supported_languages)
Implements a fetch_traits function for the Startpage engine.

.. note::

   Does not include migration of the request methode from 'supported_languages'
   to 'traits' (EngineTraits) object!

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
d3aa690a7a [mod] bing: fetch engine traits (data_type: supported_languages)
Implements a fetch_traits function for the Bing engines.

.. note::

   Does not include migration of the request methode from 'supported_languages'
   to 'traits' (EngineTraits) object!

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
a7fe22770a [mod] Peertube: re-engineered & upgrade to data_type: traits_v1
- fetch_traits(): Fetch languages from peertube's search-index source code.

  [mod] Include migration of the request methode from 'supported_languages'
        to 'traits' (EngineTraits) object.
  [fix] old supported_languages_url is no longer valid since the sources
        has been moved to a different path.

- fixed code to pass pylint
- request(): complete re-implementation based on the API docs [1]
- response(): complete re-implementation, adds serveral fields missed before
- add source code documentation

[1] https://docs.joinpeertube.org/api-rest-reference.html#tag/Search/operation/searchVideos

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
6e5f22e558 [mod] replace engines_languages.json by engines_traits.json
Implementations of the *traits* of the engines.

Engine's traits are fetched from the origin engine and stored in a JSON file in
the *data folder*.  Most often traits are languages and region codes and their
mapping from SearXNG's representation to the representation in the origin search
engine.

To load traits from the persistence::

    searx.enginelib.traits.EngineTraitsMap.from_data()

For new traits new properties can be added to the class::

    searx.enginelib.traits.EngineTraits

.. hint::

   Implementation is downward compatible to the deprecated *supported_languages
   method* from the vintage implementation.

   The vintage code is tagged as *deprecated* an can be removed when all engines
   has been ported to the *traits method*.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-24 10:37:42 +01:00
Markus Heiser
64fea2f9cb Merge pull request #2280 from searxng/dependabot/pip/master/linuxdoc-20230321
Bump linuxdoc from 20221127 to 20230321
2023-03-24 10:22:08 +01:00
Markus Heiser
66ec5943e1 Merge pull request #2283 from searxng/revert-2279-dependabot/pip/master/redis-4.5.3
Revert "Bump redis from 4.5.1 to 4.5.3"
2023-03-24 10:18:40 +01:00
Markus Heiser
22a95f8771 Revert "Bump redis from 4.5.1 to 4.5.3" 2023-03-24 10:12:31 +01:00
Markus Heiser
183c084d36 Merge pull request #2279 from searxng/dependabot/pip/master/redis-4.5.3
Bump redis from 4.5.1 to 4.5.3
2023-03-24 10:05:03 +01:00
Markus Heiser
7b0aba8c51 Merge pull request #2281 from searxng/dependabot/pip/master/pylint-2.17.1
Bump pylint from 2.17.0 to 2.17.1
2023-03-24 09:43:04 +01:00
dependabot[bot]
76a432f0cd Bump linuxdoc from 20221127 to 20230321
Bumps [linuxdoc](https://github.com/return42/linuxdoc) from 20221127 to 20230321.
- [Release notes](https://github.com/return42/linuxdoc/releases)
- [Commits](https://github.com/return42/linuxdoc/commits)

---
updated-dependencies:
- dependency-name: linuxdoc
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-24 08:34:44 +00:00
Markus Heiser
ae62b25a8b Merge pull request #2278 from searxng/dependabot/pip/master/yamllint-1.30.0
Bump yamllint from 1.29.0 to 1.30.0
2023-03-24 09:33:53 +01:00
dependabot[bot]
912f877dec Bump ionicons from 6.1.3 to 7.1.0 in /searx/static/themes/simple
Bumps [ionicons](https://github.com/ionic-team/ionicons) from 6.1.3 to 7.1.0.
- [Release notes](https://github.com/ionic-team/ionicons/releases)
- [Changelog](https://github.com/ionic-team/ionicons/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ionic-team/ionicons/compare/v6.1.3...v7.1.0)

---
updated-dependencies:
- dependency-name: ionicons
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-24 07:57:14 +00:00
dependabot[bot]
6de90867d0 Bump pylint from 2.17.0 to 2.17.1
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.17.0 to 2.17.1.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.17.0...v2.17.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-24 07:57:01 +00:00
dependabot[bot]
deb9b20bd2 Bump redis from 4.5.1 to 4.5.3
Bumps [redis](https://github.com/redis/redis-py) from 4.5.1 to 4.5.3.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v4.5.1...v4.5.3)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-24 07:56:51 +00:00
dependabot[bot]
66289d8b72 Bump yamllint from 1.29.0 to 1.30.0
Bumps [yamllint](https://github.com/adrienverge/yamllint) from 1.29.0 to 1.30.0.
- [Release notes](https://github.com/adrienverge/yamllint/releases)
- [Changelog](https://github.com/adrienverge/yamllint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/adrienverge/yamllint/compare/v1.29.0...v1.30.0)

---
updated-dependencies:
- dependency-name: yamllint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-24 07:56:45 +00:00
Markus Heiser
0652eb420f Merge pull request #2277 from searxng/translations_update
Update translations
2023-03-24 08:19:16 +01:00
searxng-bot
9f3a57c901 [translations] update from Weblate
abfec8f4 - 2023-03-23 - return42 <markus.heiser@darmarit.de>
f02ea21c - 2023-03-23 - return42 <markus.heiser@darmarit.de>
3fc6c653 - 2023-03-20 - chenghui-lee <chlee9926@gmail.com>
342bbf46 - 2023-03-20 - return42 <markus.heiser@darmarit.de>
2023-03-24 07:07:52 +00:00
Alexandre Flament
3841435587 Merge pull request #2274 from searxng/codespaces
Add GitHub Codespaces configuration
2023-03-22 08:17:34 +01:00
Markus Heiser
41823da1b2 Merge pull request #2272 from Solirs/Wikidata_desc
wikidata: Add description for results
2023-03-22 06:03:48 +01:00
Alexandre Flament
7b711cb15d Add GitHub Codespaces configuration 2023-03-21 20:58:13 +00:00
Solirs
ac169a0f75 Pass black formatting test 2023-03-21 00:41:36 +01:00
Solirs
e26bce33d4 WIKIDATA: Add description for results 2023-03-21 00:14:54 +01:00
Markus Heiser
9dc36965bb Merge pull request #2268 from return42/editorconfig
[enh] add .editorconfig
2023-03-20 16:38:19 +01:00
Markus Heiser
60808fd3bd [enh] add .editorconfig
EditorConfig [1] helps maintain consistent coding styles for multiple developers
working on the same project across various editors and IDEs.

The EditorConfig specification [2] support is pre installed in common IDEs [3]
and plugins for many others are available [4].

[1] https://editorconfig.org
[2] https://editorconfig-specification.readthedocs.io/
[3] https://editorconfig.org/#pre-installed
[4] https://editorconfig.org/#download

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-20 12:29:12 +01:00
Markus Heiser
b61b845951 Merge pull request #2266 from return42/shuffle-cipher
[mod] Shuffle httpx's default ciphers of a SSL context randomly.
2023-03-20 12:28:05 +01:00
Markus Heiser
70e3fa9441 Merge pull request #2204 from return42/readme
[readme] reworked / partial merge of #2200
2023-03-19 15:31:45 +01:00
Markus Heiser
94430e104c Merge pull request #2238 from return42/fix-2027
[fix] fix threshold in replace_auto_language
2023-03-19 15:30:37 +01:00
Markus Heiser
f2962a2f4a Merge pull request #2239 from return42/fix-eslintrc
[fix] remove duplicate key in simple theme ESLint configuration
2023-03-19 15:30:12 +01:00
Markus Heiser
8fa54ffddf [mod] Shuffle httpx's default ciphers of a SSL context randomly.
From the analyse of @9Ninety [1] we know that DDG (and may be other engines / I
have startpage in mind) does some kind of TLS fingerprint to block bots.

This patch shuffles the default ciphers from httpx to avoid a cipher profile
that is known to httpx (and blocked by DDG).

[1] https://github.com/searxng/searxng/issues/2246#issuecomment-1467895556

----

From `What Is TLS Fingerprint and How to Bypass It`_

> When implementing TLS fingerprinting, servers can't operate based on a
> locked-in whitelist database of fingerprints.  New fingerprints appear
> when web clients or TLS libraries release new versions. So, they have to
> live off a blocklist database instead.
> ...
> It's safe to leave the first three as is but shuffle the remaining ciphers
> and you can bypass the TLS fingerprint check.

.. _What Is TLS Fingerprint and How to Bypass It:
   https://www.zenrows.com/blog/what-is-tls-fingerprint#how-to-bypass-tls-fingerprinting

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Closes: https://github.com/searxng/searxng/issues/2246
2023-03-19 13:40:31 +01:00
Markus Heiser
677903c355 Merge pull request #2257 from Solirs/fix_bad_escape
re.escape() the query in highlight_content to prevent a server side error.
2023-03-17 08:54:54 +01:00
Solirs
fbb0e9d275 [fix] server side error: escape backslashes in the query highlight_content
Any backslash escapes in the replacement are processed [1], backslashes should
be escaped [2].

[1] https://docs.python.org/3/library/re.html#re.sub
[2] https://docs.python.org/3/library/re.html#re.escape

closes:
- https://github.com/searxng/searxng/issues/2256
- https://github.com/searxng/searxng/issues/2250
2023-03-17 08:46:00 +01:00
Markus Heiser
0e1010988d Merge pull request #2262 from searxng/translations_update
Update translations
2023-03-17 08:41:29 +01:00
searxng-bot
86c3757872 [translations] update from Weblate
32926a19 - 2023-03-15 - return42 <markus.heiser@darmarit.de>
7aabc876 - 2023-03-16 - Linerly <linerly@protonmail.com>
c0ed00f5 - 2023-03-14 - SonoAX <giovanniilgiovo@gmail.com>
6cf287f6 - 2023-03-13 - RhysJones <proladrhys123@outlook.com>
8c4c5f83 - 2023-03-12 - Cavemanly <k.adel.2m@protonmail.com>
dffe61fa - 2023-03-10 - return42 <markus.heiser@darmarit.de>
c7736cac - 2023-03-10 - BalkanMadman <zurabid2016@gmail.com>
e831b8e3 - 2023-03-10 - BalkanMadman <zurabid2016@gmail.com>
ef3c60af - 2023-03-10 - return42 <markus.heiser@darmarit.de>
c046a677 - 2023-03-07 - BalkanMadman <zurabid2016@gmail.com>
142041d6 - 2023-03-05 - return42 <markus.heiser@darmarit.de>
119b51df - 2023-03-05 - return42 <markus.heiser@darmarit.de>
2023-03-17 07:07:53 +00:00
Alexandre Flament
3e9cddc606 rollback test 2023-03-15 19:55:20 +01:00
Alexandre Flament
41ed0ef0c7 test 2023-03-15 19:53:53 +01:00
Markus Heiser
f59ef7839a Merge pull request #2214 from searxng/dependabot/pip/master/selenium-4.8.2
Bump selenium from 4.8.0 to 4.8.2
2023-03-15 18:50:51 +01:00
Markus Heiser
d4f328dacb Merge pull request #2244 from searxng/dependabot/pip/master/myst-parser-1.0.0
Bump myst-parser from 0.18.1 to 1.0.0
2023-03-15 18:47:02 +01:00
dependabot[bot]
3f1762410c Bump myst-parser from 0.18.1 to 1.0.0
Bumps [myst-parser](https://github.com/executablebooks/MyST-Parser) from 0.18.1 to 1.0.0.
- [Release notes](https://github.com/executablebooks/MyST-Parser/releases)
- [Changelog](https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/executablebooks/MyST-Parser/compare/v0.18.1...v1.0.0)

---
updated-dependencies:
- dependency-name: myst-parser
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-15 17:40:16 +00:00
Markus Heiser
097d092a7f Merge pull request #2224 from searxng/update_data_update_currencies.py
Update searx.data - update_currencies.py
2023-03-15 18:36:29 +01:00
Markus Heiser
85ef1af343 Merge pull request #2222 from searxng/update_data_update_wikidata_units.py
Update searx.data - update_wikidata_units.py
2023-03-15 18:35:36 +01:00
Markus Heiser
60fdaba707 Merge pull request #2215 from searxng/dependabot/pip/master/markdown-it-py-2.2.0
Bump markdown-it-py from 2.1.0 to 2.2.0
2023-03-15 18:27:58 +01:00
Markus Heiser
e93e62582b Merge pull request #2243 from searxng/dependabot/pip/master/pylint-2.17.0
Bump pylint from 2.16.2 to 2.17.0
2023-03-15 18:23:52 +01:00
Markus Heiser
2535e9d9ea Merge pull request #2212 from searxng/translations_update
Update translations
2023-03-15 18:20:43 +01:00
dependabot[bot]
25fe7bf954 Bump pylint from 2.16.2 to 2.17.0
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.16.2 to 2.17.0.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.16.2...v2.17.0)

---
updated-dependencies:
- dependency-name: pylint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-10 07:56:36 +00:00
Markus Heiser
a7f1649190 [fix] remove duplicate key in simple theme ESLint configuration
Partial merge of [PR-1736]

[PR-1736] https://github.com/searxng/searxng/pull/1736

Suggested-by: @FunctionalHacker in [1]
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-05 09:12:13 +01:00
Markus Heiser
150a90c84e [fix] fix threshold in replace_auto_language
[1] https://github.com/searxng/searxng/pull/2027#pullrequestreview-1322157677
[2] https://github.com/searxng/searxng/pull/1969#issuecomment-1345354529

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-05 08:29:58 +01:00
searxng-bot
1f36fc3a45 [translations] update from Weblate
0d8ebfe1 - 2023-03-02 - AHOHNMYC <lqwh2h2cwa@protonmail.com>
1358dd6d - 2023-03-03 - mystery-z <07juwonc@kakao.com>
4d8c13db - 2023-03-01 - lhostfree951 <freeehost9191@gmail.com>
1ae581b6 - 2023-02-28 - tygyh <jonis9898@hotmail.com>
0003698f - 2023-02-28 - ewm <gnu.ewm@protonmail.com>
31c79617 - 2023-02-28 - gjveld <gjveld@gmail.com>
9015ec73 - 2023-02-28 - gallegonovato <fran-carro@hotmail.es>
03619a68 - 2023-02-25 - BalkanMadman <zurabid2016@gmail.com>
fa90585b - 2023-02-25 - BalkanMadman <zurabid2016@gmail.com>
c902c5e5 - 2023-02-26 - tentsbet <remendne@pentrens.jp>
2023-03-03 07:08:08 +00:00
Alexandre Flament
abd2d8605e Merge pull request #2231 from return42/fix-docs_prebuild
[fix] make docs: NameError: name 'DOC' is not defined
2023-03-02 18:37:25 +01:00
Markus Heiser
0c725109e8 [fix] make docs: NameError: name 'DOC' is not defined
To reproduce the issue set base_url::

    diff --git a/searx/settings.yml b/searx/settings.yml
    index 841457b5e..4e282cb61 100644
    --- a/searx/settings.yml
    +++ b/searx/settings.yml
    @@ -72,7 +72,7 @@ server:
       bind_address: "127.0.0.1"
       # public URL of the instance, to ensure correct inbound links. Is overwritten
       # by ${SEARXNG_URL}.
    -  base_url: false  # "http://example.com/location"
    +  base_url: "http://example.com/location"
       limiter: false  # rate limit the number of request on the instance, block some bots

and build the docs::

    $ make docs
    SPHINX    HTML ./docs --> file:///800GBPCIex4/share/SearXNG/dist/docs
    DOCS      build build/docs/includes
    Traceback (most recent call last):
      File "searxng_extra/docs_prebuild", line 85, in <module>
        sys.exit(main())
      File "searxng_extra/docs_prebuild", line 31, in main
        f.write(page.content)
      File "/usr/lib/python3.8/contextlib.py", line 120, in __exit__
        next(self.gen)
      File "searxng_extra/docs_prebuild", line 81, in _instance_infosetset_ctx
        return DOC
    NameError: name 'DOC' is not defined

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-03-02 16:43:32 +01:00
Alexandre Flament
714e83d5ea Merge pull request #2220 from Solirs/gentoo_engine_timeout
Increase timeout for gentoo wiki engine
2023-03-01 17:57:21 +01:00
Alexandre Flament
1632f18631 Merge pull request #2227 from searxng/update_data_update_engine_descriptions.py
Update searx.data - update_engine_descriptions.py
2023-03-01 17:52:57 +01:00
Alexandre Flament
5bbbb14b62 Merge pull request #2226 from searxng/update_data_update_ahmia_blacklist.py
Update searx.data - update_ahmia_blacklist.py
2023-03-01 17:52:02 +01:00
Alexandre Flament
507cdf3fd3 Merge pull request #2223 from searxng/update_data_update_firefox_version.py
Update searx.data - update_firefox_version.py
2023-03-01 17:51:40 +01:00
dalf
5042d94dea Update searx.data - update_engine_descriptions.py 2023-03-01 01:48:22 +00:00
dalf
e30a45812f Update searx.data - update_ahmia_blacklist.py 2023-03-01 01:38:07 +00:00
dalf
935415bfcf Update searx.data - update_currencies.py 2023-03-01 01:37:46 +00:00
dalf
ccd00518fd Update searx.data - update_firefox_version.py 2023-03-01 01:37:42 +00:00
dalf
d7f10909fa Update searx.data - update_wikidata_units.py 2023-03-01 01:37:25 +00:00
Solirs
35fbb3578b Increase timeout for gentoo wiki engine 2023-02-28 13:54:44 +01:00
dependabot[bot]
a752d30e08 Bump markdown-it-py from 2.1.0 to 2.2.0
Bumps [markdown-it-py](https://github.com/executablebooks/markdown-it-py) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/executablebooks/markdown-it-py/releases)
- [Changelog](https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/executablebooks/markdown-it-py/compare/v2.1.0...v2.2.0)

---
updated-dependencies:
- dependency-name: markdown-it-py
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-24 07:56:40 +00:00
dependabot[bot]
22c6bc3b57 Bump selenium from 4.8.0 to 4.8.2
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.8.0 to 4.8.2.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-24 07:56:36 +00:00
Alexandre Flament
d669da81fb Merge pull request #2027 from dalf/fix_2018
Add "auto" as a language.
2023-02-20 12:17:38 +01:00
Markus Heiser
60e181607d Merge pull request #2196 from searxng/translations_update
Update translations
2023-02-19 12:58:06 +01:00
searxng-bot
297e463e49 [translations] update from Weblate
8ff0fa33 - 2023-02-19 - return42 <markus.heiser@darmarit.de>
2023-02-19 11:46:59 +00:00
Markus Heiser
0b1444b61e [doc] improved docs of implementations for automatic speech recognition
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-02-19 10:09:52 +00:00
Allan Nordhøy
145cac877e [readme] reworked / partial merge of #2200
Related:

- https://github.com/searxng/searxng/pull/2203
- https://github.com/searxng/searxng/pull/2200#issuecomment-1434594489

Closes: https://github.com/searxng/searxng/pull/2200
2023-02-19 09:27:33 +01:00
Markus Heiser
363203c579 Merge pull request #2201 from return42/fix-2190
[doc] slight improvements to the doc of the settings (base_url)
2023-02-18 18:21:14 +01:00
Alexandre Flament
6748e8e2d5 Add "Auto-detected" as a language.
When the user choose "Auto-detected", the choice remains on the following queries.
The detected language is displayed.

For example "Auto-detected (en)":
* the next query language is going to be auto detected
* for the current query, the detected language is English.

This replace the autodetect_search_language plugin.
2023-02-17 15:17:36 +00:00
Markus Heiser
54389a29fe Merge pull request #2202 from return42/fix-typo
[fix] typo in searx/plugins/tor_check.py
2023-02-17 13:16:27 +01:00
Markus Heiser
bb83036f48 [fix] typo in searx/plugins/tor_check.py
Related: https://github.com/searxng/searxng/pull/2189

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-02-17 13:09:14 +01:00
Markus Heiser
5820dc78ce [doc] slight improvements to the doc of the settings (base_url)
Closes: https://github.com/searxng/searxng/issues/2190

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-02-17 12:08:58 +01:00
Markus Heiser
b22355503f Merge pull request #2199 from searxng/dependabot/pip/master/pylint-2.16.2
Bump pylint from 2.16.1 to 2.16.2
2023-02-17 09:13:21 +01:00
Markus Heiser
d3feea1e07 Merge pull request #2197 from searxng/dependabot/pip/master/flask-2.2.3
Bump flask from 2.2.2 to 2.2.3
2023-02-17 09:08:55 +01:00
Markus Heiser
a65d8e2cf7 Merge pull request #2198 from searxng/dependabot/pip/master/typing-extensions-4.5.0
Bump typing-extensions from 4.4.0 to 4.5.0
2023-02-17 09:02:28 +01:00
dependabot[bot]
0bcefadd6d Bump pylint from 2.16.1 to 2.16.2
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.16.1 to 2.16.2.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.16.1...v2.16.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-17 07:57:06 +00:00
dependabot[bot]
331b14906d Bump typing-extensions from 4.4.0 to 4.5.0
Bumps [typing-extensions](https://github.com/python/typing_extensions) from 4.4.0 to 4.5.0.
- [Release notes](https://github.com/python/typing_extensions/releases)
- [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/python/typing_extensions/compare/4.4.0...4.5.0)

---
updated-dependencies:
- dependency-name: typing-extensions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-17 07:56:57 +00:00
dependabot[bot]
9811e9910c Bump flask from 2.2.2 to 2.2.3
Bumps [flask](https://github.com/pallets/flask) from 2.2.2 to 2.2.3.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/2.2.2...2.2.3)

---
updated-dependencies:
- dependency-name: flask
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-17 07:56:54 +00:00
Markus Heiser
52f6bc745b Merge pull request #2188 from ahmad-alkadri/fix/petalsearch
Fix the petalsearch engine
2023-02-15 13:57:28 +01:00
Markus Heiser
ba5b6c382f Merge pull request #2192 from return42/fix-tineye
[mod] disbale engine tineye by default
2023-02-15 06:43:41 +01:00
Markus Heiser
405307d556 Merge pull request #2189 from comradekingu/patch-1
Spelling: Tor, SearXNG
2023-02-14 19:04:52 +01:00
Ahmad Alkadri
f6af59899b Fix petalsearch and remove petalsearch news 2023-02-14 18:43:55 +01:00
Allan Nordhøy
2be373a18f [fix] spelling: Tor, SearXNG 2023-02-14 17:13:53 +01:00
Markus Heiser
7d446dfdb2 [mod] disbale engine tineye by default
Tineye becomes active as soon as a https:// signature is found in the search
term, but most of the time a reverse image search is not requested when a URL is
specified, often the URL is just from a C&P.

The frequent requests to tineye lead in the end to the SearXNG instance being
blocked by tineye and the user seeing unexpected error messages.

BTW: many maintainers have disabled this engine in their local SearXNG settings.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-02-14 08:27:19 +01:00
Markus Heiser
295c87a926 Merge pull request #2187 from blob42/update-doc
[doc] add example for enabling an engine disabled by default
2023-02-13 08:37:46 +01:00
blob42
27809c84f8 [doc] add example for enabling an engine disabled by default 2023-02-12 18:33:38 +01:00
Alexandre Flament
675dc04917 Merge pull request #2183 from return42/node.env.dev
[mod] install developer tools by: make node.env.dev
2023-02-11 18:30:29 +01:00
Markus Heiser
92a0457532 Merge pull request #2184 from return42/emacs-lsp
[emacs] .dir-locals.el: add Language Server Protocol Support (LSP)
2023-02-11 18:00:30 +01:00
Markus Heiser
cedef9930b [emacs] .dir-locals.el: add Language Server Protocol Support (LSP)
Add LSP and update comment strings for full fledge developer tools.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-02-11 13:36:53 +01:00
Markus Heiser
3eed80a074 [mod] install developer tools by: make node.env.dev
- rename ``./manage node.env.devtools`` to ``./manage node.env.dev``
- add ``make node.env.dev``
- remove local developer tools by ``make node.clean``

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-02-11 13:33:43 +01:00
Markus Heiser
7cbfa6a8dd Merge pull request #2182 from return42/fix-make-nvm
[fix] make nvm.env exit with error when VERBOSE is unset
2023-02-11 13:31:51 +01:00
Markus Heiser
eebb489fb7 [fix] make nvm.env exit with error when VERBOSE is unset
$ make nvm.install
    INFO:  install (update) NVM at /800GBPCIex4/share/SearXNG/.nvm
    INFO:  already cloned at: /800GBPCIex4/share/SearXNG/.nvm
      || Fetching origin
    INFO:  checkout v0.39.1
      || HEAD is now at 9600617 v0.39.1
    make: *** [Makefile:96: nvm.install] Error 1

Without this fix we need to set VERBOSE environment to avoid the 'Error 1':

    $ VERBOSE=0 make nvm.install

BTW: fix an issue if there are any leftovers in ${NVM_DIR} from previos
installations

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-02-11 13:18:07 +01:00
Markus Heiser
2cf1425e8b Merge pull request #2177 from return42/rm-neeva
[fix] remove engine neeva from settings.yml
2023-02-10 18:55:45 +01:00
Markus Heiser
3abff182ea [fix] remove engine neeva from settings.yml
Engine is broken and can't by used any longer as a simple XPath engine.
@allendema tested a engines/neeva.py version using json from the dom, but
without luck: There was some kind of captcha for pagination.

[1] https://github.com/searxng/searxng/issues/2007#issuecomment-1426061698

Closes: https://github.com/searxng/searxng/issues/2007
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-02-10 18:46:37 +01:00
Lea
a530ac4099 fix: typo in suggestions 2023-02-10 15:33:25 +01:00
Markus Heiser
415f6398d6 [fix] time_range in HTML form should not be a string 'None'
Before this patch SearXNG returns 'time_range': 'None'::

    <form method="GET" action="/searx/search">
      ...
      <input type="hidden" name="time_range" value="None">
      ...
    </form>

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-02-10 15:32:21 +01:00
Markus Heiser
9a710587e8 [fix] remove usage of deprecated-module distutis
Closes: https://github.com/searxng/searxng/issues/2168

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-02-10 15:31:54 +01:00
wibyweb
6707354bc8 [mod] engine wiby: add pagination
Suggested by: @wibyweb in searx https://github.com/searx/searx/pull/3465

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-02-10 15:31:24 +01:00
Markus Heiser
9c00b9fed1 Merge pull request #2174 from searxng/dependabot/pip/master/redis-4.5.1
Bump redis from 4.4.2 to 4.5.1
2023-02-10 15:17:59 +01:00
dependabot[bot]
a7284e0b9c Bump redis from 4.4.2 to 4.5.1
Bumps [redis](https://github.com/redis/redis-py) from 4.4.2 to 4.5.1.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v4.4.2...v4.5.1)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-10 15:04:42 +01:00
Markus Heiser
3ebbdc179c Merge pull request #2173 from searxng/dependabot/pip/master/pylint-2.16.1
Bump pylint from 2.15.10 to 2.16.1
2023-02-10 14:15:38 +01:00
dependabot[bot]
f1a3872aeb Bump pylint from 2.15.10 to 2.16.1
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.15.10 to 2.16.1.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.15.10...v2.16.1)

---
updated-dependencies:
- dependency-name: pylint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-10 13:59:21 +01:00
Markus Heiser
4c06837a50 [mod] make python code pylint 2.16.1 compliant
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-02-10 13:59:21 +01:00
Markus Heiser
7320b0c796 Merge pull request #2130 from searxng/translations_update
Update translations
2023-02-04 17:53:20 +01:00
Markus Heiser
716463fef8 Merge pull request #2158 from searxng/dependabot/npm_and_yarn/searx/static/themes/simple/master/grunt-1.6.1
Bump grunt from 1.5.3 to 1.6.1 in /searx/static/themes/simple
2023-02-04 17:35:02 +01:00
dependabot[bot]
a5a73d77b3 Bump grunt from 1.5.3 to 1.6.1 in /searx/static/themes/simple
Bumps [grunt](https://github.com/gruntjs/grunt) from 1.5.3 to 1.6.1.
- [Release notes](https://github.com/gruntjs/grunt/releases)
- [Changelog](https://github.com/gruntjs/grunt/blob/main/CHANGELOG)
- [Commits](https://github.com/gruntjs/grunt/compare/v1.5.3...v1.6.1)

---
updated-dependencies:
- dependency-name: grunt
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-04 08:10:18 +00:00
Markus Heiser
233ee1bb15 Merge pull request #2157 from searxng/dependabot/pip/master/selenium-4.8.0
Bump selenium from 4.7.2 to 4.8.0
2023-02-04 09:06:55 +01:00
Markus Heiser
01492cf1cc Merge pull request #2160 from searxng/dependabot/pip/master/flask-babel-3.0.1
Bump flask-babel from 3.0.0 to 3.0.1
2023-02-04 09:05:44 +01:00
dependabot[bot]
e6285aed94 Bump selenium from 4.7.2 to 4.8.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.7.2 to 4.8.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits/selenium-4.8.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-04 07:22:43 +00:00
Markus Heiser
4bc69c803d Merge pull request #2156 from searxng/dependabot/pip/master/splinter-0.19.0
Bump splinter from 0.18.1 to 0.19.0
2023-02-04 08:21:55 +01:00
Markus Heiser
9faf0dc289 Merge pull request #2161 from return42/fix-2146
[fix-2146] set different HTTP Referer header to DuckDuckGo requests
2023-02-03 10:35:52 +01:00
Markus Heiser
257dc7d6c4 [fix-2146] set different HTTP Referer header to DuckDuckGo requests
For what ever reasons, ddg-lite don't like the Referer

  https://lite.duckduckgo.com/

In an interactive session in the WEB browser the the Reverer has exactly this
value, but ddg-lite don't like this value when the request is build up by
SearXNG.  The new value is:

  https://google.com/

What fakes a user comes from a google link.

Related: https://github.com/searxng/searxng/pull/2081
Closes: https://github.com/searxng/searxng/issues/2146

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-02-03 08:45:51 +01:00
searxng-bot
8db35f8e9c [translations] update from Weblate
009d48c2 - 2023-02-01 - tygyh <jonis9898@hotmail.com>
a5353bad - 2023-02-01 - Mooo <moose@mail.ru>
1617f458 - 2023-01-28 - emirhan <xemirhankoc@gmail.com>
79bc60f4 - 2023-01-29 - ewm <gnu.ewm@protonmail.com>
2023-02-03 07:15:25 +00:00
dependabot[bot]
0bf7f287bb Bump flask-babel from 3.0.0 to 3.0.1
Bumps [flask-babel](https://github.com/python-babel/flask-babel) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/python-babel/flask-babel/releases)
- [Changelog](https://github.com/python-babel/flask-babel/blob/master/CHANGELOG)
- [Commits](https://github.com/python-babel/flask-babel/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: flask-babel
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-03 07:01:13 +00:00
dependabot[bot]
4a456f00fd Bump splinter from 0.18.1 to 0.19.0
Bumps [splinter](https://github.com/cobrateam/splinter) from 0.18.1 to 0.19.0.
- [Release notes](https://github.com/cobrateam/splinter/releases)
- [Changelog](https://github.com/cobrateam/splinter/blob/master/docs/news.rst)
- [Commits](https://github.com/cobrateam/splinter/compare/0.18.1...0.19.0)

---
updated-dependencies:
- dependency-name: splinter
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-03 07:00:57 +00:00
Markus Heiser
d9ab83642f Merge pull request #2148 from return42/lxc-ubu2204
[LXC] ubuntu 21.10 upgrade to ubuntu 22.04 LTS
2023-02-01 10:06:48 +01:00
Markus Heiser
c90e157ddd [LXC] ubuntu 21.10 upgrade to ubuntu 22.04 LTS [1]
[1] https://wiki.ubuntu.com/Releases

Tested by::

    # build the container ..
    $ sudo -H ./utils/lxc.sh build searxng-ubu2204

    # install a complete SearXNG suite ..
    $ sudo -H ./utils/lxc.sh cmd searxng-ubu2204 FORCE_TIMEOUT=0 ./utils/searxng.sh install all

    # install nginx to export the SearXNG instance by HTTP
    $ sudo -H ./utils/lxc.sh cmd searxng-ubu2204 FORCE_TIMEOUT=0 ./utils/searxng.sh install nginx

    # check instance
    $  sudo -H ./utils/lxc.sh cmd searxng-ubu2204 FORCE_TIMEOUT=0 ./utils/searxng.sh instance check
    INFO:  [searxng-ubu2204] FORCE_TIMEOUT=0 ./utils/searxng.sh instance check
    INFO:  wrapper:  utils/searxng.sh instance _call searxng.check

    SearXNG checks
    --------------
    ...
    INFO    searx                         : merge the default settings ( /usr/local/searxng/searxng-src/searx/settings.yml ) and the user settings ( /etc/searxng/settings.yml )
    INFO    searx                         : max_request_timeout=None
    INFO    searx.redisdb                 : connecting to Redis db=0 path='/usr/local/searxng-redis/run/redis.sock'
    INFO    searx.redisdb                 : connected to Redis

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-02-01 09:30:13 +01:00
Alexandre Flament
9d102fb08f Merge pull request #2132 from dalf/update_pr_1967
search.suspended_time settings: bug fixes
2023-01-29 20:48:43 +01:00
Markus Heiser
031162be04 [doc] settings.py document search.suspended_times
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-01-29 19:26:16 +00:00
Markus Heiser
feccee01c0 [doc] Add doc-strings to searx.exceptions
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-01-29 19:06:19 +01:00
Markus Heiser
4f808088f1 Merge pull request #2139 from dalf/fix_update_languages
Fix update languages
2023-01-29 17:59:59 +01:00
Markus Heiser
d989c9429f Merge pull request #2134 from searxng/update_data_update_wikidata_units.py
Update searx.data - update_wikidata_units.py
2023-01-29 17:59:40 +01:00
Markus Heiser
5c2667b956 Merge pull request #2135 from searxng/update_data_update_ahmia_blacklist.py
Update searx.data - update_ahmia_blacklist.py
2023-01-29 17:59:03 +01:00
Markus Heiser
e6a17f2fae Merge pull request #2136 from searxng/update_data_update_firefox_version.py
Update searx.data - update_firefox_version.py
2023-01-29 17:58:22 +01:00
Markus Heiser
c4cbf8829a Merge pull request #2137 from searxng/update_data_update_currencies.py
Update searx.data - update_currencies.py
2023-01-29 17:57:56 +01:00
Markus Heiser
2b60124546 Merge pull request #2138 from searxng/update_data_update_engine_descriptions.py
Update searx.data - update_engine_descriptions.py
2023-01-29 17:57:25 +01:00
Alexandre Flament
bfca63c536 wikipedia engine: update _fetch_supported_languages
the layout https://meta.wikimedia.org/wiki/List_of_Wikipedias has changed
2023-01-29 10:01:58 +00:00
Alexandre Flament
8256de2fe8 peertube engine: update _fetch_supported_languages
There is now an API to get the list of supported languages
https://docs.joinpeertube.org/api-rest-reference.html#tag/Video/operation/getLanguages
2023-01-29 10:01:54 +00:00
dalf
f900e33092 Update searx.data - update_engine_descriptions.py 2023-01-29 01:33:29 +00:00
dalf
dafe026815 Update searx.data - update_currencies.py 2023-01-29 01:24:14 +00:00
dalf
47435be70b Update searx.data - update_firefox_version.py 2023-01-29 01:23:43 +00:00
dalf
53a4a90d0c Update searx.data - update_wikidata_units.py 2023-01-29 01:23:42 +00:00
dalf
9dd95457a9 Update searx.data - update_ahmia_blacklist.py 2023-01-29 01:23:42 +00:00
Alexandre Flament
37addec69e search.suspended_time settings: bug fixes
* fix type in settings.yml: replace suspend_times by suspended_times
* always use delay defined in settings.yml:
  * HTTP status 402 and 403: read the value from settings.yml instead of using the hardcoded value of 1 day.
  * startpage engine: CAPTCHA suspend the engine for one day instead of one week
2023-01-28 10:24:14 +00:00
Alexandre Flament
6b71721ce8 Merge pull request #2106 from searxng/dependabot/pip/master/mock-5.0.1
Bump mock from 5.0.0 to 5.0.1
2023-01-27 11:51:42 +01:00
dependabot[bot]
f53ef5587c Bump mock from 5.0.0 to 5.0.1
Bumps [mock](https://github.com/testing-cabal/mock) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/testing-cabal/mock/releases)
- [Changelog](https://github.com/testing-cabal/mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/testing-cabal/mock/compare/5.0.0...5.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-27 09:45:04 +00:00
Alexandre Flament
7d676880e2 Merge pull request #2104 from searxng/dependabot/pip/master/yamllint-1.29.0
Bump yamllint from 1.28.0 to 1.29.0
2023-01-27 10:44:44 +01:00
Alexandre Flament
f6c6de2f9e Merge pull request #2103 from searxng/dependabot/pip/master/pylint-2.15.10
Bump pylint from 2.15.9 to 2.15.10
2023-01-27 10:44:14 +01:00
Alexandre Flament
28356f4284 Merge pull request #2115 from searxng/dependabot/pip/master/flask-babel-3.0.0
Bump flask-babel from 2.0.0 to 3.0.0
2023-01-27 10:43:17 +01:00
Paul Braeuning
522ba9a14b Merge pull request #2069 from llmII/feat-pagination-numbered
Feature: Support numbered pagination.
2023-01-23 23:06:24 +01:00
mrpaulblack
b3883dc395 [build] /static 2023-01-23 23:00:38 +01:00
mrpaulblack
8ead23347f [fix] use input elements for pagination requests
* use html input elements instead of buttons for the pagination forms at the bottom of the result page
* move the less section that hides the pagination number widget on mobile to the mobile section
* clean up the less code for styling the numbers of the pagination widget
* fix: add the margin for box results (like in news category) to the bottom of the result to have a margin between pagination widget and article result
2023-01-23 22:56:55 +01:00
llmII
d2b2300ee1 Feature: Pagination Widget with list of numbers.
Adds to the navigation widget, preserving forward/backward nav, and
inserting a list of clickable page numbers between them.

Phone sized devices continue without this widget as deterministic
display under small screen sizes has not been solved.

The widget is agnostic to the actual amount of pages there are that one
can navigate to and as such shows all plausible, albeit not necessarilly
valid, possibilities.

This widget does not interfere with infinite scroll in any fashion.
2023-01-23 21:22:06 +01:00
Alexandre Flament
a8eb9d15e2 Merge pull request #2122 from dalf/fix_version_again
SearXNG version: YYYY.MM.DD without leading zero
2023-01-22 14:31:00 +01:00
Alexandre Flament
06b5068a2e SearXNG version: YYYY.MM.DD without leading zero 2023-01-22 10:45:00 +00:00
Alexandre Flament
674dae946a Merge pull request #2119 from dalf/weblate_codeberg
weblate: migration to https://translate.codeberg.org/
2023-01-21 17:01:16 +01:00
Alexandre Flament
a9d6f7532a weblate: migration to https://translate.codeberg.org/ 2023-01-21 15:45:12 +00:00
Alexandre Flament
316fcd5e4b Merge pull request #2116 from searxng/translations_update
Update translations
2023-01-20 13:11:50 +01:00
searxng-bot
6e4c8b3516 [translations] update from Weblate 2023-01-20 11:32:23 +00:00
Alexandre Flament
934d97b472 Merge pull request #2118 from dalf/fix_version_continuation
SearXNG version: fix make docker
2023-01-20 12:31:24 +01:00
Alexandre Flament
f759a84af4 SearXNG version: fix make docker
continuation of #2117
related to #2111

This commit:
* fixes the Docker tag using an additional variable DOCKER_TAG, see searx/version.py
* fixes the Docker labels org.label-schema.vcs-ref and org.opencontainers.image.revision
* adds searx/version_frozen to .gitignore
2023-01-20 10:46:00 +00:00
dependabot[bot]
70fff2ebf1 Bump flask-babel from 2.0.0 to 3.0.0
Bumps [flask-babel](https://github.com/python-babel/flask-babel) from 2.0.0 to 3.0.0.
- [Release notes](https://github.com/python-babel/flask-babel/releases)
- [Changelog](https://github.com/python-babel/flask-babel/blob/master/CHANGELOG)
- [Commits](https://github.com/python-babel/flask-babel/compare/v2.0.0...v3.0.0)

---
updated-dependencies:
- dependency-name: flask-babel
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-20 09:38:30 +00:00
Alexandre Flament
eed9b09d98 Merge pull request #2117 from dalf/fix_version_number
Version number follows PEP440 : replace - by +
2023-01-20 10:17:08 +01:00
Alexandre Flament
0515f2974b Version number follows PEP440 : replace - by +
Close #2111
2023-01-20 09:05:44 +00:00
Alexandre Flament
6d72ef3cbe Merge pull request #2109 from ahmad-alkadri/fix/highlight-full-word
Standalone words highlighting for query result in non-CJK characters
2023-01-17 23:24:04 +01:00
Alexandre Flament
13b0c251c4 Merge pull request #2100 from nexryai/master
Add goo engine
2023-01-15 23:08:28 +01:00
ahmad-alkadri
99b5272d9a A little fix and modified the testing for content highlight 2023-01-15 16:51:31 +01:00
Alexandre Flament
52d4155997 Merge pull request #1967 from tiekoetter/suspended_time-settings
settings.yml: add search.suspended_times
2023-01-15 10:07:44 +01:00
Léon Tiekötter
0cedb1c6d8 Add search.suspended_times settings
Make suspended_time changeable in settings.yml
Allow different values to be set for different exceptions.

Co-authored-by: Alexandre Flament <alex@al-f.net>
2023-01-15 09:00:32 +00:00
ahmad-alkadri
6c421110b5 Perso branch - added cjk check and enclosement 2023-01-14 23:00:08 +00:00
Alexandre Flament
b720a495f0 Merge pull request #2105 from searxng/dependabot/pip/master/redis-4.4.2
Bump redis from 4.4.0 to 4.4.2
2023-01-14 18:28:17 +01:00
Alexandre Flament
449aebaea6 Merge pull request #2107 from searxng/translations_update
Update translations
2023-01-14 18:27:54 +01:00
Alexandre Flament
18d895ffed Merge pull request #2097 from immanuelfodor/patch-1
Adjust uWSGI workers and threads from env
2023-01-14 16:36:57 +01:00
searxng-bot
3e5ea08504 [translations] update from Weblate
6a57ee0b - 2023-01-11 - Markus Heiser <markus.heiser@darmarit.de>
b180a810 - 2023-01-06 - Nik Drešar <nik.dresar@gmail.com>
8710174a - 2023-01-11 - Markus Heiser <markus.heiser@darmarit.de>
529a2591 - 2023-01-08 - Markus Heiser <markus.heiser@darmarit.de>
a254bd01 - 2023-01-08 - Markus Heiser <markus.heiser@darmarit.de>
860c3fce - 2023-01-11 - Markus Heiser <markus.heiser@darmarit.de>
c140fb52 - 2023-01-06 - Markus Heiser <markus.heiser@darmarit.de>
2023-01-13 07:14:55 +00:00
dependabot[bot]
4212ffe73b Bump redis from 4.4.0 to 4.4.2
Bumps [redis](https://github.com/redis/redis-py) from 4.4.0 to 4.4.2.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v4.4.0...v4.4.2)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-13 07:01:09 +00:00
dependabot[bot]
656394f400 Bump yamllint from 1.28.0 to 1.29.0
Bumps [yamllint](https://github.com/adrienverge/yamllint) from 1.28.0 to 1.29.0.
- [Release notes](https://github.com/adrienverge/yamllint/releases)
- [Changelog](https://github.com/adrienverge/yamllint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/adrienverge/yamllint/compare/v1.28.0...v1.29.0)

---
updated-dependencies:
- dependency-name: yamllint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-13 07:01:03 +00:00
dependabot[bot]
86d93c49af Bump pylint from 2.15.9 to 2.15.10
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.15.9 to 2.15.10.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.15.9...v2.15.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-13 07:00:59 +00:00
nexryai
4e7bb1bf9a Add goo engine 2023-01-12 16:28:09 +09:00
Immánuel!
caf4785663 Let uWSGI workers and threads be adjustable from env 2023-01-11 14:53:36 +01:00
Markus Heiser
afd71a6c0f Merge pull request #2089 from ahmad-alkadri/fix/bing-check-nolinks
Added a check to see if the element contains links
2023-01-09 15:17:31 +01:00
Ahmad Alkadri
7fc8d72889 [fix] bing: parsing result; check to see if the element contains links
This patch is to hardening the parsing of the bing response:

1. To fix [2087] check if the selected result item contains a link, otherwise
   skip result item and continue in the result loop.  Increment the result
   pointer when a result has been added / the enumerate that counts for skipped
   items is no longer valid when result items are skipped.

   To test the bugfix use:   ``!bi :all cerbot``

2. Limit the XPath selection of result items to direct children nodes (list
   items ``li``) of the ordered list (``ol``).

   To test the selector use: ``!bi :en pontiac aztek wiki``

   .. in the result list you should find the wikipedia entry on top,
   compare [2068]

[2087] https://github.com/searxng/searxng/issues/2087
[2068] https://github.com/searxng/searxng/issues/2068
2023-01-09 15:08:24 +01:00
Markus Heiser
a90ed481ed Merge pull request #2090 from Milad-Laly/bugfix/mojeek_parsing
[fix] Mojeek Xpath showing suggestions and searches + add lang support
2023-01-09 09:40:44 +01:00
Milad-Laly
cf4db4be37 [fix] Mojeek Xpath showing suggestions and searches + add lang support 2023-01-09 09:33:47 +01:00
Markus Heiser
54e63839db Merge pull request #2088 from llmII/fix-suggestions
Fix #2083
2023-01-08 18:53:32 +01:00
Markus Heiser
9d6b048fba [build] /static 2023-01-08 18:39:37 +01:00
llmII
33d97fd01a Fix #2083
This changes the Suggestions to be a single column, not a wrapping row,
changing the input to be incapable of overflowing into visually adjacent
elements.
2023-01-08 10:44:58 -06:00
Markus Heiser
217395b837 Merge pull request #2085 from allixx/tab-order
[simple theme] set tab index for search page input field #1891
2023-01-08 16:45:17 +01:00
allixx
1407a055b2 [simple theme] set tab index for search page input field #1891
Previously it took five tab keypresses to reach search input field
on search results page. Now one tab press is enough.
2023-01-08 13:41:48 +03:00
Markus Heiser
4e735b289b Merge pull request #2084 from Milad-Laly/bugfix/typos
[fix] typos in utils/searxng.sh
2023-01-08 10:13:07 +01:00
Milad-Laly
0af41ab15c [fix] typos in utils/searxng.sh 2023-01-08 10:08:53 +01:00
Markus Heiser
0c429d707a Merge pull request #2073 from ahmad-alkadri/fix/modify-bing-xpath
Modify the Xpath for Bing engine plus little fixes
2023-01-08 09:27:00 +01:00
ahmad-alkadri
9ee99423fe [fix] Bing-Web engine: XPath to get the wikipedia result
Modify the XPath selector to get the wikipedia result plus small fixes.

About result content: especially with the Wikipedia result, we'd get several
paragraph elements, only the first paragraph would be taken and displayed on the
search result
2023-01-08 09:11:16 +01:00
Markus Heiser
4e355564d2 Merge pull request #1903 from LalleSX/patch-1
Added info about adding the enginge to the brownser
2023-01-07 15:03:12 +01:00
PrivateLalle
212acf7f7b [mod] about page: add information about adding enginge to the brownser 2023-01-07 14:48:06 +01:00
Markus Heiser
4cd3be8964 [fix] indentation and line size of the the markdown files
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-01-07 14:46:31 +01:00
Markus Heiser
cb7b091666 Merge pull request #2072 from llmII/fix-checksum
Fix checksum virtualenv checks.
2023-01-07 13:52:17 +01:00
Markus Heiser
a98c5156bd Merge pull request #2066 from ahmad-alkadri/fix/ui-shifted-engines
Fix: wrapping list of engines in flex-wrap to prevent them being shifted
2023-01-07 12:19:23 +01:00
Markus Heiser
b2a80347e3 [build] /static 2023-01-07 11:53:51 +01:00
ahmad-alkadri
db70c262c3 Add flex-wrap to the list of engines 2023-01-07 11:53:05 +01:00
Markus Heiser
633ba8b1b6 Merge pull request #2081 from rudism/duckduckgo-referer
Add HTTP Referer header to DuckDuckGo requests
2023-01-07 08:27:18 +01:00
Rudis Muiznieks
128b8c7f0a Add HTTP Referer header to DuckDuckGo requests
closes #2080
2023-01-06 16:07:37 -06:00
Markus Heiser
b241015e93 Merge pull request #2078 from searxng/dependabot/pip/master/pygments-2.14.0
Bump pygments from 2.13.0 to 2.14.0
2023-01-06 08:40:46 +01:00
Markus Heiser
269a72ee97 Merge pull request #2079 from searxng/translations_update
Update translations
2023-01-06 08:40:03 +01:00
Markus Heiser
e9a7a6aea6 [build] /static 2023-01-06 08:35:52 +01:00
searxng-bot
2420ab6fc3 [translations] update from Weblate
b1c60c5b - 2022-12-30 - wldkwl <gayisurdad@hotmail.com>
89133548 - 2023-01-05 - Linerly <linerly@protonmail.com>
4398061a - 2023-01-02 - Markus Heiser <markus.heiser@darmarit.de>
9857916a - 2023-01-04 - p6n7l <nichita@tutanota.com>
0ba50078 - 2023-01-04 - Markus Heiser <markus.heiser@darmarit.de>
0189e648 - 2023-01-02 - Markus Heiser <markus.heiser@darmarit.de>
24ded833 - 2023-01-01 - Markus Heiser <markus.heiser@darmarit.de>
2023-01-06 07:14:08 +00:00
dependabot[bot]
cd4a3c02de Bump pygments from 2.13.0 to 2.14.0
Bumps [pygments](https://github.com/pygments/pygments) from 2.13.0 to 2.14.0.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.13.0...2.14.0)

---
updated-dependencies:
- dependency-name: pygments
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-06 07:00:56 +00:00
Markus Heiser
aba969ccf0 Merge pull request #2074 from julianfairfax/patch-1
Correct a small mistake
2023-01-05 07:19:55 +01:00
Julian
6e8c7873ee Correct my small mistake 2023-01-04 20:07:51 +01:00
Julian
2b886ab269 Correct a small mistake 2023-01-04 13:41:41 +01:00
llmII
4e2eb9922e Fix checksum virtualenv checks.
There's already precedence for not using GNUism sha256sum longopts as
seen in searxng/utils/lib_go.sh so update lib.sh to not use them either.
A nice side effect is now the sha256sum usage doesn't care if you're
using BSD sha256sum or GNU sha256sum which makes this work under FreeBSD.
2023-01-03 18:44:55 -06:00
Markus Heiser
647a0aa98b Merge pull request #2060 from searxng/dependabot/pip/master/mock-5.0.0
Bump mock from 4.0.3 to 5.0.0
2022-12-30 17:03:53 +01:00
Markus Heiser
1751629098 Merge pull request #2061 from searxng/translations_update
Update translations
2022-12-30 08:22:42 +01:00
Markus Heiser
b6d98be795 Merge pull request #2059 from searxng/dependabot/pip/master/pallets-sphinx-themes-2.0.3
Bump pallets-sphinx-themes from 2.0.2 to 2.0.3
2022-12-30 08:21:37 +01:00
searxng-bot
38c22c8c31 [translations] update from Weblate
ea56f7b6 - 2022-12-26 - Sean Botha <seanbotha@gmail.com>
0dbbb031 - 2022-12-23 - gkkulik <gregorykkulik@gmail.com>
81f33cb7 - 2022-12-28 - Markus Heiser <markus.heiser@darmarit.de>
5ff82460 - 2022-12-28 - peterT1D <kozlovic.peter@gmail.com>
0ea6d8c3 - 2022-12-28 - Markus Heiser <markus.heiser@darmarit.de>
b19bb597 - 2022-12-28 - Markus Heiser <markus.heiser@darmarit.de>
904fa9ab - 2022-12-24 - Markus Heiser <markus.heiser@darmarit.de>
e7c7d624 - 2022-12-29 - Droid <droidpy587@gmail.com>
2022-12-30 07:14:21 +00:00
dependabot[bot]
62fb8ee9b4 Bump mock from 4.0.3 to 5.0.0
Bumps [mock](https://github.com/testing-cabal/mock) from 4.0.3 to 5.0.0.
- [Release notes](https://github.com/testing-cabal/mock/releases)
- [Changelog](https://github.com/testing-cabal/mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/testing-cabal/mock/compare/4.0.3...5.0.0)

---
updated-dependencies:
- dependency-name: mock
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-30 07:00:49 +00:00
dependabot[bot]
06ad053973 Bump pallets-sphinx-themes from 2.0.2 to 2.0.3
Bumps [pallets-sphinx-themes](https://github.com/pallets/pallets-sphinx-themes) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/pallets/pallets-sphinx-themes/releases)
- [Changelog](https://github.com/pallets/pallets-sphinx-themes/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/pallets-sphinx-themes/compare/2.0.2...2.0.3)

---
updated-dependencies:
- dependency-name: pallets-sphinx-themes
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-30 07:00:44 +00:00
Markus Heiser
9b31976cf3 Merge pull request #2056 from searxng/update_data_update_firefox_version.py
Update searx.data - update_firefox_version.py
2022-12-29 09:24:09 +01:00
dalf
0639769274 Update searx.data - update_firefox_version.py 2022-12-29 09:17:56 +01:00
Markus Heiser
174e6851b3 Merge pull request #2054 from searxng/update_data_update_currencies.py
Update searx.data - update_currencies.py
2022-12-29 08:35:51 +01:00
Markus Heiser
d531f89316 Merge pull request #2057 from searxng/update_data_update_engine_descriptions.py
Update searx.data - update_engine_descriptions.py
2022-12-29 08:31:19 +01:00
Markus Heiser
76cd808a49 Merge pull request #2053 from searxng/update_data_update_ahmia_blacklist.py
Update searx.data - update_ahmia_blacklist.py
2022-12-29 08:28:19 +01:00
Markus Heiser
3ec58b0649 Merge pull request #2055 from searxng/update_data_update_wikidata_units.py
Update searx.data - update_wikidata_units.py
2022-12-29 08:28:10 +01:00
dalf
000734cb93 Update searx.data - update_engine_descriptions.py 2022-12-29 01:25:31 +00:00
dalf
36eea5b7cc Update searx.data - update_currencies.py 2022-12-29 01:16:59 +00:00
dalf
66780efda7 Update searx.data - update_wikidata_units.py 2022-12-29 01:16:59 +00:00
dalf
de793fb71e Update searx.data - update_ahmia_blacklist.py 2022-12-29 01:16:52 +00:00
Alexandre Flament
0d4896170f Merge pull request #2047 from dalf/fasttext-predict
Use fasttext-predict instead of fasttext(-wheel)
2022-12-26 20:50:09 +01:00
Alexandre Flament
f3515041af Lazy load fasttext-predict 2022-12-26 18:44:23 +00:00
Alexandre Flament
ec4237586d Use fasttext-predict instead of fasttext or fasttext-wheel
See https://github.com/searxng/fasttext-predict
2022-12-26 18:44:21 +00:00
Markus Heiser
e8f72d7052 Merge pull request #2040 from searxng/translations_update
Update translations
2022-12-23 08:24:49 +01:00
Markus Heiser
a2d506d45b Merge pull request #2039 from searxng/dependabot/pip/master/pylint-2.15.9
Bump pylint from 2.15.8 to 2.15.9
2022-12-23 08:23:05 +01:00
searxng-bot
dd125321e4 [translations] update from Weblate
7f3e72fd - 2022-12-20 - Grey <elohim@gmail.com>
5d48e556 - 2022-12-21 - Markus Heiser <markus.heiser@darmarit.de>
56e67eb0 - 2022-12-19 - zDylant <dylantfcs@gmail.com>
28e1abe1 - 2022-12-21 - Markus Heiser <markus.heiser@darmarit.de>
b19d55f7 - 2022-12-17 - YaoSiQian <2229561981@qq.com>
274f7ee9 - 2022-12-17 - Markus Heiser <markus.heiser@darmarit.de>
ab00649b - 2022-12-16 - tents <remendne@pentrens.jp>
2022-12-23 07:14:39 +00:00
dependabot[bot]
eaae36f4db Bump pylint from 2.15.8 to 2.15.9
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.15.8 to 2.15.9.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.15.8...v2.15.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-23 07:00:53 +00:00
Markus Heiser
d75ae7c8e6 Merge pull request #2035 from rudism/fix-ddg-url
Fix: add trailing slash to duckduckgo url
2022-12-22 15:02:01 +01:00
Rudis Muiznieks
6804ff048d Fix: add trailing slash to duckduckgo url
Close #1854
2022-12-22 07:49:58 -06:00
Alexandre Flament
b927482195 Merge pull request #2019 from ArtikusHG/fasttext
Replace langdetect with fasttext (followup of #1969)
2022-12-16 21:54:07 +01:00
ArtikusHG
735e388cec Merge branch 'master' into fasttext 2022-12-16 19:43:10 +00:00
ArtikusHG
1f8f8c1e91 Replace langdetect with fasttext 2022-12-16 21:07:39 +02:00
Alexandre Flament
2a51c85672 Merge pull request #1974 from fehho/query-string-deserial
[fix] Deserialize preferences which are explicitly blank strings
2022-12-16 18:56:30 +01:00
Markus Heiser
0dac581c0d Merge pull request #2024 from searxng/dependabot/pip/master/black-22.12.0
Bump black from 22.10.0 to 22.12.0
2022-12-16 09:04:57 +01:00
Markus Heiser
42ca37a6b8 Merge pull request #2023 from searxng/dependabot/pip/master/lxml-4.9.2
Bump lxml from 4.9.1 to 4.9.2
2022-12-16 09:03:24 +01:00
Markus Heiser
f5bd73d9da Merge pull request #2025 from searxng/translations_update
Update translations
2022-12-16 08:27:04 +01:00
searxng-bot
03ce848e04 [translations] update from Weblate
4cf39dae - 2022-12-14 - Markus Heiser <markus.heiser@darmarit.de>
f67457cf - 2022-12-12 - Linerly <linerly@protonmail.com>
dee211c2 - 2022-12-12 - JohnyPeaN <johnypean@gmail.com>
9eeb4290 - 2022-12-12 - Markus Heiser <markus.heiser@darmarit.de>
2022-12-16 07:15:19 +00:00
dependabot[bot]
2358ca6021 Bump black from 22.10.0 to 22.12.0
Bumps [black](https://github.com/psf/black) from 22.10.0 to 22.12.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/22.10.0...22.12.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-16 07:00:41 +00:00
dependabot[bot]
8006e85e7b Bump lxml from 4.9.1 to 4.9.2
Bumps [lxml](https://github.com/lxml/lxml) from 4.9.1 to 4.9.2.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.9.1...lxml-4.9.2)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-16 07:00:37 +00:00
Alexandre Flament
9e9f57e48b Merge pull request #1954 from dalf/fix.redis.init.2
[fix] follow up of PR-1856
2022-12-14 07:08:19 +01:00
Markus Heiser
966e9c3c5d Merge pull request #1969 from ArtikusHG/master
Add language autodetect plugin
2022-12-12 08:13:17 +01:00
Markus Heiser
ed901ab18e [mod] improve 'Autodetect search language' plugin
- Add documentation to the plugin
- Harmonize FastText language model with SearXNG's language model

Reosurces::

    import fasttext                                    # --> +10 MB
    fasttext.load_model(str(data_dir / 'lid.176.ftz')) # --> +4MB

Suggested-by: @dalf

- To speed up and simplify the deployment use fasttext-wheel instead of fasttext
- Building numpy on the Alpine Linux of docker-images takes ages --> install
  py3-numpy from Alpines package manager (apk)
- Alpine Linux on docker-images (musl libc) do not support fasttext-wheel (gnu
  libc) --> patch Dockerfile and build from fastetxt:

     sed -i s/fasttext-wheel/fasttext/ requirements.txt

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-12-11 11:26:07 +01:00
ArtikusHG
9925a20950 [mod] new plugin: Autodetect search language 2022-12-10 13:11:47 +01:00
Alexandre Flament
3050e2b6e8 [fix] documentation about update-searxng.rst 2022-12-10 10:06:54 +01:00
Alexandre Flament
b971167ced move searx.shared.redisdb to searx.redisdb 2022-12-10 09:26:38 +01:00
Alexandre Flament
34e260f88f [fix] follow up of PR-1856
- the environment variable SEARXNG_REDIS_URL overrides the setting value redis.url
- ./manage sets SEARXNG_REDIS_URL to unix:///usr/local/searxng-redis/run/redis.sock if:
   - the socket exists
   - SEARXNG_REDIS_URL is not already defined

Update of PR #1856

Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2022-12-10 09:26:38 +01:00
Alexandre Flament
abb33bd7dd Merge pull request #2016 from searxng/translations_update
Update translations
2022-12-09 10:17:35 +01:00
Alexandre Flament
0b1f09faa4 Merge pull request #2013 from searxng/dependabot/pip/master/redis-4.4.0
Bump redis from 4.3.5 to 4.4.0
2022-12-09 10:16:47 +01:00
Alexandre Flament
6479b67cd2 Merge pull request #2014 from searxng/dependabot/pip/master/selenium-4.7.2
Bump selenium from 4.7.0 to 4.7.2
2022-12-09 10:13:55 +01:00
dependabot[bot]
266b86055f Bump selenium from 4.7.0 to 4.7.2
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.7.0 to 4.7.2.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 09:09:02 +00:00
Alexandre Flament
a6d870d5cf Merge pull request #2015 from searxng/dependabot/pip/master/pylint-2.15.8
Bump pylint from 2.15.7 to 2.15.8
2022-12-09 10:08:12 +01:00
Alexandre Flament
3df1a9839a Merge pull request #2017 from searxng/dependabot/pip/certifi-2022.12.7
Bump certifi from 2022.9.24 to 2022.12.7
2022-12-09 10:07:18 +01:00
dependabot[bot]
458f83cb26 Bump certifi from 2022.9.24 to 2022.12.7
Bumps [certifi](https://github.com/certifi/python-certifi) from 2022.9.24 to 2022.12.7.
- [Release notes](https://github.com/certifi/python-certifi/releases)
- [Commits](https://github.com/certifi/python-certifi/compare/2022.09.24...2022.12.07)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 08:23:05 +00:00
searxng-bot
759d53c892 [translations] update from Weblate
1b4600d0 - 2022-12-08 - JohnyPeaN <johnypean@gmail.com>
e3b49827 - 2022-12-04 - Markus Heiser <markus.heiser@darmarit.de>
975217cf - 2022-12-02 - Markus Heiser <markus.heiser@darmarit.de>
2022-12-09 07:15:14 +00:00
dependabot[bot]
2c72bffaaa Bump pylint from 2.15.7 to 2.15.8
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.15.7 to 2.15.8.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.15.7...v2.15.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 07:00:57 +00:00
dependabot[bot]
8a043b6202 Bump redis from 4.3.5 to 4.4.0
Bumps [redis](https://github.com/redis/redis-py) from 4.3.5 to 4.4.0.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v4.3.5...v4.4.0)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 07:00:48 +00:00
Alexandre Flament
67eea86b35 Merge pull request #2006 from dalf/fix_1951
Fix: don't crash when engine or name is missing in settings.yml
2022-12-05 13:43:38 +01:00
Alexandre Flament
269326063a Fix: don't crash when engine or name is missing in settings.yml
SearXNG crashes if the engine or name fields are missing.
With this commit, the app displays an error in the log and keeps loading.

Close #1951
2022-12-04 23:43:59 +01:00
Markus Heiser
ffb72dfdf7 Merge pull request #1996 from searxng/dependabot/pip/master/selenium-4.7.0
Bump selenium from 4.6.0 to 4.7.0
2022-12-02 09:07:45 +01:00
dependabot[bot]
9e6c23ffe9 Bump selenium from 4.6.0 to 4.7.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.6.0 to 4.7.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.6.0...selenium-4.7.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-02 08:02:54 +00:00
Markus Heiser
317fe0a256 Merge pull request #1999 from searxng/dependabot/pip/master/twine-4.0.2
Bump twine from 4.0.1 to 4.0.2
2022-12-02 09:02:07 +01:00
Markus Heiser
e67a7b808b Merge pull request #1998 from searxng/dependabot/pip/master/linuxdoc-20221127
Bump linuxdoc from 20221025 to 20221127
2022-12-02 09:01:47 +01:00
dependabot[bot]
d9a2bd0a28 Bump twine from 4.0.1 to 4.0.2
Bumps [twine](https://github.com/pypa/twine) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/pypa/twine/releases)
- [Changelog](https://github.com/pypa/twine/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/twine/compare/4.0.1...4.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-02 07:31:01 +00:00
Markus Heiser
890d63b986 Merge pull request #1997 from searxng/dependabot/pip/master/pylint-2.15.7
Bump pylint from 2.15.6 to 2.15.7
2022-12-02 08:30:07 +01:00
Markus Heiser
4970db05fd Merge pull request #2000 from searxng/translations_update
Update translations
2022-12-02 08:29:38 +01:00
searxng-bot
f40d1c0004 [translations] update from Weblate
cc5cf5d8 - 2022-11-30 - Chathura madusanka <mcchathuer216@gmail.com>
97776fbf - 2022-11-29 - Markus Heiser <markus.heiser@darmarit.de>
c3c9f988 - 2022-11-29 - Markus Heiser <markus.heiser@darmarit.de>
a1cf339e - 2022-11-29 - Markus Heiser <markus.heiser@darmarit.de>
4429167c - 2022-11-25 - Markus Heiser <markus.heiser@darmarit.de>
2022-12-02 07:15:43 +00:00
dependabot[bot]
b47b4e9fe4 Bump linuxdoc from 20221025 to 20221127
Bumps [linuxdoc](https://github.com/return42/linuxdoc) from 20221025 to 20221127.
- [Release notes](https://github.com/return42/linuxdoc/releases)
- [Commits](https://github.com/return42/linuxdoc/commits)

---
updated-dependencies:
- dependency-name: linuxdoc
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-02 07:00:46 +00:00
dependabot[bot]
8ec037bbb9 Bump pylint from 2.15.6 to 2.15.7
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.15.6 to 2.15.7.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.15.6...v2.15.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-02 07:00:44 +00:00
Markus Heiser
0361f8366a Merge pull request #1989 from ngosang/feature/idea
Add PyCharm configuration files to .gitignore
2022-11-30 13:28:57 +01:00
Markus Heiser
44d4a1714c Merge pull request #1990 from ngosang/feature/alpine
Update base Docker image to Alpine 3.17
2022-11-30 10:32:34 +01:00
Markus Heiser
f19837cfad Merge pull request #1896 from ngosang/feature/size
Reduce Docker image size
2022-11-30 09:16:14 +01:00
ngosang
ba61457220 Update base Docker image to Alpine 3.17
* Python version is unchanged 3.10.8
* This issue is fixed https://github.com/searxng/searxng-docker/issues/31
2022-11-29 23:45:10 +01:00
ngosang
6b88e857f9 fix 2022-11-29 23:31:49 +01:00
ngosang
9417c284d3 Reduce Docker image size
* Remove compiled sources. Most of them are never used. Those in use are compiled in the first run really fast.
* Copy only source code and Docker entypoint
* Image size reduced by 41 MB (195 MB -> 154 MB uncompressed)
2022-11-29 22:32:28 +01:00
ngosang
8c29cd26b7 Add PyCharm configuration files to .gitignore 2022-11-29 22:29:50 +01:00
Alexandre Flament
768659f2bd Merge pull request #1988 from ryankask/fix-redis-conn-logging
Copy client connection kwargs before mutating
2022-11-29 19:38:54 +01:00
Ryan Kaskel
e19218c6a9 Copy client connection kwargs before mutating 2022-11-29 12:15:18 +00:00
Markus Heiser
a8359dd4d3 Merge pull request #1981 from searxng/update_data_update_firefox_version.py
Update searx.data - update_firefox_version.py
2022-11-29 07:48:26 +01:00
Markus Heiser
1b2f1c17f6 Merge pull request #1982 from searxng/update_data_update_wikidata_units.py
Update searx.data - update_wikidata_units.py
2022-11-29 07:47:52 +01:00
Markus Heiser
3579a38a2d Merge pull request #1983 from searxng/update_data_update_currencies.py
Update searx.data - update_currencies.py
2022-11-29 07:46:49 +01:00
Markus Heiser
82af2f4460 Merge pull request #1984 from searxng/update_data_update_ahmia_blacklist.py
Update searx.data - update_ahmia_blacklist.py
2022-11-29 07:45:51 +01:00
Markus Heiser
5b19f89286 Merge pull request #1985 from searxng/update_data_update_engine_descriptions.py
Update searx.data - update_engine_descriptions.py
2022-11-29 07:45:17 +01:00
dalf
a508cdbd4b Update searx.data - update_engine_descriptions.py 2022-11-29 01:34:42 +00:00
dalf
c4512cf64d Update searx.data - update_ahmia_blacklist.py 2022-11-29 01:24:48 +00:00
dalf
b0b45fd2d0 Update searx.data - update_currencies.py 2022-11-29 01:24:39 +00:00
dalf
a9be73b4da Update searx.data - update_wikidata_units.py 2022-11-29 01:24:38 +00:00
dalf
9fc72419e1 Update searx.data - update_firefox_version.py 2022-11-29 01:24:35 +00:00
Markus Heiser
1314c1c534 Merge pull request #1975 from searxng/dependabot/pip/master/pylint-2.15.6
Bump pylint from 2.15.5 to 2.15.6
2022-11-25 08:25:46 +01:00
Markus Heiser
28ae469f81 Merge pull request #1976 from searxng/dependabot/pip/master/redis-4.3.5
Bump redis from 4.3.4 to 4.3.5
2022-11-25 08:25:24 +01:00
Markus Heiser
5ca6868c98 Merge pull request #1977 from searxng/translations_update
Update translations
2022-11-25 08:24:28 +01:00
searxng-bot
981a2c9626 [translations] update from Weblate
c13727fc - 2022-11-21 - MSI Shafik <shafik.te@gmail.com>
21f638f6 - 2022-11-19 - Markus Heiser <markus.heiser@darmarit.de>
b8ed9e1c - 2022-11-24 - Markus Heiser <markus.heiser@darmarit.de>
2022-11-25 07:16:11 +00:00
dependabot[bot]
72a079fe89 Bump redis from 4.3.4 to 4.3.5
Bumps [redis](https://github.com/redis/redis-py) from 4.3.4 to 4.3.5.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v4.3.4...v4.3.5)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-25 07:00:57 +00:00
dependabot[bot]
2360f98a24 Bump pylint from 2.15.5 to 2.15.6
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.15.5 to 2.15.6.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.15.5...v2.15.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-25 07:00:54 +00:00
fehho
7cab51f98f Deserialize explicitly blank strings
Default behavior of urllib.parse_qs is to discard blank values, causing a preference of none to be deserialized as undefined, using the instance default rather than the selected preference.
2022-11-24 13:14:12 -06:00
Alexandre Flament
b5371b7a85 Merge pull request #1963 from searxng/translations_update
Update translations
2022-11-19 17:26:05 +01:00
searxng-bot
9d06115d07 [translations] update from Weblate
7569f266 - 2022-11-18 - Markus Heiser <markus.heiser@darmarit.de>
6418da9a - 2022-11-18 - mikni <mikni@proton.me>
acc0dc1a - 2022-11-18 - Markus Heiser <markus.heiser@darmarit.de>
6c2beba6 - 2022-11-19 - Alexandre Flament <alex@al-f.net>
b49457e3 - 2022-11-18 - Markus Heiser <markus.heiser@darmarit.de>
2022-11-19 16:21:15 +00:00
Alexandre Flament
1cdadf4bfd Merge pull request #1948 from searxng/dependabot/pip/master/selenium-4.6.0
Bump selenium from 4.5.0 to 4.6.0
2022-11-18 14:20:11 +01:00
Alexandre Flament
fe8b0472dd Merge pull request #1949 from searxng/translations_update
Update translations
2022-11-18 14:19:51 +01:00
searxng-bot
7a39952558 [translations] update from Weblate
f123be21 - 2022-11-13 - Markus Heiser <markus.heiser@darmarit.de>
fa2cfa8f - 2022-11-13 - Markus Heiser <markus.heiser@darmarit.de>
2022-11-18 07:17:51 +00:00
Markus Heiser
3a765113ee Merge pull request #1950 from searxng/google-fix-pc
Switch back to protobuf for raw HTML
2022-11-11 10:46:19 +01:00
Émilien Devos
46ad32343a Switch back to protobuf for raw HTML 2022-11-11 07:39:48 +00:00
dependabot[bot]
c938324778 Bump selenium from 4.5.0 to 4.6.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.5.0...selenium-4.6.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-11 07:03:36 +00:00
Markus Heiser
e63457584b Merge pull request #1944 from ngosang/feature/google
Fix Google search engine.
2022-11-11 07:42:07 +01:00
ngosang
78be4b4c70 Fix Google search engine.
- Fix broken links. Resolves #1794
- Fix missing results. Resolves #1829
2022-11-11 07:34:19 +01:00
Markus Heiser
117f69fa13 Merge pull request #1937 from BoxingOctopus/fix/disable_zlib
Disabling zlibrary due to z-lib.org domain seizure
2022-11-10 21:29:45 +01:00
Ryan Draga
408200c87e [fix] disabling zlibrary due to z-lib.org domain seizure 2022-11-10 21:18:21 +01:00
Markus Heiser
ee4475ff4b Merge pull request #1934 from dalf/fix_user_agent
User agent: don't include the patch number in the Firefox version
2022-11-09 06:50:33 +01:00
Alexandre Flament
d3949269a9 Merge pull request #1942 from dalf/fix_redis_initialization
[FIX] Redis initialization
2022-11-07 23:16:04 +01:00
Alexandre FLAMENT
73b5a58d9e [FIX] Redis initialization
redis.Redis.from_url(url) doesn't check if the url is valid

Before this commit: actual error are detected later when the client is actually used.
With this commit, client() makes sure to return a valid Redis client or None.

Also, the code makes sure not to log the password of the Redis URL
2022-11-07 22:08:32 +00:00
Alexandre Flament
8f19bdaf17 Merge pull request #1882 from fehho/metacpan
Add MetaCPAN engine
2022-11-07 21:54:11 +01:00
fehho
fe351c2802 Add MetaCPAN engine 2022-11-07 08:07:06 -06:00
Alexandre Flament
ae54c7d525 Merge pull request #1938 from Evhorizon/master
Update network.py
2022-11-06 21:20:38 +01:00
Evhorizon
1517724615 Update network.py 2022-11-06 20:35:30 +01:00
Alexandre Flament
2dc5c0e1d6 Merge pull request #1928 from searxng/translations_update
Update translations
2022-11-06 11:29:28 +01:00
Alexandre Flament
4fe5463671 Merge pull request #1869 from vgerak/1836-ddg-weather
Fix floating point format in DDG weather humidity
2022-11-05 22:46:50 +01:00
Alexandre FLAMENT
d8dee21277 searx.locale: add Dhivehi language 2022-11-05 21:26:15 +00:00
Alexandre FLAMENT
20d951fc5c searx.locales: improve support for languages not supported by babel
* refactor get_translations() to rely on ADDITIONAL_TRANSLATIONS and LOCALE_BEST_MATCH
* update RTL_LOCALES for languages in ADDITIONAL_TRANSLATIONS
2022-11-05 21:26:07 +00:00
Alexandre Flament
e473addaff User agent: don't include the patch number in the Firefox version
The Firefox version in the user agent doesn't include the patch version: 106.0 not 106.0.2

Close #1914
2022-11-05 22:04:37 +01:00
Alexandre Flament
e9f42e1c22 Merge pull request #1918 from LinuxMeow/patch-1
Remove unused volume
2022-11-05 19:45:13 +01:00
Alexandre Flament
d37afb8ab9 Merge pull request #1856 from dalf/checker_requires_redis
The checker requires Redis
2022-11-05 17:50:40 +01:00
Alexandre FLAMENT
e92755d358 Initialize Redis in searx/webapp.py
settings.yml:
* The default URL was unix:///usr/local/searxng-redis/run/redis.sock?db=0
* The default URL is now "false"

The default URL makes the log difficult to deal with:
if the admin didn't install a Redis instance, the logs record a false error.

It worked before because SearXNG initialized the Redis connection when the limiter started.

In this commit, SearXNG initializes Redis in searx/webapp.py
so various components can use Redis without taking care of the initialization step.
2022-11-05 17:45:52 +01:00
Alexandre Flament
fe419e355b The checker requires Redis
Remove the abstraction in searx.shared.SharedDict.
Implement a basic and dedicated scheduler for the checker using a Redis script.
2022-11-05 12:04:50 +01:00
Alexandre Flament
d764d94a70 Merge pull request #1927 from searxng/dependabot/pip/master/babel-2.11.0
Bump babel from 2.10.3 to 2.11.0
2022-11-05 11:38:16 +01:00
Alexandre Flament
d3a7399ed7 Merge pull request #1929 from dalf/github_workflow_update
GH workflow: various improvements
2022-11-05 11:14:09 +01:00
nathannaveen
b5ce39b536 chore: Set permissions for GitHub actions (#3225)
Restrict the GitHub token permissions only to the required ones; this way, even if the attackers will succeed in compromising your workflow, they won’t be able to do much.

- Included permissions for the action. https://github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions

https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions

https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs

[Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/)

Signed-off-by: nathannaveen <42319948+nathannaveen@users.noreply.github.com>
2022-11-04 16:50:43 +00:00
Alexandre FLAMENT
7101c5ecf2 GH workflow: add Python 3.11 2022-11-04 14:28:46 +00:00
Alexandre FLAMENT
46aaa57cfe GH workflow: use actions/cache@v3
Also cache ./.nvm and ./node_modules
2022-11-04 14:25:15 +00:00
Alexandre FLAMENT
bc1278d25e GH workflow: use actions/setup-python@v4
GitHub displays this warning with the actions/setup-python@2 :

Warning: The `set-output` command is deprecated and will be disabled soon.
Please upgrade to using Environment Files.
For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
2022-11-04 08:37:31 +00:00
searxng-bot
7438e48d13 [translations] update from Weblate
41ebf8e7 - 2022-10-31 - Landhoo School Students <landhooschoolstudents@gmail.com>
1de65e6a - 2022-10-29 - Markus Heiser <markus.heiser@darmarit.de>
fff11c22 - 2022-10-30 - Markus Heiser <markus.heiser@darmarit.de>
f677049f - 2022-10-30 - Markus Heiser <markus.heiser@darmarit.de>
ebf69b4a - 2022-10-30 - Markus Heiser <markus.heiser@darmarit.de>
a21b6221 - 2022-11-02 - Markus Heiser <markus.heiser@darmarit.de>
ac384800 - 2022-11-03 - ptomljanovic <phill2605@gmail.com>
c4736fd4 - 2022-11-03 - alexfs2015 <alex04fs@gmail.com>
1b967129 - 2022-10-31 - Landhoo School Students <landhooschoolstudents@gmail.com>
2022-11-04 07:18:35 +00:00
dependabot[bot]
0d3b0cc0ab Bump babel from 2.10.3 to 2.11.0
Bumps [babel](https://github.com/python-babel/babel) from 2.10.3 to 2.11.0.
- [Release notes](https://github.com/python-babel/babel/releases)
- [Changelog](https://github.com/python-babel/babel/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-babel/babel/compare/v2.10.3...v2.11.0)

---
updated-dependencies:
- dependency-name: babel
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-04 07:00:40 +00:00
LinuxMeow
67455274b6 Remove unused volime
Docker file used old project volume instruction which is not existent in current one. It used to create clutter in created volumes without names and purposes polluting the docker environment.

Volume doesn't point to existing directory inside container and has no actual use other then creating docker volume mess each time container is run recreated or potentially restarted.
2022-10-31 19:19:20 +01:00
Markus Heiser
fc9986de0a Merge pull request #1905 from searxng/update_data_update_ahmia_blacklist.py
Update searx.data - update_ahmia_blacklist.py
2022-10-29 08:22:43 +02:00
Markus Heiser
3f1d594c23 Merge pull request #1906 from searxng/update_data_update_external_bangs.py
Update searx.data - update_external_bangs.py
2022-10-29 08:21:33 +02:00
Markus Heiser
a9deead102 Merge pull request #1907 from searxng/update_data_update_firefox_version.py
Update searx.data - update_firefox_version.py
2022-10-29 08:20:53 +02:00
Markus Heiser
d49ccb54ea Merge pull request #1908 from searxng/update_data_update_wikidata_units.py
Update searx.data - update_wikidata_units.py
2022-10-29 08:20:27 +02:00
Markus Heiser
fa59ff9b78 Merge pull request #1909 from searxng/update_data_update_currencies.py
Update searx.data - update_currencies.py
2022-10-29 08:19:56 +02:00
Markus Heiser
d653534fe1 Merge pull request #1910 from searxng/update_data_update_engine_descriptions.py
Update searx.data - update_engine_descriptions.py
2022-10-29 08:14:49 +02:00
dalf
e70589c598 Update searx.data - update_engine_descriptions.py 2022-10-29 01:56:57 +00:00
dalf
985a2a87a6 Update searx.data - update_currencies.py 2022-10-29 01:46:40 +00:00
dalf
c0ecc2f865 Update searx.data - update_wikidata_units.py 2022-10-29 01:46:38 +00:00
dalf
c24abc2f8c Update searx.data - update_firefox_version.py 2022-10-29 01:46:34 +00:00
dalf
f0c7898445 Update searx.data - update_external_bangs.py 2022-10-29 01:46:27 +00:00
dalf
799c5270ae Update searx.data - update_ahmia_blacklist.py 2022-10-29 01:46:24 +00:00
Markus Heiser
5a181ea1f5 Merge pull request #1901 from searxng/dependabot/npm_and_yarn/searx/static/themes/simple/master/svgo-3.0.0
Bump svgo from 2.8.0 to 3.0.0 in /searx/static/themes/simple
2022-10-28 10:22:56 +02:00
Markus Heiser
d913f0d8aa [build] /static 2022-10-28 10:17:56 +02:00
Markus Heiser
5db4ed5d2b Merge pull request #1902 from searxng/translations_update
Update translations
2022-10-28 09:24:08 +02:00
Markus Heiser
c26fa335ac Merge pull request #1900 from searxng/dependabot/pip/master/pylint-2.15.5
Bump pylint from 2.15.4 to 2.15.5
2022-10-28 09:19:33 +02:00
searxng-bot
bc3db6fd16 [translations] update from Weblate
bf52cdbc - 2022-10-22 - Markus Heiser <markus.heiser@darmarit.de>
fbb36c76 - 2022-10-22 - forvirretfrukt <lillelilli87@gmail.com>
18cc8a36 - 2022-10-22 - Markus Heiser <markus.heiser@darmarit.de>
7314d2b6 - 2022-10-24 - Markus Heiser <markus.heiser@darmarit.de>
b25147b9 - 2022-10-27 - Markus Heiser <markus.heiser@darmarit.de>
d39ade65 - 2022-10-24 - Markus Heiser <markus.heiser@darmarit.de>
cb835cdc - 2022-10-24 - Markus Heiser <markus.heiser@darmarit.de>
563f4e0b - 2022-10-26 - Markus Heiser <markus.heiser@darmarit.de>
a698a2e9 - 2022-10-24 - Markus Heiser <markus.heiser@darmarit.de>
df5ce281 - 2022-10-22 - Markus Heiser <markus.heiser@darmarit.de>
55b369a3 - 2022-10-22 - Markus Heiser <markus.heiser@darmarit.de>
3eddf243 - 2022-10-24 - zaioti <zaioti@tuta.io>
edd3871d - 2022-10-24 - zaioti <zaioti@tuta.io>
5aab9f7b - 2022-10-22 - Markus Heiser <markus.heiser@darmarit.de>
0b2cfe68 - 2022-10-22 - tents <remendne@pentrens.jp>
732b7865 - 2022-10-22 - Markus Heiser <markus.heiser@darmarit.de>
d652c20f - 2022-10-22 - Markus Heiser <markus.heiser@darmarit.de>
0bcaaa8d - 2022-10-24 - Markus Heiser <markus.heiser@darmarit.de>
6fd87821 - 2022-10-26 - Markus Heiser <markus.heiser@darmarit.de>
618f213c - 2022-10-21 - Masterix <masterix@duck.com>
30d38ee9 - 2022-10-24 - Markus Heiser <markus.heiser@darmarit.de>
a934ce3b - 2022-10-23 - Markus Heiser <markus.heiser@darmarit.de>
b696c22e - 2022-10-23 - Markus Heiser <markus.heiser@darmarit.de>
6ee1efe2 - 2022-10-23 - Jeewaka Fernando <Jeewakaphotography@gmail.com>
2022-10-28 07:18:50 +00:00
dependabot[bot]
3cade9a7eb Bump svgo from 2.8.0 to 3.0.0 in /searx/static/themes/simple
Bumps [svgo](https://github.com/svg/svgo) from 2.8.0 to 3.0.0.
- [Release notes](https://github.com/svg/svgo/releases)
- [Changelog](https://github.com/svg/svgo/blob/main/CHANGELOG-old.md)
- [Commits](https://github.com/svg/svgo/compare/v2.8.0...v3.0.0)

---
updated-dependencies:
- dependency-name: svgo
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-28 07:13:58 +00:00
dependabot[bot]
37d166a01b Bump pylint from 2.15.4 to 2.15.5
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.15.4 to 2.15.5.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.15.4...v2.15.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-28 07:06:48 +00:00
Markus Heiser
affd8f751d Merge pull request #1872 from searxng/dependabot/pip/master/sphinx-5.3.0
Bump sphinx from 5.2.3 to 5.3.0
2022-10-25 13:09:54 +02:00
dependabot[bot]
8f7fe20ceb Bump sphinx from 5.2.3 to 5.3.0
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 5.2.3 to 5.3.0.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v5.2.3...v5.3.0)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 11:00:22 +00:00
Markus Heiser
4783d6c9f4 Merge pull request #1886 from return42/linuxdoc-20221025
[upd] linuxdoc from v20211220 to v20221025
2022-10-25 12:59:30 +02:00
Markus Heiser
3cc0222801 [upd] linuxdoc from v20211220 to v20221025
linuxdoc v20221025 fixes an issue with the flat-table directive and adds
:align: & :width: options to flat-table directive.

[1] https://github.com/return42/linuxdoc/pull/18

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-10-25 12:51:46 +02:00
Alexandre Flament
710a3a001f Merge pull request #1873 from searxng/translations_update
Update translations
2022-10-21 10:06:32 +02:00
searxng-bot
18ba8628dd [translations] update from Weblate
c7fddee3 - 2022-10-15 - Linerly <linerly@protonmail.com>
f559a626 - 2022-10-17 - Markus Heiser <markus.heiser@darmarit.de>
fe7af662 - 2022-10-17 - Mateusz Bączek <mateusz.baczek1998@gmail.com>
8a7c3da9 - 2022-10-16 - Peter Martin <weblate@pe7er.com>
a84dad5c - 2022-10-16 - Franco Longo <longofrancoale@gmail.com>
9ee1ac8b - 2022-10-20 - prljav <marin.ruskica@gmail.com>
b91bedc4 - 2022-10-16 - Peter Martin <weblate@pe7er.com>
dff99ef4 - 2022-10-16 - Peter Martin <weblate@pe7er.com>
cd639f6c - 2022-10-17 - Markus Heiser <markus.heiser@darmarit.de>
49507a60 - 2022-10-14 - Markus Heiser <markus.heiser@darmarit.de>
ad305582 - 2022-10-16 - Peter Martin <weblate@pe7er.com>
19e97075 - 2022-10-17 - Markus Heiser <markus.heiser@darmarit.de>
97581f70 - 2022-10-14 - Markus Heiser <markus.heiser@darmarit.de>
fcd52cea - 2022-10-14 - Alexandre Flament <alex@al-f.net>
2022-10-21 07:32:09 +00:00
Vasilis Gerakaris
947b62c9d5 Fix floating point format in DDG weather humidity
Fixes #1836
2022-10-20 11:44:17 +03:00
Alexandre Flament
1a5b096578 Merge pull request #1860 from dalf/fix-startpage
[fix] startpage engine
2022-10-14 20:40:51 +02:00
Alexandre FLAMENT
035bc507ec [fix] startpage engine 2022-10-14 18:27:53 +00:00
Alexandre Flament
096d9defa6 Merge pull request #1847 from searxng/dependabot/pip/master/typing-extensions-4.4.0
Bump typing-extensions from 4.3.0 to 4.4.0
2022-10-14 16:26:19 +02:00
Alexandre Flament
e2dd5a80bb Merge pull request #1831 from searxng/dependabot/pip/master/sphinx-5.2.3
Bump sphinx from 5.1.1 to 5.2.3
2022-10-14 16:25:45 +02:00
Alexandre Flament
4d4dfc58d4 Merge pull request #1858 from searxng/dependabot/pip/master/pylint-2.15.4
Bump pylint from 2.15.3 to 2.15.4
2022-10-14 16:24:40 +02:00
Alexandre Flament
2eb817011c Merge pull request #1529 from dalf/network_trust_env
searx.network: use SSL_CERT_FILE and SSL_CERT_DIR when they are defined
2022-10-14 16:06:29 +02:00
Alexandre Flament
32e8c2cf09 searx.network: add "verify" option to the networks
Each network can define a verify option:
* false to disable certificate verification
* a path to existing certificate.

SearXNG uses SSL_CERT_FILE and SSL_CERT_DIR when they are defined
see https://www.python-httpx.org/environment_variables/#ssl_cert_file
2022-10-14 13:59:22 +00:00
Alexandre Flament
72f6367e23 Merge pull request #1859 from searxng/translations_update
Update translations
2022-10-14 12:18:39 +02:00
searxng-bot
6e86f33342 [translations] update from Weblate
eee3d5e2 - 2022-10-12 - Markus Heiser <markus.heiser@darmarit.de>
c4eb9818 - 2022-10-11 - Markus Heiser <markus.heiser@darmarit.de>
27423f5b - 2022-10-12 - Markus Heiser <markus.heiser@darmarit.de>
9e8b7f86 - 2022-10-11 - No4vick <MineBor1@yandex.ru>
1203aa6a - 2022-10-11 - KEINOS <github@keinos.com>
22c78af5 - 2022-10-12 - Markus Heiser <markus.heiser@darmarit.de>
6a4776f8 - 2022-10-11 - Markus Heiser <markus.heiser@darmarit.de>
c00bdc7d - 2022-10-11 - Markus Heiser <markus.heiser@darmarit.de>
e5a39537 - 2022-10-09 - Kayra Uylar <k.uylar@outlook.com>
e3fad460 - 2022-10-11 - Markus Heiser <markus.heiser@darmarit.de>
da5f0bc3 - 2022-10-11 - Surepusofu Arutemu <crexlight@gmail.com>
5704a98b - 2022-10-11 - Markus Heiser <markus.heiser@darmarit.de>
f3ef3ebb - 2022-10-11 - Markus Heiser <markus.heiser@darmarit.de>
620636c1 - 2022-10-11 - Markus Heiser <markus.heiser@darmarit.de>
767b3bb2 - 2022-10-08 - KEINOS <github@keinos.com>
60d38c87 - 2022-10-11 - Markus Heiser <markus.heiser@darmarit.de>
2022-10-14 07:38:20 +00:00
dependabot[bot]
adf559fefd Bump pylint from 2.15.3 to 2.15.4
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.15.3 to 2.15.4.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.15.3...v2.15.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-14 07:06:24 +00:00
Markus Heiser
a733761288 Merge pull request #1853 from return42/sort_osm_keys
[fix] update_osm_keys_tags.py: sort JSON dump
2022-10-11 11:57:17 +02:00
Markus Heiser
23d797ee6f Update searx.data - update_osm_keys_tags.py
Patch was generated by::

  ./manage pyenv.cmd searxng_extra/update/update_osm_keys_tags.py

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-10-11 11:49:06 +02:00
Markus Heiser
9933155a2e [fix] update_osm_keys_tags.py: sort JSON dump
To get meaningful diff, the keys in JSON dump needs to be sorted.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-10-11 11:45:26 +02:00
Alexandre Flament
666cd1f635 Merge pull request #1846 from searxng/dependabot/pip/master/black-22.10.0
Bump black from 22.8.0 to 22.10.0
2022-10-07 10:07:24 +02:00
Alexandre Flament
84f61af839 Merge pull request #1848 from searxng/translations_update
Update translations
2022-10-07 10:05:26 +02:00
searxng-bot
325eadfd04 [translations] update from Weblate
70909b19 - 2022-10-04 - Yan Lyra <yanlyra3@gmail.com>
acf1f0aa - 2022-10-03 - George Kashkosh <kash.george@gmail.com>
94ce447f - 2022-10-01 - Zaid Aiman <zaidaiman@gmail.com>
59959050 - 2022-09-30 - tjvfxtiwdr <tjvfxtiwdr@daimashili.com>
e27a5c79 - 2022-09-30 - a <a@daimashili.com>
2c05470f - 2022-09-30 - tjvfxtiwdr <tjvfxtiwdr@daimashili.com>
53644516 - 2022-10-01 - random <thrizem+wnd43@gmail.com>
2022-10-07 07:30:33 +00:00
dependabot[bot]
37b47e74be Bump typing-extensions from 4.3.0 to 4.4.0
Bumps [typing-extensions](https://github.com/python/typing_extensions) from 4.3.0 to 4.4.0.
- [Release notes](https://github.com/python/typing_extensions/releases)
- [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/python/typing_extensions/compare/4.3.0...4.4.0)

---
updated-dependencies:
- dependency-name: typing-extensions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-07 07:06:24 +00:00
dependabot[bot]
f723c67e95 Bump black from 22.8.0 to 22.10.0
Bumps [black](https://github.com/psf/black) from 22.8.0 to 22.10.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/22.8.0...22.10.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-07 07:06:21 +00:00
Alexandre Flament
901143f056 Merge pull request #1830 from MohamedElashri/master
Use official sci-hub mirrors
2022-10-01 09:59:07 +02:00
dependabot[bot]
1ad14c8c07 Bump sphinx from 5.1.1 to 5.2.3
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 5.1.1 to 5.2.3.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/5.x/CHANGES)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v5.1.1...v5.2.3)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-01 07:42:56 +00:00
Alexandre Flament
14d0fb2cd4 Merge pull request #1823 from searxng/dependabot/pip/master/selenium-4.5.0
Bump selenium from 4.4.3 to 4.5.0
2022-10-01 09:42:11 +02:00
Alexandre Flament
e9af772b65 Merge pull request #1826 from searxng/dependabot/pip/master/myst-parser-0.18.1
Bump myst-parser from 0.18.0 to 0.18.1
2022-10-01 09:34:36 +02:00
Mohamed Elashri
8d5653e60d Merge branch 'searxng:master' into master 2022-09-30 23:06:54 +00:00
Alexandre Flament
62324655ff Merge pull request #1827 from searxng/translations_update
Update translations
2022-09-30 10:52:53 +02:00
Alexandre Flament
f4281b16ff Merge pull request #1824 from searxng/dependabot/pip/master/certifi-2022.9.24
Bump certifi from 2022.9.14 to 2022.9.24
2022-09-30 10:51:40 +02:00
searxng-bot
4fea4acea1 [translations] update from Weblate
fbac3535 - 2022-09-28 - Markus Heiser <markus.heiser@darmarit.de>
cf5d71b7 - 2022-09-28 - Markus Heiser <markus.heiser@darmarit.de>
6dc351bd - 2022-09-28 - Markus Heiser <markus.heiser@darmarit.de>
42daf1f8 - 2022-09-28 - Markus Heiser <markus.heiser@darmarit.de>
f5fb629f - 2022-09-28 - Markus Heiser <markus.heiser@darmarit.de>
4e5f2c79 - 2022-09-28 - Markus Heiser <markus.heiser@darmarit.de>
5131835f - 2022-09-28 - Robert Bridda <briddarobert@icloud.com>
02055902 - 2022-09-28 - Markus Heiser <markus.heiser@darmarit.de>
716bd1d7 - 2022-09-28 - Markus Heiser <markus.heiser@darmarit.de>
768c8e43 - 2022-09-28 - Markus Heiser <markus.heiser@darmarit.de>
e8ad24c1 - 2022-09-28 - Markus Heiser <markus.heiser@darmarit.de>
a88c5f91 - 2022-09-28 - Markus Heiser <markus.heiser@darmarit.de>
fc70c33a - 2022-09-28 - Markus Heiser <markus.heiser@darmarit.de>
2022-09-30 07:43:45 +00:00
dependabot[bot]
08149e242d Bump myst-parser from 0.18.0 to 0.18.1
Bumps [myst-parser](https://github.com/executablebooks/MyST-Parser) from 0.18.0 to 0.18.1.
- [Release notes](https://github.com/executablebooks/MyST-Parser/releases)
- [Changelog](https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/executablebooks/MyST-Parser/compare/v0.18.0...v0.18.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-30 07:11:07 +00:00
dependabot[bot]
c9a6254961 Bump certifi from 2022.9.14 to 2022.9.24
Bumps [certifi](https://github.com/certifi/python-certifi) from 2022.9.14 to 2022.9.24.
- [Release notes](https://github.com/certifi/python-certifi/releases)
- [Commits](https://github.com/certifi/python-certifi/compare/2022.09.14...2022.09.24)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-30 07:10:56 +00:00
dependabot[bot]
aee4b87653 Bump selenium from 4.4.3 to 4.5.0
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.4.3 to 4.5.0.
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/commits/selenium-4.5.0)

---
updated-dependencies:
- dependency-name: selenium
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-30 07:10:50 +00:00
Alexandre Flament
a7d693231c Merge pull request #1819 from searxng/update_data_update_currencies.py
Update searx.data - update_currencies.py
2022-09-29 16:03:34 +02:00
Alexandre Flament
f3d25f9cef Merge pull request #1821 from searxng/update_data_update_engine_descriptions.py
Update searx.data - update_engine_descriptions.py
2022-09-29 16:02:57 +02:00
Alexandre Flament
5060732486 Merge pull request #1818 from searxng/update_data_update_ahmia_blacklist.py
Update searx.data - update_ahmia_blacklist.py
2022-09-29 16:02:02 +02:00
Alexandre Flament
520a873ab4 Merge pull request #1820 from searxng/update_data_update_wikidata_units.py
Update searx.data - update_wikidata_units.py
2022-09-29 16:01:31 +02:00
Alexandre Flament
5f34015445 Merge pull request #1817 from searxng/update_data_update_firefox_version.py
Update searx.data - update_firefox_version.py
2022-09-29 16:00:37 +02:00
dalf
9cb792c0d6 Update searx.data - update_engine_descriptions.py 2022-09-29 02:22:00 +00:00
dalf
2d429ebd75 Update searx.data - update_wikidata_units.py 2022-09-29 02:13:02 +00:00
dalf
8fc3940448 Update searx.data - update_currencies.py 2022-09-29 02:12:54 +00:00
dalf
b7f4a3a207 Update searx.data - update_ahmia_blacklist.py 2022-09-29 02:12:48 +00:00
dalf
3153f0a795 Update searx.data - update_firefox_version.py 2022-09-29 02:12:48 +00:00
Alexandre Flament
a3148e5115 Merge pull request #1814 from return42/fix-typos
[fix] typos / reported by @kianmeng in searx PR-3366
2022-09-28 09:22:02 +02:00
Alexandre Flament
0e00af9c26 Merge pull request #1810 from return42/fix-1809
[fix] springer: unsupported operand type(s) for +: 'NoneType' and 'str'
2022-09-28 09:20:03 +02:00
Alexandre Flament
7097508a67 Merge pull request #1811 from return42/fix-paper.html
[fix] doc of the paper.html template (isbn, issn)
2022-09-28 09:19:20 +02:00
Markus Heiser
ba8959ad7c [fix] typos / reported by @kianmeng in searx PR-3366
[PR-3366] https://github.com/searx/searx/pull/3366

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-27 18:32:14 +02:00
Mohamed Elashri
212c98c9f5 Merge branch 'searxng:master' into master 2022-09-27 14:03:12 +00:00
Markus Heiser
52023e3d6e [fix] doc of the paper.html template (isbn, issn)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-25 15:46:29 +02:00
Markus Heiser
0052887929 [fix] springer: unsupported operand type(s) for +: 'NoneType' and 'str'
- fix issue reported #1809
- filter out `None` value from issn and isbn list
- add comments (from publicationName)
- add publisher

Closes: https://github.com/searxng/searxng/issues/1809
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-25 15:25:55 +02:00
Alexandre Flament
94c4cc126b Merge pull request #1806 from return42/paper-link
fix some leftovers in the science category
2022-09-24 22:11:35 +02:00
Mohamed Elashri
5832c70680 correct sci-hub links/ add .ru and remove other 3rd party domains. 2022-09-24 11:03:57 -04:00
Markus Heiser
e36b023508 [mod] core.ac.uk: add cetgory 'scientific publications'
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-24 16:16:22 +02:00
Markus Heiser
b424ee255e [mod] paper.html: simplify template by using result_link macro
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-24 16:13:36 +02:00
Alexandre Flament
bfd6f61849 Merge pull request #1804 from return42/fix-core.ac.uk
core.ac.uk: use paper.html template
2022-09-24 15:12:05 +02:00
Alexandre Flament
16443d4f4a [mod] core.ac.uk: try multiple ways to get url
If the url is not found, using:
* the DOI
* the downloadUrl
* the ARK id
2022-09-24 15:02:39 +02:00
Alexandre Flament
c808284f4d Merge pull request #1805 from return42/paper-add-doi
[mod] paper.html: add links to doi resolver
2022-09-24 14:46:07 +02:00
Markus Heiser
3198c906af [mod] paper.html: add links to doi resolver
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-24 14:19:51 +02:00
Markus Heiser
c76830d8a8 [mod] core.ac.uk: use paper.html template
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-24 13:19:33 +02:00
Markus Heiser
3ff2ad939d [fix] ERROR searx.engines.core.ac.uk: list index out of range
Some result items from core.ac.uk do not have an URL::

  Traceback (most recent call last):
  File "searx/search/processors/online.py", line 154, in search
    search_results = self._search_basic(query, params)
  File "searx/search/processors/online.py", line 142, in _search_basic
    return self.engine.response(response)
  File "SearXNG/searx/engines/core.py", line 73, in response
    'url': source['urls'][0].replace('http://', 'https://', 1),

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-24 13:19:33 +02:00
Alexandre Flament
ddd380fc06 Merge pull request #1803 from return42/paper-type
[docs] add description of the field 'type' from paper.html template
2022-09-24 11:56:16 +02:00
Markus Heiser
f08165f524 [docs] add description of the field 'type' from paper.html template
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-24 10:56:07 +02:00
Markus Heiser
bafebe91ac Merge pull request #1802 from return42/disable-crossref
[fix] typo in crossref settings: disable --> disabled
2022-09-24 08:23:49 +02:00
Markus Heiser
caebafdd06 [fix] typo in crossref settings: disable --> disabled
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-24 08:12:36 +02:00
Alexandre Flament
fc389f009d Merge pull request #1705 from dalf/template_paper
Theme: add a paper.html template and update of the science engines
2022-09-23 23:09:27 +02:00
Alexandre Flament
d6446be38f [mod] science category: various update of about PR 1705 2022-09-23 20:52:55 +02:00
Markus Heiser
08b8859705 [doc] paper.html result template
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-23 20:45:58 +02:00
Alexandre FLAMENT
fe43b6e821 [build] /static 2022-09-23 20:45:58 +02:00
Alexandre FLAMENT
e36f85b836 Science category: update the engines
* use the paper.html template
* fetch more data from the engines
* add crossref.py
2022-09-23 20:45:58 +02:00
Alexandre FLAMENT
593026ad9c oa_doi_rewrite: add the doi to the result when it is found.
Currentty, when oa_doi_rewrite find a DOI in the result URL, it replace the URL.
In this commit, the plugin adds the key "doi" to the result,
so the paper.html can show it.
2022-09-23 20:45:58 +02:00
Alexandre FLAMENT
5ba831d6a8 Add paper.html result template 2022-09-23 20:45:58 +02:00
Alexandre FLAMENT
a96f503d7b Add searx.webutils.searxng_format_date
* Move the datetime to str code from searx.webapp.search to searx.webutils.searxng_format_date
* When the month, day, hour, day and second are zero, the function returns only the year.
2022-09-23 20:45:58 +02:00
Alexandre Flament
bef3984d03 Merge pull request #1728 from liimee/eng-ddw
add duckduckgo weather engine
2022-09-23 18:14:09 +02:00
Alexandre Flament
d3fec1388c Merge pull request #1624 from liimee/eng-wttr
Add wttr.in engine
2022-09-23 18:13:37 +02:00
Markus Heiser
627dfc2af6 Merge pull request #1798 from searxng/translations_update
Update translations
2022-09-23 13:11:46 +02:00
searxng-bot
ab6e1542ff [translations] update from Weblate
55133802 - 2022-09-21 - Linerly <linerly@protonmail.com>
b9309bdf - 2022-09-22 - Xosé M <correo@xmgz.eu>
6da8db13 - 2022-09-21 - Constantine Giannopoulos <K.Giannopoulos@acg.edu>
c1edbd89 - 2022-09-21 - Markus Heiser <markus.heiser@darmarit.de>
9795e5fe - 2022-09-22 - alexfs2015 <alex04fs@gmail.com>
2022-09-23 07:38:23 +00:00
Markus Heiser
37217d9c3d Merge pull request #1797 from searxng/dependabot/pip/master/pylint-2.15.3
Bump pylint from 2.15.0 to 2.15.3
2022-09-23 09:19:35 +02:00
dependabot[bot]
27b162f1ea Bump pylint from 2.15.0 to 2.15.3
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.15.0 to 2.15.3.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.15.0...v2.15.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-23 07:05:17 +00:00
Alexandre Flament
1a7b6872b5 Merge pull request #1792 from unixfox/google-images-internal-api
use the internal API for google images
2022-09-21 19:50:38 +02:00
Markus Heiser
cf7ee67f71 [mod] google-images: slightly improvements of the engine
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-21 18:59:55 +02:00
Markus Heiser
2faad99718 Merge pull request #1795 from return42/fix-wording
[fix] wording: SearXNG is 'open' and not 'hackable'
2022-09-21 17:53:57 +02:00
Markus Heiser
8b40e68c56 [fix] wording: SearXNG is 'open' and not 'hackable'
The word "hackable" may arouse interest in programmers to participate in the
development, but it scares the ordinary user.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-21 17:10:35 +02:00
Markus Heiser
b1699f18ac Merge pull request #1791 from return42/fix-1790
[fix] google-news: origin result does not have a content area
2022-09-21 07:43:13 +02:00
Emilien Devos
df5f8d0e8e use the internal API for google images 2022-09-20 22:52:38 +02:00
Markus Heiser
dcf1d408a5 [fix] google-news: origin result does not have a content area
The google news are in a rework, the content area of a news item has been
removed.

Closes: https://github.com/searxng/searxng/issues/1790
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-20 20:18:43 +02:00
Markus Heiser
f98ef718de Merge pull request #1787 from dalf/fix-brave
Brave engine: fix BrotliDecoderDecompressStream error
2022-09-19 06:27:04 +02:00
Alexandre FLAMENT
33b43763b9 Brave engine: fix BrotliDecoderDecompressStream error 2022-09-18 22:08:38 +00:00
Markus Heiser
2ca62fec33 Merge pull request #1784 from return42/fix-locale-doc
[fix] and improve docs generated from source code.
2022-09-18 15:26:56 +02:00
Markus Heiser
fbf07237ff [fix] and improve docs generated from source code.
Fix::

    searx/locales.py:docstring of searx.locales.get_engine_locale:17: \
      WARNING: Definition list ends without a blank line; unexpected unindent.

Improvement: don't show default values in the generated documentation whe it is
more a mess than a usefull information (`:meta hide-value:`).

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-18 12:44:12 +02:00
Alexandre Flament
b3708e4137 Merge pull request #1757 from LencoDigitexer/master
add yandex autocomplete
2022-09-17 13:17:00 +02:00
LencoDigitexer
bc28091557 remove the print statement 2022-09-17 11:25:14 +03:00
Alexandre Flament
07b7058cb7 Merge pull request #1773 from searxng/dependabot/pip/master/uvloop-0.17.0
Bump uvloop from 0.16.0 to 0.17.0
2022-09-16 12:42:07 +02:00
Alexandre Flament
f1867378b2 Merge pull request #1775 from searxng/dependabot/pip/master/yamllint-1.28.0
Bump yamllint from 1.27.1 to 1.28.0
2022-09-16 11:18:42 +02:00
Alexandre Flament
0accc6f804 Merge pull request #1774 from searxng/dependabot/pip/master/certifi-2022.9.14
Bump certifi from 2022.6.15 to 2022.9.14
2022-09-16 11:18:30 +02:00
Alexandre Flament
e4ef63b5ef Merge pull request #1777 from searxng/translations_update
Update translations
2022-09-16 11:12:26 +02:00
searxng-bot
2ee8e5eff2 [translations] update from Weblate
570c4f7d - 2022-09-15 - Fero Novák <itzwowsmile@gmail.com>
0ef09ea1 - 2022-09-15 - dogyx <aaronloit@tuta.io>
03f97e22 - 2022-09-09 - beriain <soila@disroot.org>
caddaedc - 2022-09-10 - Markus Heiser <markus.heiser@darmarit.de>
addfb0c2 - 2022-09-09 - NxOne14 <kiril2315@gmail.com>
2872e3a6 - 2022-09-11 - Markus Heiser <markus.heiser@darmarit.de>
d2835b09 - 2022-09-11 - Sadith Nadungoda <sadithnadungoda@gmail.com>
2022-09-16 07:30:31 +00:00
dependabot[bot]
e695832b34 Bump yamllint from 1.27.1 to 1.28.0
Bumps [yamllint](https://github.com/adrienverge/yamllint) from 1.27.1 to 1.28.0.
- [Release notes](https://github.com/adrienverge/yamllint/releases)
- [Changelog](https://github.com/adrienverge/yamllint/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/adrienverge/yamllint/compare/v1.27.1...v1.28.0)

---
updated-dependencies:
- dependency-name: yamllint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-16 07:06:06 +00:00
dependabot[bot]
48e7a5fdf9 Bump certifi from 2022.6.15 to 2022.9.14
Bumps [certifi](https://github.com/certifi/python-certifi) from 2022.6.15 to 2022.9.14.
- [Release notes](https://github.com/certifi/python-certifi/releases)
- [Commits](https://github.com/certifi/python-certifi/compare/2022.06.15...2022.09.14)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-16 07:06:02 +00:00
dependabot[bot]
45d5ca5078 Bump uvloop from 0.16.0 to 0.17.0
Bumps [uvloop](https://github.com/MagicStack/uvloop) from 0.16.0 to 0.17.0.
- [Release notes](https://github.com/MagicStack/uvloop/releases)
- [Commits](https://github.com/MagicStack/uvloop/compare/v0.16.0...v0.17.0)

---
updated-dependencies:
- dependency-name: uvloop
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-16 07:05:59 +00:00
LencoDigitexer
3f72a79088 add yandex to autocomplete backends settings 2022-09-09 23:50:58 +03:00
LencoDigitexer
7b8d6015e3 add yandex autocompleter 2022-09-09 23:42:44 +03:00
Alexandre Flament
eb3d185e66 Merge pull request #1755 from searxng/dependabot/npm_and_yarn/searx/static/themes/simple/master/sharp-0.31.0
Bump sharp from 0.30.7 to 0.31.0 in /searx/static/themes/simple
2022-09-09 10:40:38 +02:00
Alexandre Flament
ada7213f7f Merge pull request #1756 from searxng/translations_update
Update translations
2022-09-09 10:01:49 +02:00
searxng-bot
bf8ea2020f [translations] update from Weblate 2022-09-09 07:26:09 +00:00
dependabot[bot]
cbf65e8292 Bump sharp from 0.30.7 to 0.31.0 in /searx/static/themes/simple
Bumps [sharp](https://github.com/lovell/sharp) from 0.30.7 to 0.31.0.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/main/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/compare/v0.30.7...v0.31.0)

---
updated-dependencies:
- dependency-name: sharp
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-09 07:11:11 +00:00
Alexandre Flament
691c0ed6b9 Merge pull request #1743 from dalf/update_about_metrics
Update about the metrics
2022-09-04 11:29:28 +02:00
Markus Heiser
0d1af21f9a Merge pull request #1714 from return42/mod-archive
[mod] option 'server: archive_url:' to configure internet archive
2022-09-04 09:49:06 +02:00
Markus Heiser
ad8ffd222c [mod] option 'ui: cache_url:' to configure internet cache or archive
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-04 09:42:20 +02:00
Markus Heiser
9ab8438132 Merge pull request #1681 from return42/fix-woxikon
[fix] engine woxikon.de - don't raise exception on empty result list
2022-09-04 09:14:34 +02:00
Alexandre FLAMENT
dd0887be18 xpath engine: change raise_for_httperror to no_result_for_http_status
no_result_for_http_status contains a list of HTTP status.
These HTTP status are seen an empty result list.
In other cases an exception is thrown as usual.

Previously raise_for_httperror were ignoring all HTTP error,
which make defective engines invisible in the stats.
2022-09-04 09:07:28 +02:00
Markus Heiser
a15dfa5ee1 [fix] engine woxikon.de - don't raise exception on empty result list
Woxikon expects a word in German, so with query "foo" the site finds nothing and
respons a 404:

    httpx.HTTPStatusError: Client error '404 Not Found' \
      for url 'https://synonyme.woxikon.de/synonyme/foo.php'

[1] https://github.com/searxng/searxng/issues/1543#issuecomment-1193317054

Closes: https://github.com/searxng/searxng/issues/1543
Suggested-by: @allendema [1]
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-04 09:07:28 +02:00
Markus Heiser
8e9fb0b435 Merge pull request #1647 from return42/deepl-engine
[mod] add deepl translation engine
2022-09-02 14:09:22 +02:00
Alexandre FLAMENT
66f72a006f template: when enable_metrics are disabled, hide the empty stats
when metrics are disabled:
* hide the link to /stats at the bottom of the pages
* in /preferences, hide the columns "Response time" and "Reliability"
2022-09-02 08:52:23 +00:00
Alexandre FLAMENT
94a28ebe53 Stats: display only the score per result, no anymore the score 2022-09-02 08:30:38 +00:00
Markus Heiser
ea61d6ed12 Merge pull request #1740 from searxng/dependabot/pip/master/black-22.8.0
Bump black from 22.6.0 to 22.8.0
2022-09-02 09:59:55 +02:00
dependabot[bot]
9a3ee91218 Bump black from 22.6.0 to 22.8.0
Bumps [black](https://github.com/psf/black) from 22.6.0 to 22.8.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/22.6.0...22.8.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 07:44:47 +00:00
Markus Heiser
bf709d3367 Merge pull request #1741 from searxng/dependabot/pip/master/pylint-2.15.0
Bump pylint from 2.14.5 to 2.15.0
2022-09-02 09:43:57 +02:00
Markus Heiser
61fceed826 Merge pull request #1742 from searxng/translations_update
Update translations
2022-09-02 09:43:38 +02:00
searxng-bot
9e84cf31a4 [translations] update from Weblate
9b3635db - 2022-08-31 - Andrij Mizyk <andmizyk@gmail.com>
875cbf38 - 2022-09-01 - Markus Heiser <markus.heiser@darmarit.de>
7b3b12a0 - 2022-08-31 - SecularSteve <fairfull.playing@gmail.com>
e60b4544 - 2022-08-28 - Markus Heiser <markus.heiser@darmarit.de>
dc9c17a4 - 2022-08-31 - SecularSteve <fairfull.playing@gmail.com>
7307cf31 - 2022-08-31 - SecularSteve <fairfull.playing@gmail.com>
ae642e6f - 2022-09-01 - Xosé M <correo@xmgz.eu>
8db6b9c9 - 2022-08-28 - Markus Heiser <markus.heiser@darmarit.de>
d74ef692 - 2022-08-31 - SecularSteve <fairfull.playing@gmail.com>
3ddf8997 - 2022-08-30 - Markus Heiser <markus.heiser@darmarit.de>
303d0890 - 2022-08-28 - Markus Heiser <markus.heiser@darmarit.de>
2022-09-02 07:25:26 +00:00
dependabot[bot]
368f6f6467 Bump pylint from 2.14.5 to 2.15.0
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.14.5 to 2.15.0.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.14.5...v2.15.0)

---
updated-dependencies:
- dependency-name: pylint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 07:04:49 +00:00
Alexandre Flament
174e524256 Merge pull request #1730 from dalf/docker-trivy
GitHub worfklow: add daily security check using trivy
2022-09-01 18:48:42 +02:00
Alexandre FLAMENT
1f78445d88 GitHub worfklow: add daily security check using trivy 2022-08-31 18:38:59 +00:00
Markus Heiser
8a56e3d443 Merge pull request #1729 from unixfox/disable-brave
Disable brave by default
2022-08-31 17:42:07 +02:00
Émilien Devos
fcccf39030 Disable brave by default
Brave is too unstable and will often not work by default. As seen in many issues: https://github.com/searxng/searxng/issues?q=is%3Aissue++sort%3Aupdated-desc+brave+label%3Abug+
2022-08-31 15:47:56 +02:00
ta
85b5293e40 simplify infobox result 2022-08-31 18:29:50 +07:00
ta
12f7d4a46b add duckduckgo weather engine 2022-08-31 17:29:32 +07:00
Alexandre Flament
242db53118 Merge pull request #1708 from dalf/result_proxy_default_settings
settings.yml: set default values for result_proxy
2022-08-29 19:42:04 +02:00
Alexandre Flament
a7bd2b47c2 Merge pull request #1712 from dalf/remove_searx_env_var
Remove usage of SEARX environment variables
2022-08-29 19:41:39 +02:00
Markus Heiser
13ef9cc125 Merge pull request #1720 from searxng/update_data_update_ahmia_blacklist.py
Update searx.data - update_ahmia_blacklist.py
2022-08-29 07:09:04 +02:00
Markus Heiser
e9b564d066 Merge pull request #1722 from searxng/update_data_update_languages.py
Update searx.data - update_languages.py
2022-08-29 07:08:26 +02:00
Markus Heiser
2b65502388 Merge pull request #1723 from searxng/update_data_update_firefox_version.py
Update searx.data - update_firefox_version.py
2022-08-29 07:07:54 +02:00
Markus Heiser
55d04a089d Merge pull request #1724 from searxng/update_data_update_engine_descriptions.py
Update searx.data - update_engine_descriptions.py
2022-08-29 07:07:14 +02:00
Markus Heiser
4a96480bd5 Merge pull request #1721 from searxng/update_data_update_wikidata_units.py
Update searx.data - update_wikidata_units.py
2022-08-29 07:06:39 +02:00
Markus Heiser
bf4d695276 Merge pull request #1719 from searxng/update_data_update_currencies.py
Update searx.data - update_currencies.py
2022-08-29 07:02:27 +02:00
dalf
c2400a8677 Update searx.data - update_engine_descriptions.py 2022-08-29 02:17:55 +00:00
dalf
e8bf907eef Update searx.data - update_firefox_version.py 2022-08-29 02:09:34 +00:00
dalf
915c0a2bc6 Update searx.data - update_languages.py 2022-08-29 02:09:27 +00:00
dalf
b1ccecbeb3 Update searx.data - update_wikidata_units.py 2022-08-29 02:09:17 +00:00
dalf
2e6d41fa24 Update searx.data - update_ahmia_blacklist.py 2022-08-29 02:09:09 +00:00
dalf
83fbc16908 Update searx.data - update_currencies.py 2022-08-29 02:09:09 +00:00
Alexandre FLAMENT
4adc9920e9 Remove usage of SEARX environment variables 2022-08-28 17:12:57 +00:00
Alexandre FLAMENT
341ad46303 settings.yml: set default values for result_proxy
* initialize result_proxy with searx/settings_defaults.py
* allow result_proxy.key to be a string

this commit supersedes #1522
2022-08-28 09:27:53 +00:00
Markus Heiser
8bdc6986a1 Merge pull request #1706 from dalf/fix-autocomplete-post
Fix: autocomplete with the POST method: url encode the user query
2022-08-28 09:14:47 +02:00
Markus Heiser
3be847149e Merge pull request #1707 from dalf/fix-external-bang
External bang: bug fix: URL encode the query so "!!g 1+1" works as intended
2022-08-28 09:07:24 +02:00
Alexandre FLAMENT
2af1a6f547 External bang: bug fix: URL encode the query so "!!g 1+1" works as intended 2022-08-27 07:10:26 +00:00
Alexandre FLAMENT
268fa7e036 [build] /static 2022-08-27 06:52:20 +00:00
Alexandre FLAMENT
4a72a6b9fc Theme: fix autocompletion with the POST method
With the POST method, autocomplete.js does not URL encode the values.
For example "1+1" is sent as "1+1" which is read as "1 1" since space are URL encoded with a plus.

There is no clean way to fix the bug since autocomplete.js seems abandoned.

The commit monkey patches the ajax function of autocomplete.js

Related to #1695
2022-08-27 06:48:30 +00:00
Alexandre Flament
56000d5162 Merge pull request #1699 from liimee/eng-app-store
add apple app store engine
2022-08-27 07:43:23 +02:00
Alexandre Flament
44bc94c36e Merge pull request #1700 from liimee/eng-ddm
add apple maps engine
2022-08-27 07:36:16 +02:00
ta
5057007270 remove thumbnail from results 2022-08-27 06:23:30 +07:00
ta
525946d7dd add poi's website and phone number, doesn't crash when there is no displayMapRegion, query the token on the first request 2022-08-27 06:17:58 +07:00
Alexandre Flament
5284de9137 Merge pull request #1702 from tiekoetter/limiter-accept-encoding-handling
[mod] limiter plugin: Accept-Encoding handling
2022-08-26 11:54:12 +02:00
Markus Heiser
2edf7d1f69 Merge pull request #1704 from searxng/translations_update
Update translations
2022-08-26 09:48:00 +02:00
searxng-bot
e5a25e51bf [translations] update from Weblate
3e034294 - 2022-08-26 - Markus Heiser <markus.heiser@darmarit.de>
46a4dfd3 - 2022-08-24 - Markus Heiser <markus.heiser@darmarit.de>
d41463fd - 2022-08-24 - Markus Heiser <markus.heiser@darmarit.de>
338b6716 - 2022-08-22 - Markus Heiser <markus.heiser@darmarit.de>
0c9d7756 - 2022-08-22 - Markus Heiser <markus.heiser@darmarit.de>
b422a480 - 2022-08-19 - Markus Heiser <markus.heiser@darmarit.de>
44c9caa0 - 2022-08-22 - Ricardo Simões <xmcorporation@gmail.com>
a774721f - 2022-08-20 - Markus Heiser <markus.heiser@darmarit.de>
d8a322d6 - 2022-08-22 - Markus Heiser <markus.heiser@darmarit.de>
2022-08-26 07:24:01 +00:00
Léon Tiekötter
221740f76e [mod] limiter plugin: Accept-Encoding handling
Only raise "suspicious Accept-Encoding" when both "gzip" and "deflate" are missing from Accept-Encoding.
Prevent Browsers which only implement one compression solution from being blocked by the limiter plugin.
Example Browser which is currently blocked: Lynx Browser (https://lynx.invisible-island.net)
2022-08-25 23:21:30 +02:00
ta
5dce299b22 add apple maps engine 2022-08-25 17:05:40 +07:00
Alexandre Flament
5a241e545e Merge pull request #1688 from liimee/eng-9gag
Add 9gag engine
2022-08-25 09:32:52 +02:00
ta
cef7bbab22 get the not cropped version of the thumbnail when the image height is not too important 2022-08-24 18:33:11 +07:00
ta
78bff4618c add safesearch support 2022-08-24 18:31:04 +07:00
ta
bcae7ae4e3 add developer info as author 2022-08-24 17:50:38 +07:00
ta
e5c1b64b1d add the apple app store engine
The Apple App Store is the digital app distribution platform for iOS & iPadOS.
2022-08-24 17:27:36 +07:00
ta
040e24f9ad support playing videos directly 2022-08-24 16:48:31 +07:00
Markus Heiser
4dc70b08a5 Merge pull request #1693 from return42/fix-1692
[fix] Internal server error after changing UI language to BG
2022-08-23 08:21:56 +02:00
Markus Heiser
c2db7b2a66 [fix] Internal server error after changing UI language to BG
A placeholder has been translated to BG, issue was added 8 month ago, when BG
translation was added [1]

    msgid "Compute {functions} of the arguments"
    msgstr "Изчислете {функции} на аргументите"

The incorrect translation has been corrected here in the message files and on
weblate.

[1] https://weblate.bubu1.eu/translate/searxng/searxng/bg/?&offset=49#history
Closes: https://github.com/searxng/searxng/issues/1692
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-08-23 08:11:16 +02:00
ta
79d06509c1 add tags as suggestions 2022-08-23 05:18:35 +07:00
ta
d22f469010 use invalid-name instead of C0103 for pylint 2022-08-22 18:27:35 +07:00
ta
dd9127492f add 9gag engine
9GAG is a social media website where users upload and share user-generated images and videos
2022-08-22 17:35:07 +07:00
ta
e64cca8c3f don't raise error when nothing was found 2022-08-22 17:04:29 +07:00
Markus Heiser
b84ee9ac60 Merge pull request #1686 from asenov/fix-bing_bideos
[fix] Bing videos search Index error
2022-08-22 08:10:46 +02:00
M Asenov
faa32d5773 fixed xpath selector for appropriate results 2022-08-21 20:08:00 +01:00
Alexandre Flament
5ed40af3ba Merge pull request #1661 from liimee/eng-tw
Add twitter engine
2022-08-21 15:21:18 +02:00
Markus Heiser
ee3c5e7752 Merge pull request #1666 from return42/harden-get_engine_locales
[fix] typo in get_engine_locale
2022-08-21 08:22:29 +02:00
ta
05851978cf add explanation of token 2022-08-17 19:45:42 +07:00
ta
c8acd4a3b6 add profile image to user results 2022-08-17 14:30:59 +07:00
ta
b6fd7cd571 add thumbnail to results if available 2022-08-17 14:25:22 +07:00
Markus Heiser
de1e7d12f7 [fix] get_engine_locale: better approximation of 'en' is 'en-US'
Compared to `en-EN` the better approximation of 'en' is 'en-US'.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-08-14 15:45:07 +02:00
Markus Heiser
ac7776663b [fix] typo in get_engine_locale
Due to a typo in get_engine_locale, a language selection like `!qw :de siemens`
did not work.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-08-14 14:35:09 +02:00
ta
96ea355a1f add twitter engine 2022-08-14 08:39:41 +07:00
Thomas Renard
d4acbcfe63 [mod] add deepl translation engine
This implements the Deepl Translation engine. It works nearly like lingva but
directly to the deepl API.  This api only needs a to-lang, from-lang is a fake
by now.

There is a free option to use [1].

[1] https://www.deepl.com/pro-api?cta=header-pro-api for registering a free account.
2022-08-10 09:14:36 +02:00
liimee
8c318562e2 add description and wikidata ID to wttr.in engine 2022-08-07 14:57:10 +07:00
ta
8aa018db95 add wttr.in engine 2022-08-07 13:04:18 +07:00
1003 changed files with 292286 additions and 123516 deletions

22
.devcontainer/Dockerfile Normal file
View File

@@ -0,0 +1,22 @@
ARG DEBIAN_CODENAME="bookworm"
FROM mcr.microsoft.com/devcontainers/base:$DEBIAN_CODENAME
ARG DEBIAN_CODENAME="bookworm"
RUN cat <<EOF > /etc/apt/sources.list.d/debian.sources
Types: deb
URIs: http://deb.debian.org/debian
Suites: $DEBIAN_CODENAME $DEBIAN_CODENAME-updates $DEBIAN_CODENAME-backports
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
URIs: http://security.debian.org/debian-security
Suites: $DEBIAN_CODENAME-security
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF
RUN apt-get update && \
apt-get -y install python3 python3-venv valkey-server firefox-esr graphviz imagemagick librsvg2-bin fonts-dejavu shellcheck

View File

@@ -0,0 +1,35 @@
{
"build": {
"args": {
"DEBIAN_CODENAME": "bookworm",
},
"dockerfile": "Dockerfile"
},
"features": {
"ghcr.io/devcontainers/features/github-cli": {},
"ghcr.io/devcontainers/features/docker-in-docker": {}
},
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"ms-azuretools.vscode-docker"
],
"remote.otherPortsAttributes": {
"protocol": "https"
},
"settings": {
"files.autoSave": "off",
"python.defaultInterpreterPath": "/workspaces/searxng/local/py3/bin/python3",
"python.formatting.blackPath": "/workspaces/searxng/local/py3/bin/black",
"python.linting.pylintPath": "/workspaces/searxng/local/py3/bin/pylint"
}
}
},
"forwardPorts": [8000, 8888],
"portsAttributes": {
"8000": {"label": "Sphinx documentation"},
"8888": {"label": "SearXNG"}
},
"postCreateCommand": "git pull && make install"
}

View File

@@ -3,18 +3,23 @@
;; Per-Directory Local Variables: ;; Per-Directory Local Variables:
;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Directory-Variables.html ;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Directory-Variables.html
;; ;;
;; .. hint:: ;; For full fledge developer tools install emacs packages:
;; ;;
;; If you get ``*** EPC Error ***`` (even after a jedi:install-server) in ;; M-x package-install ...
;; your emacs session, mostly you have jedi-mode enabled but the python
;; enviroment is missed. The python environment has to be next to the
;; ``<repo>/.dir-locals.el`` in::
;; ;;
;; ./local/py3 ;; magit gitconfig
;; nvm lsp-mode lsp-pyright lsp-eslint
;; pyvenv pylint pip-requirements
;; jinja2-mode
;; json-mode
;; company company-jedi company-quickhelp company-shell
;; realgud
;; sphinx-doc markdown-mode graphviz-dot-mode
;; apache-mode nginx-mode
;; ;;
;; To setup such an environment, build target:: ;; To setup a developer environment, build target::
;; ;;
;; $ make pyenv.install ;; $ make node.env.dev pyenv.install
;; ;;
;; Some buffer locals are referencing the project environment: ;; Some buffer locals are referencing the project environment:
;; ;;
@@ -29,26 +34,11 @@
;; (setq python-shell-virtualenv-root "/path/to/env/") ;; (setq python-shell-virtualenv-root "/path/to/env/")
;; - python-shell-interpreter --> <repo>/local/py3/bin/python ;; - python-shell-interpreter --> <repo>/local/py3/bin/python
;; ;;
;; Python development:
;;
;; Jedi, flycheck & other python stuff should use the 'python-shell-interpreter' ;; Jedi, flycheck & other python stuff should use the 'python-shell-interpreter'
;; from the local py3 environment. ;; from the local py3 environment.
;; ;;
;; For pyright support you need to install::
;;
;; M-x package-install lsp-pyright
;;
;; Other useful jedi stuff you might add to your ~/.emacs::
;;
;; (global-set-key [f6] 'flycheck-mode)
;; (add-hook 'python-mode-hook 'my:python-mode-hook)
;;
;; (defun my:python-mode-hook ()
;; (add-to-list 'company-backends 'company-jedi)
;; (require 'jedi-core)
;; (jedi:setup)
;; (define-key python-mode-map (kbd "C-c C-d") 'jedi:show-doc)
;; (define-key python-mode-map (kbd "M-.") 'jedi:goto-definition)
;; (define-key python-mode-map (kbd "M-,") 'jedi:goto-definition-pop-marker)
;; )
((nil ((nil
. ((fill-column . 80) . ((fill-column . 80)
@@ -64,10 +54,16 @@
(setq-local python-environment-directory (setq-local python-environment-directory
(expand-file-name "./local" prj-root)) (expand-file-name "./local" prj-root))
;; to get in use of NVM enviroment, install https://github.com/rejeep/nvm.el ;; to get in use of NVM environment, install https://github.com/rejeep/nvm.el
(setq-local nvm-dir (expand-file-name "./.nvm" prj-root)) (setq-local nvm-dir (expand-file-name "./.nvm" prj-root))
;; use 'py3' enviroment as default ;; use nodejs from the (local) NVM environment (see nvm-dir)
(nvm-use-for-buffer)
(ignore-errors (require 'lsp))
(setq-local lsp-server-install-dir (car (cdr nvm-current-version)))
(setq-local lsp-enable-file-watchers nil)
;; use 'py3' environment as default
(setq-local python-environment-default-root-name (setq-local python-environment-default-root-name
"py3") "py3")
@@ -100,22 +96,22 @@
(js-mode (js-mode
. ((eval . (progn . ((eval . (progn
;; use nodejs from the (local) NVM environment (see nvm-dir) (ignore-errors (require 'lsp-eslint))
(nvm-use-for-buffer)
(setq-local js-indent-level 2) (setq-local js-indent-level 2)
;; flycheck should use the eslint checker from developer tools ;; flycheck should use the eslint checker from developer tools
(setq-local flycheck-javascript-eslint-executable (setq-local flycheck-javascript-eslint-executable
(expand-file-name "node_modules/.bin/eslint" prj-root)) (expand-file-name "node_modules/.bin/eslint" prj-root))
;; (flycheck-mode)
(flycheck-mode) (if (featurep 'lsp-eslint)
(lsp))
)))) ))))
(python-mode (python-mode
. ((eval . (progn . ((eval . (progn
;; use nodejs from the (local) NVM environment (see nvm-dir) (ignore-errors (require 'jedi-core))
(nvm-use-for-buffer) (ignore-errors (require 'lsp-pyright))
(if (featurep 'lsp-pyright) (ignore-errors (sphinx-doc-mode))
(lsp))
(setq-local python-environment-virtualenv (setq-local python-environment-virtualenv
(list (expand-file-name "bin/virtualenv" python-shell-virtualenv-root) (list (expand-file-name "bin/virtualenv" python-shell-virtualenv-root)
;;"--system-site-packages" ;;"--system-site-packages"
@@ -124,6 +120,9 @@
(setq-local pylint-command (setq-local pylint-command
(expand-file-name "bin/pylint" python-shell-virtualenv-root)) (expand-file-name "bin/pylint" python-shell-virtualenv-root))
(if (featurep 'lsp-pyright)
(lsp))
;; pylint will find the '.pylintrc' file next to the CWD ;; pylint will find the '.pylintrc' file next to the CWD
;; https://pylint.readthedocs.io/en/latest/user_guide/run.html#command-line-options ;; https://pylint.readthedocs.io/en/latest/user_guide/run.html#command-line-options
(setq-local flycheck-pylintrc (setq-local flycheck-pylintrc

View File

@@ -1,44 +1,5 @@
*~ *
*/*~
*/*/*~
*/*/*/*~
*/*/*/*/*~
# Git !container/entrypoint.sh
.git !searx/**
.gitignore !requirements*.txt
# CI
.codeclimate.yml
.travis.yml
.taskcluster.yml
# Byte-compiled / optimized / DLL files
__pycache__/
*/__pycache__/
*/*/__pycache__/
*/*/*/__pycache__/
*.py[cod]
*/*.py[cod]
*/*/*.py[cod]
*/*/*/*.py[cod]
# node_modules
node_modules/
*/node_modules/
*/*/node_modules/
*/*/*/node_modules/
*/*/*/*/node_modules/
.tx/
# to sync with .gitignore
geckodriver.log
.coverage
coverage/
cache/
build/
dist/
local/
gh-pages/
*.egg-info/

72
.editorconfig Normal file
View File

@@ -0,0 +1,72 @@
# https://editorconfig.org/
root = true
[*]
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
end_of_line = lf
charset = utf-8
[{*.py,*.pyi}]
# code formatter accepts length of 120, but editor should prefer 80
max_line_length = 80
[{*.sh,manage}]
indent_style = space
indent_size = 4
# shfmt options
shell_variant = bash
switch_case_indent = true
[*.html]
# in the jinja templates we use indent size of 2 and we do not use tabs
indent_size = 2
indent_style = space
[*.css]
indent_size = 2
[*.less]
indent_size = 2
[*.js]
indent_size = 2
[*.ts]
indent_size = 2
[*.json]
indent_size = 2
insert_final_newline = ignore
[*.map]
indent_size = ignore
insert_final_newline = ignore
# Minified JavaScript files shouldn't be changed
[*.min.js]
indent_style = ignore
insert_final_newline = ignore
# Minified CSS files shouldn't be changed
[*.min.css]
indent_style = ignore
insert_final_newline = ignore
# Makefiles always use tabs for indentation
[Makefile]
indent_style = tab
# Batch files use tabs for indentation
[*.bat]
indent_style = tab
[docs/**.rst]
max_line_length = 79
[*.yml]
indent_size = 2

View File

@@ -20,7 +20,7 @@ assignees: ''
**How can SearXNG fetch the information from this engine?** **How can SearXNG fetch the information from this engine?**
<!-- List API URL, example code (using the correct markdown) and more <!-- List API URL, example code (using the correct markdown) and more
that could be useful for the developers in order to implement this engine. that could be useful for the developers in order to implement this engine.
If you don't know what to write, let this part blank.> If you don't know what to write, let this part blank. -->
**Applicable category of this engine** **Applicable category of this engine**
<!-- Where should this new engine fit in SearXNG? Current categories in SearXNG: <!-- Where should this new engine fit in SearXNG? Current categories in SearXNG:

View File

@@ -1,4 +1,4 @@
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
version: 2 version: 2
updates: updates:
- package-ecosystem: "pip" - package-ecosystem: "pip"
@@ -8,10 +8,68 @@ updates:
day: "friday" day: "friday"
open-pull-requests-limit: 5 open-pull-requests-limit: 5
target-branch: "master" target-branch: "master"
commit-message:
prefix: "[upd] pypi:"
groups:
minor:
applies-to: version-updates
update-types:
- "minor"
- "patch"
- package-ecosystem: "npm" - package-ecosystem: "npm"
directory: "/searx/static/themes/simple" directory: "/client/simple"
schedule: schedule:
interval: "weekly" interval: "weekly"
day: "friday" day: "friday"
open-pull-requests-limit: 5 open-pull-requests-limit: 5
target-branch: "master" target-branch: "master"
commit-message:
prefix: "[upd] web-client (simple):"
groups:
minor:
applies-to: version-updates
update-types:
- "minor"
- "patch"
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
day: "friday"
open-pull-requests-limit: 5
target-branch: "master"
commit-message:
prefix: "[upd] searxng.org/devtools (Node.js):"
groups:
minor:
applies-to: version-updates
update-types:
- "minor"
- "patch"
- package-ecosystem: "gomod"
directory: "/"
schedule:
interval: "weekly"
day: "friday"
open-pull-requests-limit: 5
target-branch: "master"
commit-message:
prefix: "[upd] searxng.org/devtools (Go):"
groups:
minor:
applies-to: version-updates
update-types:
- "minor"
- "patch"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "friday"
target-branch: "master"
commit-message:
prefix: "[upd] github-actions:"

47
.github/workflows/checker.yml vendored Normal file
View File

@@ -0,0 +1,47 @@
---
name: Checker
# yamllint disable-line rule:truthy
on:
workflow_dispatch:
schedule:
- cron: "0 4 * * 5"
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false
permissions:
contents: read
env:
PYTHON_VERSION: "3.13"
jobs:
search:
if: github.repository_owner == 'searxng' || github.event_name == 'workflow_dispatch'
name: Search
runs-on: ubuntu-24.04-arm
steps:
- name: Setup Python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: "${{ env.PYTHON_VERSION }}"
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: "false"
- name: Setup cache Python
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-"
path: "./local"
- name: Setup venv
run: make V=1 install
- name: Search checker
run: make search.checker

247
.github/workflows/container.yml vendored Normal file
View File

@@ -0,0 +1,247 @@
---
name: Container
# yamllint disable-line rule:truthy
on:
workflow_dispatch:
workflow_run:
workflows:
- Integration
types:
- completed
branches:
- master
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false
permissions:
contents: read
# Organization GHCR
packages: read
env:
PYTHON_VERSION: "3.13"
jobs:
build-base:
if: |
(github.repository_owner == 'searxng' && github.event.workflow_run.conclusion == 'success')
|| github.event_name == 'workflow_dispatch'
name: Build base
runs-on: ubuntu-24.04
permissions:
# Organization GHCR
packages: write
steps:
- if: github.repository_owner == 'searxng'
name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: "false"
- if: github.repository_owner == 'searxng'
name: Get date
id: date
run: echo "date=$(date +'%Y%m%d')" >>$GITHUB_OUTPUT
- if: github.repository_owner == 'searxng'
name: Check cache apko
id: cache-apko
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
# yamllint disable-line rule:line-length
key: "apko-${{ steps.date.outputs.date }}-${{ hashFiles('./container/base.yml', './container/base-builder.yml') }}"
path: "/tmp/.apko/"
lookup-only: true
- if: github.repository_owner == 'searxng' && steps.cache-apko.outputs.cache-hit != 'true'
name: Setup cache apko
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
# yamllint disable-line rule:line-length
key: "apko-${{ steps.date.outputs.date }}-${{ hashFiles('./container/base.yml', './container/base-builder.yml') }}"
restore-keys: "apko-${{ steps.date.outputs.date }}-"
path: "/tmp/.apko/"
- if: github.repository_owner == 'searxng' && steps.cache-apko.outputs.cache-hit != 'true'
name: Setup apko
run: |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
brew install apko
- if: github.repository_owner == 'searxng' && steps.cache-apko.outputs.cache-hit != 'true'
name: Login to GHCR
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: "ghcr.io"
username: "${{ github.repository_owner }}"
password: "${{ secrets.GITHUB_TOKEN }}"
- if: github.repository_owner == 'searxng' && steps.cache-apko.outputs.cache-hit != 'true'
name: Build
run: |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
apko publish ./container/base.yml ghcr.io/${{ github.repository_owner }}/base:searxng \
--cache-dir=/tmp/.apko/ \
--sbom=false \
--vcs=false \
--log-level=debug
apko publish ./container/base-builder.yml ghcr.io/${{ github.repository_owner }}/base:searxng-builder \
--cache-dir=/tmp/.apko/ \
--sbom=false \
--vcs=false \
--log-level=debug
build:
if: github.repository_owner == 'searxng' || github.event_name == 'workflow_dispatch'
name: Build (${{ matrix.arch }})
runs-on: ${{ matrix.os }}
needs: build-base
strategy:
fail-fast: false
matrix:
include:
- arch: amd64
os: ubuntu-24.04
emulation: false
- arch: arm64
os: ubuntu-24.04-arm
emulation: false
- arch: armv7
os: ubuntu-24.04-arm
emulation: true
permissions:
# Organization GHCR
packages: write
outputs:
docker_tag: ${{ steps.build.outputs.docker_tag }}
git_url: ${{ steps.build.outputs.git_url }}
steps:
- name: Setup Python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: "${{ env.PYTHON_VERSION }}"
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: "false"
fetch-depth: "0"
- name: Setup cache Python
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-"
path: "./local/"
- name: Setup cache container uv
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
key: "container-uv-${{ matrix.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: "container-uv-${{ matrix.arch }}-"
path: "/var/tmp/buildah-cache-1001/uv/"
- if: ${{ matrix.emulation }}
name: Setup QEMU
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
- name: Login to GHCR
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: "ghcr.io"
username: "${{ github.repository_owner }}"
password: "${{ secrets.GITHUB_TOKEN }}"
- name: Build
id: build
env:
OVERRIDE_ARCH: "${{ matrix.arch }}"
run: make podman.build
test:
name: Test (${{ matrix.arch }})
runs-on: ${{ matrix.os }}
needs: build
strategy:
fail-fast: false
matrix:
include:
- arch: amd64
os: ubuntu-24.04
emulation: false
- arch: arm64
os: ubuntu-24.04-arm
emulation: false
- arch: armv7
os: ubuntu-24.04-arm
emulation: true
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: "false"
- if: ${{ matrix.emulation }}
name: Setup QEMU
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
- name: Login to GHCR
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: "ghcr.io"
username: "${{ github.repository_owner }}"
password: "${{ secrets.GITHUB_TOKEN }}"
- name: Test
env:
OVERRIDE_ARCH: "${{ matrix.arch }}"
GIT_URL: "${{ needs.build.outputs.git_url }}"
run: make container.test
release:
if: github.repository_owner == 'searxng' && github.ref_name == 'master'
name: Release
runs-on: ubuntu-24.04-arm
needs:
- build
- test
permissions:
# Organization GHCR
packages: write
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: "false"
- name: Login to GHCR
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: "ghcr.io"
username: "${{ github.repository_owner }}"
password: "${{ secrets.GITHUB_TOKEN }}"
- name: Login to Docker Hub
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: "docker.io"
username: "${{ secrets.DOCKERHUB_USERNAME }}"
password: "${{ secrets.DOCKERHUB_TOKEN }}"
- name: Release
env:
GIT_URL: "${{ needs.build.outputs.git_url }}"
DOCKER_TAG: "${{ needs.build.outputs.docker_tag }}"
run: make container.push

View File

@@ -1,14 +1,27 @@
name: "Update searx.data" ---
name: Update searx.data
# yamllint disable-line rule:truthy
on: on:
workflow_dispatch:
schedule: schedule:
- cron: "59 23 28 * *" - cron: "59 23 28 * *"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false
permissions:
contents: read
env:
PYTHON_VERSION: "3.13"
jobs: jobs:
updateData: data:
name: Update data - ${{ matrix.fetch }} if: github.repository_owner == 'searxng'
runs-on: ubuntu-20.04 name: ${{ matrix.fetch }}
if: ${{ github.repository_owner == 'searxng'}} runs-on: ubuntu-24.04-arm
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
@@ -17,51 +30,56 @@ jobs:
- update_currencies.py - update_currencies.py
- update_external_bangs.py - update_external_bangs.py
- update_firefox_version.py - update_firefox_version.py
- update_languages.py - update_engine_traits.py
- update_wikidata_units.py - update_wikidata_units.py
- update_engine_descriptions.py - update_engine_descriptions.py
permissions:
contents: write
pull-requests: write
steps: steps:
- name: Checkout - name: Setup Python
uses: actions/checkout@v2 uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
- name: Install Ubuntu packages
run: |
sudo ./utils/searxng.sh install packages
- name: Set up Python
uses: actions/setup-python@v2
with: with:
python-version: '3.9' python-version: "${{ env.PYTHON_VERSION }}"
architecture: 'x64'
- name: Install Python dependencies - name: Checkout
run: | uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
make V=1 install with:
persist-credentials: "false"
- name: Setup cache Python
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-"
path: "./local/"
- name: Setup venv
run: make V=1 install
- name: Fetch data - name: Fetch data
env: run: V=1 ./manage pyenv.cmd python "./searxng_extra/update/${{ matrix.fetch }}"
FETCH_SCRIPT: ./searxng_extra/update/${{ matrix.fetch }}
run: |
V=1 ./manage pyenv.cmd python "$FETCH_SCRIPT"
- name: Create Pull Request - name: Create PR
id: cpr id: cpr
uses: peter-evans/create-pull-request@v3 uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with: with:
commit-message: Update searx.data - ${{ matrix.fetch }} author: "searxng-bot <searxng-bot@users.noreply.github.com>"
committer: searxng-bot <noreply@github.com> committer: "searxng-bot <searxng-bot@users.noreply.github.com>"
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> title: "[data] update searx.data - ${{ matrix.fetch }}"
signoff: false commit-message: "[data] update searx.data - ${{ matrix.fetch }}"
branch: update_data_${{ matrix.fetch }} branch: "update_data_${{ matrix.fetch }}"
delete-branch: true delete-branch: "true"
draft: false draft: "false"
title: 'Update searx.data - ${{ matrix.fetch }}' signoff: "false"
body: | body: |
Update searx.data - ${{ matrix.fetch }} [data] update searx.data - ${{ matrix.fetch }}
labels: | labels: |
data data
- name: Check outputs - name: Display information
run: | run: |
echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}" echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}" echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"

67
.github/workflows/documentation.yml vendored Normal file
View File

@@ -0,0 +1,67 @@
---
name: Documentation
# yamllint disable-line rule:truthy
on:
workflow_dispatch:
push:
branches:
- master
pull_request:
branches:
- master
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false
permissions:
contents: read
env:
PYTHON_VERSION: "3.13"
jobs:
release:
if: github.repository_owner == 'searxng' || github.event_name == 'workflow_dispatch'
name: Release
runs-on: ubuntu-24.04-arm
permissions:
# for JamesIves/github-pages-deploy-action to push
contents: write
steps:
- name: Setup Python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: "${{ env.PYTHON_VERSION }}"
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: "false"
fetch-depth: "0"
- name: Setup cache Python
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-"
path: "./local/"
- name: Setup venv
run: make V=1 install
- name: Build documentation
run: make V=1 docs.clean docs.html
- if: github.ref_name == 'master'
name: Release
uses: JamesIves/github-pages-deploy-action@6c2d9db40f9296374acc17b90404b6e8864128c8 # v4.7.3
with:
folder: "dist/docs"
branch: "gh-pages"
commit-message: "[doc] build from commit ${{ github.sha }}"
# Automatically remove deleted files from the deploy branch
clean: "true"
single-commit: "true"

View File

@@ -1,192 +1,99 @@
---
name: Integration name: Integration
# yamllint disable-line rule:truthy
on: on:
push: push:
branches: ["master"] branches:
- master
pull_request: pull_request:
branches: ["master"] branches:
- master
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: false
permissions:
contents: read
env:
PYTHON_VERSION: "3.13"
jobs: jobs:
python: test:
name: Python ${{ matrix.python-version }} name: Python ${{ matrix.python-version }}
runs-on: ubuntu-20.04 runs-on: ubuntu-24.04
strategy: strategy:
matrix: matrix:
os: [ubuntu-20.04] python-version:
python-version: ["3.7", "3.8", "3.9", "3.10"] - "3.10"
steps: - "3.11"
- name: Checkout - "3.12"
uses: actions/checkout@v2 - "3.13"
- name: Install Ubuntu packages - "3.14"
run: |
sudo ./utils/searxng.sh install packages
sudo apt install firefox
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
architecture: 'x64'
- name: Cache Python dependencies
id: cache-python
uses: actions/cache@v2
with:
path: ./local
key: python-${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('requirements*.txt', 'setup.py') }}
- name: Install Python dependencies
if: steps.cache-python.outputs.cache-hit != 'true'
run: |
make V=1 install
make V=1 gecko.driver
- name: Run tests
run: make V=1 ci.test
- name: Test coverage
run: make V=1 test.coverage
- name: Store coverage result
uses: actions/upload-artifact@v2
with:
name: coverage-${{ matrix.python-version }}
path: coverage/
retention-days: 60
themes:
name: Themes
runs-on: ubuntu-20.04
steps: steps:
- name: Checkout - name: Setup Python
uses: actions/checkout@v2 uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
- name: Install Ubuntu packages with:
run: sudo ./utils/searxng.sh install buildhost python-version: "${{ matrix.python-version }}"
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.9'
architecture: 'x64'
- name: Cache Python dependencies
id: cache-python
uses: actions/cache@v2
with:
path: ./local
key: python-ubuntu-20.04-3.9-${{ hashFiles('requirements*.txt', 'setup.py') }}
- name: Install node dependencies
run: make V=1 node.env
- name: Build themes
run: make V=1 themes.all
documentation:
name: Documentation
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: '0'
persist-credentials: false
- name: Install Ubuntu packages
run: sudo ./utils/searxng.sh install buildhost
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.9'
architecture: 'x64'
- name: Cache Python dependencies
id: cache-python
uses: actions/cache@v2
with:
path: ./local
key: python-ubuntu-20.04-3.9-${{ hashFiles('requirements*.txt', 'setup.py') }}
- name: Build documentation
run: |
make V=1 docs.clean docs.html
- name: Deploy
if: github.ref == 'refs/heads/master'
uses: JamesIves/github-pages-deploy-action@3.7.1
with:
GITHUB_TOKEN: ${{ github.token }}
BRANCH: gh-pages
FOLDER: dist/docs
CLEAN: true # Automatically remove deleted files from the deploy branch
SINGLE_COMMIT: True
COMMIT_MESSAGE: build from commit ${{ github.sha }}
babel:
name: Update translations branch
runs-on: ubuntu-20.04
if: ${{ github.repository_owner == 'searxng' && github.ref == 'refs/heads/master' }}
needs:
- python
- themes
- documentation
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: '0'
token: ${{ secrets.WEBLATE_GITHUB_TOKEN }}
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.9'
architecture: 'x64'
- name: Cache Python dependencies
id: cache-python
uses: actions/cache@v2
with:
path: ./local
key: python-ubuntu-20.04-3.9-${{ hashFiles('requirements*.txt', 'setup.py') }}
- name: weblate & git setup
env:
WEBLATE_CONFIG: ${{ secrets.WEBLATE_CONFIG }}
run: |
mkdir -p ~/.config
echo "${WEBLATE_CONFIG}" > ~/.config/weblate
git config --global user.email "searxng-bot@users.noreply.github.com"
git config --global user.name "searxng-bot"
- name: Update transations
id: update
run: |
git restore utils/brand.env
make V=1 weblate.push.translations
dockers:
name: Docker
if: github.ref == 'refs/heads/master'
needs:
- python
- themes
- documentation
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
runs-on: ubuntu-20.04
steps:
- name: Checkout - name: Checkout
if: env.DOCKERHUB_USERNAME != null uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
uses: actions/checkout@v2
with: with:
# make sure "make docker.push" can get the git history persist-credentials: "false"
fetch-depth: '0'
- name: Set up Python - name: Setup cache Python
uses: actions/setup-python@v2 uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with: with:
python-version: '3.9' key: "python-${{ matrix.python-version }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
architecture: 'x64' restore-keys: "python-${{ matrix.python-version }}-${{ runner.arch }}-"
- name: Cache Python dependencies path: "./local/"
id: cache-python
uses: actions/cache@v2 - name: Setup venv
run: make V=1 install
- name: Run tests
run: make V=1 ci.test
theme:
name: Theme
runs-on: ubuntu-24.04-arm
steps:
- name: Setup Python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with: with:
path: ./local python-version: "${{ env.PYTHON_VERSION }}"
key: python-ubuntu-20.04-3.9-${{ hashFiles('requirements*.txt', 'setup.py') }}
- name: Set up QEMU - name: Checkout
if: env.DOCKERHUB_USERNAME != null uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
if: env.DOCKERHUB_USERNAME != null
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
if: env.DOCKERHUB_USERNAME != null
uses: docker/login-action@v1
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} persist-credentials: "false"
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push - name: Setup Node.js
if: env.DOCKERHUB_USERNAME != null uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
run: make -e GIT_URL=$(git remote get-url origin) docker.buildx with:
node-version-file: "./.nvmrc"
- name: Setup cache Node.js
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
key: "nodejs-${{ runner.arch }}-${{ hashFiles('./.nvmrc', './package.json') }}"
path: "./client/simple/node_modules/"
- name: Setup cache Python
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-"
path: "./local/"
- name: Setup venv
run: make V=1 install
- name: Lint
run: make themes.lint
- name: Build
run: make themes.all

138
.github/workflows/l10n.yml vendored Normal file
View File

@@ -0,0 +1,138 @@
---
name: Translation
# yamllint disable-line rule:truthy
on:
workflow_dispatch:
workflow_run:
workflows:
- Integration
types:
- completed
branches:
- master
schedule:
- cron: "05 07 * * 5"
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false
permissions:
contents: read
env:
PYTHON_VERSION: "3.13"
jobs:
update:
if: github.repository_owner == 'searxng' && github.event.workflow_run.conclusion == 'success'
name: Update
runs-on: ubuntu-24.04-arm
permissions:
# For "make V=1 weblate.push.translations"
contents: write
steps:
- name: Setup Python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: "${{ env.PYTHON_VERSION }}"
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
token: "${{ secrets.WEBLATE_GITHUB_TOKEN }}"
fetch-depth: "0"
- name: Setup cache Python
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-"
path: "./local/"
- name: Setup venv
run: make V=1 install
- name: Setup Weblate
run: |
mkdir -p ~/.config
echo "${{ secrets.WEBLATE_CONFIG }}" > ~/.config/weblate
- name: Setup Git
run: |
git config --global user.email "searxng-bot@users.noreply.github.com"
git config --global user.name "searxng-bot"
- name: Update translations
run: make V=1 weblate.push.translations
pr:
if: |
github.repository_owner == 'searxng'
&& (github.event_name == 'workflow_dispatch' || github.event_name == 'schedule')
name: Pull Request
runs-on: ubuntu-24.04-arm
permissions:
# For "make V=1 weblate.translations.commit"
contents: write
# For action "peter-evans/create-pull-request"
pull-requests: write
steps:
- name: Setup Python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: "${{ env.PYTHON_VERSION }}"
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
token: "${{ secrets.WEBLATE_GITHUB_TOKEN }}"
fetch-depth: "0"
- name: Setup cache Python
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
restore-keys: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-"
path: "./local/"
- name: Setup venv
run: make V=1 install
- name: Setup Weblate
run: |
mkdir -p ~/.config
echo "${{ secrets.WEBLATE_CONFIG }}" > ~/.config/weblate
- name: Setup Git
run: |
git config --global user.email "searxng-bot@users.noreply.github.com"
git config --global user.name "searxng-bot"
- name: Merge and push translation updates
run: make V=1 weblate.translations.commit
- name: Create PR
id: cpr
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
author: "searxng-bot <searxng-bot@users.noreply.github.com>"
committer: "searxng-bot <searxng-bot@users.noreply.github.com>"
title: "[l10n] update translations from Weblate"
commit-message: "[l10n] update translations from Weblate"
branch: "translations_update"
delete-branch: "true"
draft: "false"
signoff: "false"
body: |
[l10n] update translations from Weblate
labels: |
translation
- name: Display information
run: |
echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"

46
.github/workflows/security.yml vendored Normal file
View File

@@ -0,0 +1,46 @@
---
name: Security
# yamllint disable-line rule:truthy
on:
workflow_dispatch:
schedule:
- cron: "42 05 * * *"
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false
permissions:
contents: read
jobs:
container:
if: github.repository_owner == 'searxng'
name: Container
runs-on: ubuntu-24.04-arm
permissions:
security-events: write
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: "false"
- name: Sync GHCS from Docker Scout
uses: docker/scout-action@f8c776824083494ab0d56b8105ba2ca85c86e4de # v1.18.2
with:
organization: "searxng"
dockerhub-user: "${{ secrets.DOCKERHUB_USERNAME }}"
dockerhub-password: "${{ secrets.DOCKERHUB_TOKEN }}"
image: "registry://ghcr.io/searxng/searxng:latest"
command: "cves"
sarif-file: "./scout.sarif"
exit-code: "false"
write-comment: "false"
- name: Upload SARIFs
uses: github/codeql-action/upload-sarif@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6
with:
sarif_file: "./scout.sarif"

View File

@@ -1,56 +0,0 @@
name: "Update translations"
on:
schedule:
- cron: "05 07 * * 5"
workflow_dispatch:
jobs:
babel:
name: "create PR for additons from weblate"
runs-on: ubuntu-20.04
if: ${{ github.repository_owner == 'searxng' && github.ref == 'refs/heads/master' }}
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: '0'
token: ${{ secrets.WEBLATE_GITHUB_TOKEN }}
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.9'
architecture: 'x64'
- name: Cache Python dependencies
id: cache-python
uses: actions/cache@v2
with:
path: ./local
key: python-ubuntu-20.04-3.9-${{ hashFiles('requirements*.txt', 'setup.py') }}
- name: weblate & git setup
env:
WEBLATE_CONFIG: ${{ secrets.WEBLATE_CONFIG }}
run: |
mkdir -p ~/.config
echo "${WEBLATE_CONFIG}" > ~/.config/weblate
git config --global user.email "searxng-bot@users.noreply.github.com"
git config --global user.name "searxng-bot"
- name: Merge and push transation updates
run: |
make V=1 weblate.translations.commit
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v3
with:
token: ${{ secrets.WEBLATE_GITHUB_TOKEN }}
commit-message: Update translations
committer: searxng-bot <searxng-bot@users.noreply.github.com>
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
signoff: false
branch: translations_update
delete-branch: true
draft: false
title: 'Update translations'
body: |
Update translations
labels: |
translation

8
.gitignore vendored
View File

@@ -9,6 +9,7 @@ geckodriver.log
.coverage .coverage
coverage/ coverage/
.govm/
.nvm/ .nvm/
cache/ cache/
build/ build/
@@ -19,3 +20,10 @@ gh-pages/
/package-lock.json /package-lock.json
/node_modules/ /node_modules/
.idea/
searx/version_frozen.py
.dir-locals.el
.python-version

2
.nvmrc
View File

@@ -1 +1 @@
v16.15.1 24

View File

@@ -1,4 +1,4 @@
# -*- coding: utf-8; mode: conf -*- # -*- coding: utf-8; mode: conf-unix -*-
# lint Python modules using external checkers. # lint Python modules using external checkers.
# #
# This is the main checker controlling the other ones and the reports # This is the main checker controlling the other ones and the reports
@@ -27,7 +27,7 @@ ignore-patterns=
#init-hook= #init-hook=
# Use multiple processes to speed up Pylint. # Use multiple processes to speed up Pylint.
jobs=1 jobs=0
# List of plugins (as comma separated values of python modules names) to load, # List of plugins (as comma separated values of python modules names) to load,
# usually to register additional checkers. # usually to register additional checkers.
@@ -311,7 +311,7 @@ dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_
ignored-argument-names=_.*|^ignored_|^unused_ ignored-argument-names=_.*|^ignored_|^unused_
# Tells whether we should check for unused import in __init__ files. # Tells whether we should check for unused import in __init__ files.
init-import=no init-import=yes
# List of qualified module names which can have objects that can redefine # List of qualified module names which can have objects that can redefine
# builtins. # builtins.
@@ -338,6 +338,7 @@ valid-metaclass-classmethod-first-arg=mcs
# Maximum number of arguments for function / method # Maximum number of arguments for function / method
max-args=8 max-args=8
max-positional-arguments=14
# Maximum number of attributes for a class (see R0902). # Maximum number of attributes for a class (see R0902).
max-attributes=20 max-attributes=20
@@ -404,4 +405,4 @@ known-third-party=enchant
# Exceptions that will emit a warning when being caught. Defaults to # Exceptions that will emit a warning when being caught. Defaults to
# "Exception" # "Exception"
overgeneral-exceptions=Exception overgeneral-exceptions=builtins.Exception

23
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,23 @@
{
// See https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "SearXNG",
"type": "python",
"request": "launch",
"module": "searx.webapp",
"env": {
"FLASK_APP": "webapp",
"FLASK_DEBUG": "1",
"SEARXNG_DEBUG": "1",
},
"args": [
"run"
],
"jinja": true,
"justMyCode": true,
"python": "${workspaceFolder}/local/py3/bin/python",
}
]
}

11
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,11 @@
{
"python.testing.unittestArgs": [
"-v",
"-s",
"./tests",
"-p",
"test_*.py"
],
"python.testing.pytestEnabled": false,
"python.testing.unittestEnabled": true,
}

36
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,36 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "make run",
"type": "shell",
"command": "make run",
"problemMatcher": [],
"isBackground": true,
"presentation": {
"reveal": "always",
"panel": "dedicated"
},
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "make docs.live",
"type": "shell",
"command": "make docs.live",
"problemMatcher": [],
"isBackground": true,
"presentation": {
"reveal": "always",
"panel": "dedicated"
},
"group": {
"kind": "build"
}
}
]
}

View File

@@ -1,3 +1,3 @@
[weblate] [weblate]
url = https://weblate.bubu1.eu/api/ url = https://translate.codeberg.org/api/
translation = searxng/searxng translation = searxng/searxng

View File

@@ -1,9 +1,8 @@
searxng is a fork from `searx <https://github.com/searx/searx>`_ and is searxng is a fork from `searx <https://github.com/searx/searx>`_ and is
maintained by Alexandre Flament (`@dalf <https://github.com/dalf>`_) and Markus maintained by Markus Heiser (`@return42 <https://github.com/return42>`_)
Heiser (`@return42 <https://github.com/return42>`_)
People who have submitted patches/translations, reported bugs, consulted People who have submitted patches/translations, reported bugs, consulted
features or generally made searx better: features or generally made SearXNG better:
- Adam Tauber `@asciimoo <https://github.com/asciimoo>`_ - Adam Tauber `@asciimoo <https://github.com/asciimoo>`_
- Matej Cotman `@matejc <https://github.com/matejc>`_ - Matej Cotman `@matejc <https://github.com/matejc>`_
@@ -165,3 +164,18 @@ features or generally made searx better:
- Paul Alcock @Guilvareux - Paul Alcock @Guilvareux
- Sam A. `<https://samsapti.dev>`_ - Sam A. `<https://samsapti.dev>`_
- @XavierHorwood - @XavierHorwood
- Ahmad Alkadri `<https://github.com/ahmad-alkadri>`_
- Milad Laly @Milad-Laly
- @llmII
- @blob42 `<https://blob42.xyz>`_
- Paolo Basso `<https://github.com/paolobasso99>`
- Bernie Huang `<https://github.com/BernieHuang2008>`
- Austin Olacsi `<https://github.com/Austin-Olacsi>`
- @micsthepick
- Daniel Kukula `<https://github.com/dkuku>`
- Patrick Evans `https://github.com/holysoles`
- Daniel Mowitz `<https://daniel.mowitz.rocks>`
- `Bearz314 <https://github.com/bearz314>`_
- Tommaso Colella `<https://github.com/gioleppe>`
- @AgentScrubbles
- Filip Mikina `<https://github.com/fiffek>`

View File

@@ -1,706 +1,14 @@
1.0.0 2021.03.27 =======
================ SearXNG
=======
Core SearXNG development has been started in the middle of 2021 as a fork of the
~~~~ searx project. Since it beginning its a rolling release pulled from SearXNG's
master branch:
- drop support for Python 3.5 ( #2459 ) - The CHANGELOG_ is replaced by the commit history of the master branch.
- add support for Python 3.9 ( #2397 #2459 ) - Since merged PR-229_, the version number is based on the git commit
- update Python dependencies ( #2428 #2459 #2206 ) ⚠️ pyopenssl is not longer required
- automatic update of searx.data ( #2555 #2585 #2595 #2592 #2600 )
- update searx.data ( #2604 #2605 #2606 #2607 #2415 )
- add ability to send engine data to subsequent requests ( #2615 )
- add checker ( #2419 #2476 #2481 #2682 #2682 #2657 )
- by default allow only HTTPS, not HTTP ( #2641 #2659 )
- replace /translations.js with an embedded JSON ( #2660 )
- activate raise_for_error by default ( #2557 )
- don't dump traceback of SearxEngineResponseException on init ( #2635 )
Documentation .. _CHANGELOG: https://github.com/searxng/searxng/commits/master
~~~~~~~~~~~~~ .. _PR-229: https://github.com/searxng/searxng/pull/229
- update nginx configuration ( #2618 )
- document workaround for using 2 languages simultaneously ( #2479 )
- improve admin-docs about result proxy (morty) configuration ( #2509 )
- fixed typo ( #2457 )
New settings.yml
~~~~~~~~~~~~~~~~
- `general.contact_url` : add link to contact instance maintainer to footer of each page ( #2391 14c7cc0e118f1d0873b32b34793cdec2c5c9c13e #2412 )
- `brand` : move brand options from Makefile to settings.yml ( #2408 #2473 )
Themes
~~~~~~
- oscar: Hide links panel in mobile screens ( #2458 )
- oscar: upgrade dependencies ( #2346 #2673 #2662 )
- remove legacy, courgette and pix-art themes ( #2344 )
- add hyperlink to searx instances list in error message ( #2387 )
- preferences: a tooltip is shown when the mouse is over the engine names ( #2661 )
- Ignore double-quotes when highlighting query parts ( #2553 )
- update autocomplete ( #2593 )
New engines
~~~~~~~~~~~
- ccengine ( #2533 )
- mediathekviewweb ( #2541 )
- solidtorrents ( #2626 )
- solr ( #2652 )
- rumble ( #2588 )
- wiby.me ( #2452 )
Fixed engines
~~~~~~~~~~~~~
- apk_mirror ( #2556 #2642 )
- bing ( #2602 )
- duckduckgo ( #2560 #2559 )
- library genesis ( #2448 )
- ina ( 0ba71c3644c4d20f70528c10eed1385399ec1c82 )
- invidious ( #2451 )
- json_engine ( #2562 )
- google ( #2482 )
- google images ( #2482 )
- google play apps ( 88657fe9c2a41b9be38ee5146e5870672416db12 )
- google play movies ( 50ba2b9e87ef61e96da124f906d3aff4c7870e3f )
- google news ( #2483 #2498 )
- google scholar ( #2611 )
- google video ( #2482 )
- hoogle ( 6255b33c9dcf0d28f0a3307af988565f69259ce2 )
- naver ( #2542 )
- semantic schollar ( f596f5767bed915a5c3bed59ae26283e53f975ca f596f5767bed915a5c3bed59ae26283e53f975ca )
- startpage ( #2396 )
- seznam ( #2564 28286cf3f2308113bf440fb6e7cf326c6ed07889 )
- wikipedia ( #2554 #2565 #2681 #2681 )
- yacy ( #2669 )
- yahoo news ( #2640 #2655 )
Updated engines
~~~~~~~~~~~~~~~
- duckduckgo ( 5f450fda74e80bf350eb1493f66cfa61deaf5cea )
- geektimes ( 45f0e1a859fa12ce2ae0c24dc356922fcad50c8d )
- lobste.rs ( 06b754ad67aa6066aed6df77b5ffb74aabebb040 )
- soundcloud ( #2671 )
- peertube ( #2570 )
- recoll ( #2539 )
- yggtorrent ( #2573 )
Removed engines
~~~~~~~~~~~~~~~
- acgsou ( #2654 )
- google_play_music ( #2558 )
- metager ( #2538 )
- voat ( #2445 )
- yandex ( #2566 )
Bug fixes
~~~~~~~~~
- Fix empty colon in query from selecting Chinese ( #2454 )
- Get correct locale with country from browser ( #2531 )
Code refactoring / reduce the technical debt
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- refactor searx.search.SearchQuery and searx.search.EngineRef ( #2398 )
- dynamically set language_support variable ( #2499 )
- engines: add about variable ( #2460 )
- processors ( #2225 5c6a5407a0b124c3323e73c33b81ec1fbd7d2fce )
- remove Fabric file ( #2494 )
- use unittest from py3, remove unittest2 from py2 ( #2608 )
Github
~~~~~~
- add notice for the issue templates ( #2447 )
- every Sunday, call utils/fetch_*.py scripts and create a PR automatically ( #2500 728e09676400221a064627509a31470d8f6e33bf )
- minor change: replace "travis" by "CI" ( #2528 )
Build scripts
~~~~~~~~~~~~~
- update secret key check ( #2411 )
- fix makefile targets `books/{name}.*` and `books/user.pdf` ( #2420 #2530 )
- upload-pypi-test & linuxdoc has been released on PyPi ( #2456 )
- fix makefile target `gh-pages` : flatten history of branch gh.pages ( #2514 )
- optimize creation of the virtualenv & pyenvinstall targets ( #2421 )
- update pyenv pyenvinstall Make targets ( #2517 )
- makefile.python: remove duplicate pyenv-(un)install targets ( #2418 )
- [fix] make targets engines.languages and useragents.update ( #2643 )
- [fix] utils/serax.sh create_pyenv() - drop duplicate 'pip install .' ( #2621 )
Install scripts
~~~~~~~~~~~~~~~
- drop Ubuntu 16.04 (Xenial Xerus) support ( #2619 )
- replace ubu1910 image by ubu2010 image ( #2435 )
- LXC switch to Fedora 33 / Fedora 31 reached its EOL #2634 ( #2634 )
- add package which to CentOS-7 boilerplate ( #2623 )
- use SEARX_SETTINGS_TEMPLATE from .config environment ( #2417 )
- determine path to makefile.lxc in a LXC ( #2399 )
- remove unused code ( #2401 #2497 )
- support git versions <v2.22 ( #2620 )
Announcement
~~~~~~~~~~~~
We, the searx maintainer team, would like to say a huge thank you for everybody who had been involved in the development of searx or supported us in the past 7 years - making our first stable release available. Special thanks to [NLNet](https://nlnet.nl) for sponsoring multiple features of this release.
0.18.0 2020.12.14
=================
Core
~~~~
- drop Python 2 support ( #2137 #2244 )
- separate index and search routes ( #1681 ). ⚠️ add & remove your searx instance(s) from your browser.
- add external_bang ( #2027 #2043 #2059 )
- add external plugins supports ( #2074 )
- add plugin converting strings into hash digests ( #1246 )
- new category: Onions ( #565 )
- allow searx query parts anywhere in the query ( commit aa3c18dda9329fff875328f6ba97483c417b149a 2aef38c3b9d1fe93e9d665a49b10151d63d92392 )
- preferences: use base_url for prefix of sharing 'currenly saved preferences' (#1249 )
- upgrade to request 2.24.0, pyopenssl is optional ( #2199 )
- force admins to set secret_key if debug mode is disabled ( #2256 )
- standalone searx update ( #1591 )
- architecture clean up ( #2140 #2185 #2195 #2196 #2198 #2189 #2208 #2239 #2241 #2246 #2248 )
- record detail about engine error ( #2332 #2375 #2350 ). Add a new API endpoint: ``/stats/errors``.
- display if an engine does not support HTTPS requests ( #2373 )
New settings.yml
~~~~~~~~~~~~~~~~
- ``use_default_settings``: user settings can relied on the default settings ( #2291 #2362 #2349 )
- ``ui.results_on_new_tab: False`` - for opening result links in a new tab ( #2167 )
- ``ui.advanced_search`` - add preference for displaying advanced settings ( #2327 )
- ``server.method: "POST"`` - Make default query submission method configurable ( #2130 )
- ``server.default_http_headers`` - add default http headers ( #2295 )
- ``engines.*.proxies`` - Using proxy only for specific engines ( #1827 #2319 ), see https://docs.searxng.org/dev/engine_overview.html#settings-yml
- ``enabled_plugins`` - Enabled plugins ( a05c660e3036ad8d02072fc6731af54c2ed6151c )
- ``preferences.lock`` - Let admins lock user preferences ( #2270 )
Oscar theme
~~~~~~~~~~~
- update infobox ( #2131 )
- Make infoboxes shorter by default.
- Hide the main image by default as well and set a maximum height even when expanded.
- Add a toggle at the bottom of the infobox to expand it or to shrink it again.
- Fix pointhi style
- query suggestion does not keep the language tag of the original query ( #1314 )
- fix the clear button ( #2306 )
Simple theme
~~~~~~~~~~~~
- Fix autocomplete ( #2205 )
New engines
~~~~~~~~~~~
- ahmia, not_evil ( #565 )
- codeberg ( #2104 )
- command line engines: git grep, find, etc. ( #2128 #2250 )
- elasticsearch ( #2292 )
- metager ( #2139 )
- naver ( #1912 )
- opensemanticsearch ( #2271 )
- peertube ( #2109 )
- recoll (#2325)
- sepiasearch ( #2227 )
Updated engines
~~~~~~~~~~~~~~~
- digg ( #2285 )
- dbpedia ( #2352 )
- duckduckgo_definitions ( #2224 #2356 )
- duden ( #2359 )
- invidious ( #2116 )
- libgen ( #2360 )
- photon ( #2336 )
- soundclound ( #2365 )
- wikipedia ( #2178 #2363 #2354 )
- wikidata ( #2151 #2224 #2353 ) - faster response time
- yaCy ( #2255 ) - support HTTP digest authentication.
- youtube_noapi ( #2364 )
Fixed engines
~~~~~~~~~~~~~
- 1x ( #2361 )
- answer 'random sha256' ( #2121 )
- bing image ( #1496 )
- duckduckgo ( #2254 )
- genius ( #2371 )
- google ( #2236 )
- google image ( #2115 )
- lobste.rs ( #2253 )
- piratebay ( #2133 )
- startpage ( #2385 )
- torrentz ( #2101 )
Removed engines
~~~~~~~~~~~~~~~
- filecrop ( #2352 )
- searchcode_doc ( #2372 )
- seedpeer ( #2366 )
- twitter ( #2372 )
- yggtorrent ( #2099 #2375 )
Install scripts & documentation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- install script & documentation ( #2384 #2380 #2362 #2287 #2283 #2277 #2223 #2211 #2118 #2117 #2063 )
Docker image
~~~~~~~~~~~~
- use Alpine 3.12 ( #1983 )
- uwsgi serves the static files directly. ( #1865 )
- fix k8s support ( #2099 )
- make docker produces clean tag version ( #2182 )
Bug fixes
~~~~~~~~~
- searx.utils.HTMLTextExtractor: invalid HTML don't raise an Exception ( #2190 )
- Fix static URL ( commit da8b227044f45127f705f6ea94a72d368eea73bb )
- Fix autocomplete ( #2127 )
- Fix opensearch.xml ( #2132 #2247 )
- Fix documentation build ( #2237 )
- Some fixes in the fetch languages script ( #2212 )
Special thanks to `NLNet <https://nlnet.nl>`__ for sponsoring multiple features of this release.
0.17.0 2020.07.09
=================
- New engines
- eTools
- Wikibooks
- Wikinews
- Wikiquote
- Wikisource
- Wiktionary
- Wikiversity
- Wikivoyage
- Rubygems
- Engine fixes (google, google images, startpage, gigablast, yacy)
- Private engines introduced - more details: https://docs.searxng.org/blog/private-engines.html
- Greatly improved documentation - check it at https://docs.searxng.org
- Added autofocus to all search inputs
- CSP friendly oscar theme
- Added option to hide engine errors with `display_error_messages` engine option (true/false values, default is true)
- Tons of accessibility fixes - see https://github.com/searx/searx/issues/350 for details
- More flexible branding options: configurable vcs/issue tracker links
- Added "disable all" & "allow all" options to preferences engine select
- Autocomplete keyboard navigation fixes
- Configurable category order
- Wrap long lines in infoboxes
- Added RSS subscribtion link
- Added routing directions to OSM results
- Added author and length attributes to youtube videos
- Fixed image stretch with mobile viewport in oscar theme
- Added translatable JS strings
- Better HTML annotations - engine names and endpoints are available as classes
- RTL text fixes in oscar theme
- Handle weights in accept-language HTTP headers
- Added answerer results to rss/csv output
- Added new autocomplete backends to settings.yml
- Updated opensearch.xml
- Fixed custom locale setting from settings.yml
- Translation updates
- Removed engines: faroo
Special thanks to `NLNet <https://nlnet.nl>`__ for sponsoring multiple features of this release.
Special thanks to https://www.accessibility.nl/english for making accessibilty audit.
News
~~~~
- @HLFH joined the maintainer team
- Dropped Python2 support
0.16.0 2020.01.30
=================
- New engines
- Splash
- Apkmirror
- NPM search
- Invidious
- Seedpeer
- New languages
- Estonian
- Interlingua
- Lithuanian
- Tibetian
- Occitan
- Tamil
- Engine fixes (wolframalpha, google scholar, youtube, google images, seznam, google, soundcloud, google cloud, duden, btdigg, google play, bing images, flickr noapi, wikidata, dailymotion, google videos, arxiv, dictzone, fdroid, etymonline, bing, duckduckgo, startpage, voat, 1x, deviantart, digg, gigablast, mojeek, duckduckgo definitions, spotify, libgen, qwant, openstreetmap, wikipedia, ina, microsoft academic, scanr structures)
- Dependency updates
- Speed optimizations
- Initial support for offline engines
- Image format display
- Inline js scripts removed
- Infinite scroll plugin fix
- Simple theme bugfixes
- Docker image updates
- Bang expression fixes
- Result merging fixes
- New environment variable added: SEARXNG_BIND_ADDRESS
News
~~~~
- @return42 joined the maintainer team
- This is the last release with Python2 support
0.15.0 2019.01.06
=================
- New engines
- Acgsou (files, images, videos, music)
- Duden.de (general)
- Seznam (general)
- Mojeek (general)
- New languages
- Catalan
- Welsh
- Basque
- Persian (Iran)
- Galician
- Dutch (Belgium)
- Telugu
- Vietnamese
- New random answerers
- sha256
- uuidv4
- New DOI resolsvers
- sci-hub.tw
- Fix Vim mode on Firefox
- Fix custom select in Oscar theme
- Engine fixes (duckduckgo, google news, currency convert, gigablast, google scholar, wikidata image, etymonline, google videos, startpage, bing image)
- Minor simple theme fixes
- New Youtube icon in Oscar theme
- Get DOI rewriters from settings.yml
- Hide page buttons when infinite scrolling is enabled
- Update user agent versions
- Make Oscar style configurable
- Make suspend times of errored engines configurable
0.14.0 2018.02.19
=================
- New theme: oscar-logicodev dark
- New engines
- AskSteem (general)
- Autocompleter fix for py3
- Engine fixes (pdbe, pubmed, gigablast, google, yacy, bing videos, microsoft academic)
- "All" option is removed from languages
- Minor UI changes
- Translation updates
0.13.1 2017.11.23
=================
- Bug fixes
- https://github.com/searx/searx/issues/1088
- https://github.com/searx/searx/issues/1089
- Dependency updates
0.13.0 2017.11.21
=================
- New theme: simple
- New engines
- Google videos (video)
- Bing videos (video)
- Arxiv (science)
- OpenAIRE (science)
- Pubmed (science)
- Genius (music/lyrics)
- Display engine errors
- Faster startup
- Lots of engine fixes (google images, dictzone, duckduckgo, duckduckgo images, torrentz, faroo, digg, tokyotoshokan, nyaa.si, google news, gitlab, gigablast, geektimes.ru, habrahabr.ru, voat.co, base, json engine, currency convert, google)
- Shorter saved preferences URL
- Fix engine duplications in results
- Py3 compatibility fixes
- Translation updates
0.12.0 2017.06.04
=================
- Python3 compatibility
- New engines
- 1337x.to (files, music, video)
- Semantic Scholar (science)
- Library Genesis (general)
- Framalibre (IT)
- Free Software Directory (IT)
- More compact result UI (oscar theme)
- Configurable static content and template path
- Spelling suggestions
- Multiple engine fixes (duckduckgo, bing, swisscows, yahoo news, bing news, twitter, bing images)
- Reduced static image size
- Docker updates
- Translation updates
Special thanks to `NLNet <https://nlnet.nl>`__ for sponsoring multiple features of this release.
0.11.0 2017.01.10
=================
- New engines
- Protein Data Bank Europe (science)
- Voat.co (general, social media)
- Online Etimology Dictionary (science)
- CCC tv (video, it)
- Searx (all categories - can rotate multiple other instances)
- Answerer functionality (see answerer section on /preferences)
- Local answerers
- Statistical functions
- Random value generator
- Result proxy support (with `morty <https://github.com/asciimoo/morty>`__)
- Extended time range filter
- Improved search language support
- Multiple engine fixes (digbt, 500px, google news, ixquick, bing, kickass, google play movies, habrahabr, yandex)
- Minor UI improvements
- Suggestion support for JSON engine
- Result and query escaping fixes
- Configurable HTTP server version
- More robust search error handling
- Faster webapp initialization in debug mode
- Search module refactor
- Translation updates
0.10.0 2016.09.06
=================
- New engines
- Archive.is (general)
- INA (videos)
- Scanr (science)
- Google Scholar (science)
- Crossref (science)
- Openrepos (files)
- Microsoft Academic Search Engine (science)
- Hoogle (it)
- Diggbt (files)
- Dictzone (general - dictionary)
- Translated (general - translation)
- New Plugins
- Infinite scroll on results page
- DOAI rewrite
- Full theme redesign
- Display the number of results
- Filter searches by date range
- Instance config API endpoint
- Dependency version updates
- Socks proxy support for outgoing requests
- 404 page
News
~~~~
@kvch joined the maintainer team
0.9.0 2016.05.24
================
- New search category: science
- New engines
- Wolframalpha (science)
- Frinkiac (images)
- Arch Linux (it)
- BASE - Bielefeld Academic Search Engine (science)
- Dokuwiki (general)
- Nyaa.se (files, images, music, video)
- Reddit (general, images, news, social media)
- Torrentz.eu (files, music, video)
- Tokyo Toshokan (files, music, video)
- F-Droid (files)
- Erowid (general)
- Bitbucket (it)
- GitLab (it)
- Geektimes (it)
- Habrahabr (it)
- New plugins
- Open links in new tab
- Vim hotkeys for better navigation
- Wikipedia/Mediawiki engine improvements
- Configurable instance name
- Configurable connection pool size
- Fixed broken google engine
- Better docker image
- Images in standard results
- Fixed and refactored user settings (Warning: backward incompatibility - you have to reset your custom engine preferences)
- Suspending engines on errors
- Simplified development/deployment tooling
- Translation updates
- Multilingual autocompleter
- Qwant autocompleter backend
0.8.1 2015.12.22
================
- More efficient result parsing
- Rewritten google engine to prevent app crashes
- Other engine fixes/tweaks
- Bing news
- Btdigg
- Gigablast
- Google images
- Startpage
News
~~~~
New documentation page is available: https://docs.searxng.org
0.8.0 2015.09.08
================
- New engines
- Blekko (image)
- Gigablast (general)
- Spotify (music)
- Swisscows (general, images)
- Qwant (general, images, news, social media)
- Plugin system
- New plugins
- HTTPS rewrite
- Search on cagetory select
- User information
- Tracker url part remover
- Multiple outgoing IP and HTTP/HTTPS proxy support
- New autocompleter: startpage
- New theme: pix-art
- Settings file structure change
- Fabfile, docker deployment
- Optional safesearch result filter
- Force HTTPS in engines if possible
- Disabled HTTP referrer on outgoing links
- Display cookie information
- Prettier search URLs
- Right-to-left text handling in themes
- Translation updates (New locales: Chinese, Hebrew, Portuguese, Romanian)
New dependencies
~~~~~~~~~~~~~~~~
- pyopenssl
- ndg-httpsclient
- pyasn1
- pyasn1-modules
- certifi
News
~~~~
@dalf joined the maintainer "team"
0.7.0 2015.02.03
================
- New engines
- Digg
- Google Play Store
- Deezer
- Btdigg
- Mixcloud
- 1px
- Image proxy
- Search speed improvements
- Autocompletition of engines, shortcuts and supported languages
- Translation updates (New locales: Turkish, Russian)
- Default theme changed to oscar
- Settings option to disable engines by default
- UI code cleanup and restructure
- Engine tests
- Multiple engine bug fixes and tweaks
- Config option to set default interface locale
- Flexible result template handling
- Application logging and sophisticated engine exception tracebacks
- Kickass torrent size display (oscar theme)
New dependencies
~~~~~~~~~~~~~~~~
- pygments - http://pygments.org/
0.6.0 - 2014.12.25
==================
- Changelog added
- New engines
- Flickr (api)
- Subtitleseeker
- photon
- 500px
- Searchcode
- Searchcode doc
- Kickass torrent
- Precise search request timeout handling
- Better favicon support
- Stricter config parsing
- Translation updates
- Multiple ui fixes
- Flickr (noapi) engine fix
- Pep8 fixes
News
~~~~
Health status of searx instances and engines: http://stats.searx.oe5tpo.com
(source: https://github.com/pointhi/searx_stats)

View File

@@ -1,49 +0,0 @@
# How to contribute
## Resources in the documentation
* [Development quickstart](https://docs.searxng.org/dev/contribution_guide.html)
* [Contribution guide](https://docs.searxng.org/dev/contribution_guide.html)
## Submitting PRs
Please follow the provided PR template when writing a description for your changes.
Do not take criticism personally. When you get feedback, it is about your work,
not your character, personality, etc. Keep in mind we all want to make the project better.
When something is not clear, please ask questions to clear things up.
If you would like to introduce a big architectural changes or do a refactoring
either in the codebase or the development tools, please open an issue with a proposal
first. This way we can think together about the problem and probably come up
with a better solution.
## Coding conventions and guidelines
### Commit messages
* Always write descriptive commit messages ("fix bug" is not acceptable).
* Use the present tense ("Add feature" not "Added feature").
* Use the imperative mood ("Move cursor to..." not "Moves cursor to...").
* Limit the first line to 72 characters or less.
* Include the number of the issue you are fixing.
### Coding guidelines
As a Python project, we must follow [PEP 8](https://www.python.org/dev/peps/pep-0008/) and [PEP 20](https://www.python.org/dev/peps/pep-0020/) guidelines.
Furthermore, follow the Clean code conventions. The most important
in this project are the following rules:
* Simpler is better. [KISS principle](https://en.wikipedia.org/wiki/KISS_principle)
* Be consistent.
* Every function must do one thing.
* Use descriptive names for functions and variables.
* Always look for the root cause.
* Keep configurable data high level.
* Avoid negative conditionals.
* Prefer fewer arguments.
* Do not add obvious comment to code.
* Do not comment out code, just delete lines.

92
CONTRIBUTING.rst Normal file
View File

@@ -0,0 +1,92 @@
.. SPDX-License-Identifier: AGPL-3.0-or-later
.. _Quickstart guide: https://docs.searxng.org/dev/quickstart.html
.. _Commits guide: https://docs.searxng.org/dev/commits.html
.. _Weblate: https://translate.codeberg.org/projects/searxng/searxng/
.. _GitHub Codespaces: https://docs.github.com/en/codespaces/overview
.. _120 hours per month: https://github.com/settings/billing
.. _list of existing Codespaces: https://github.com/codespaces
Thank you for your interest in SearXNG.
Have a look at our `Quickstart guide`_, it's very easy to contribute.
Further information on *how-to* can be found
`here <https://docs.searxng.org/dev/index.html>`_.
Translations
============
Help translate SearXNG at `Weblate`_.
.. image:: https://translate.codeberg.org/widget/searxng/searxng/horizontal-auto.svg
:target: https://translate.codeberg.org/engage/searxng/
:alt: Weblate
:width: 768px
Cloud development
=================
You can contribute from your browser using `GitHub Codespaces`_:
- Fork the repository.
- Click on the ``<> Code`` green button.
- Click on the ``Codespaces`` tab instead of ``Local``.
- Click on ``Create codespace on master``.
- VSCode is going to start in the browser.
- Wait for ``git pull && make install`` to appear and then disappear.
- You have `120 hours per month`_ (see also your `list of existing Codespaces`_).
- You can start SearXNG using ``make run`` in the terminal or by pressing ``Ctrl+Shift+B``.
How-to contribute
=================
Submitting pull requests
------------------------
Please follow the provided PR template when writing a description for your
changes.
Do not take criticism personally. When you get feedback, it is about your work,
not your character or personality. Keep in mind we all want to make SearXNG
better.
When something is not clear, please ask questions to clear things up.
If you would like to introduce a big architectural change or do a refactor,
either in the codebase or the development tooling, please open an issue with a
proposal first. This way we can think together about the problem and probably
come up with a better solution.
Coding conventions and guidelines
---------------------------------
Commit messages
~~~~~~~~~~~~~~~
- Always write descriptive commit messages *("fix bug" is not acceptable)*.
- Use the present tense *("Add feature", not "Added feature")*.
- Use the imperative mood *("Move cursor to...", not "Moves cursor to...")*.
- Limit the first line (commit title) to 72 characters or less.
See `Commits guide`_ for more details.
Coding guidelines
~~~~~~~~~~~~~~~~~
As a Python project, we must follow `PEP 8 <https://www.python.org/dev/peps/pep-0008/>`_
and `PEP 20 <https://www.python.org/dev/peps/pep-0020/>`_ guidelines.
Furthermore, follow Clean Code conventions. The most important
rules in this project are:
- Simpler is better. `KISS principle <https://en.wikipedia.org/wiki/KISS_principle>`_
- Be consistent.
- Every function must do one thing.
- Use descriptive names for functions and variables.
- Always look for the root cause.
- Keep configurable data high level.
- Avoid negative conditionals.
- Prefer fewer arguments.
- Do not add obvious comments to code.
- Do not comment out code, delete lines instead.

View File

@@ -1,90 +0,0 @@
FROM alpine:3.16
ENTRYPOINT ["/sbin/tini","--","/usr/local/searxng/dockerfiles/docker-entrypoint.sh"]
EXPOSE 8080
VOLUME /etc/searx
VOLUME /etc/searxng
ARG SEARXNG_GID=977
ARG SEARXNG_UID=977
RUN addgroup -g ${SEARXNG_GID} searxng && \
adduser -u ${SEARXNG_UID} -D -h /usr/local/searxng -s /bin/sh -G searxng searxng
ENV INSTANCE_NAME=searxng \
AUTOCOMPLETE= \
BASE_URL= \
MORTY_KEY= \
MORTY_URL= \
SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml \
UWSGI_SETTINGS_PATH=/etc/searxng/uwsgi.ini
WORKDIR /usr/local/searxng
COPY requirements.txt ./requirements.txt
RUN apk upgrade --no-cache \
&& apk add --no-cache -t build-dependencies \
build-base \
py3-setuptools \
python3-dev \
libffi-dev \
libxslt-dev \
libxml2-dev \
openssl-dev \
tar \
git \
&& apk add --no-cache \
ca-certificates \
su-exec \
python3 \
py3-pip \
libxml2 \
libxslt \
openssl \
tini \
uwsgi \
uwsgi-python3 \
brotli \
&& pip3 install --upgrade pip wheel setuptools \
&& pip3 install --no-cache -r requirements.txt \
&& apk del build-dependencies \
&& rm -rf /root/.cache
COPY --chown=searxng:searxng . .
ARG TIMESTAMP_SETTINGS=0
ARG TIMESTAMP_UWSGI=0
ARG VERSION_GITCOMMIT=unknown
RUN su searxng -c "/usr/bin/python3 -m compileall -q searx"; \
touch -c --date=@${TIMESTAMP_SETTINGS} searx/settings.yml; \
touch -c --date=@${TIMESTAMP_UWSGI} dockerfiles/uwsgi.ini; \
find /usr/local/searxng/searx/static -a \( -name '*.html' -o -name '*.css' -o -name '*.js' \
-o -name '*.svg' -o -name '*.ttf' -o -name '*.eot' \) \
-type f -exec gzip -9 -k {} \+ -exec brotli --best {} \+
# Keep these arguments at the end to prevent redundant layer rebuilds
ARG LABEL_DATE=
ARG GIT_URL=unknown
ARG SEARXNG_GIT_VERSION=unknown
ARG LABEL_VCS_REF=
ARG LABEL_VCS_URL=
LABEL maintainer="searxng <${GIT_URL}>" \
description="A privacy-respecting, hackable metasearch engine." \
version="${SEARXNG_GIT_VERSION}" \
org.label-schema.schema-version="1.0" \
org.label-schema.name="searxng" \
org.label-schema.version="${SEARXNG_GIT_VERSION}" \
org.label-schema.url="${LABEL_VCS_URL}" \
org.label-schema.vcs-ref=${LABEL_VCS_REF} \
org.label-schema.vcs-url=${LABEL_VCS_URL} \
org.label-schema.build-date="${LABEL_DATE}" \
org.label-schema.usage="https://github.com/searxng/searxng-docker" \
org.opencontainers.image.title="searxng" \
org.opencontainers.image.version="${SEARXNG_GIT_VERSION}" \
org.opencontainers.image.url="${LABEL_VCS_URL}" \
org.opencontainers.image.revision=${LABEL_VCS_REF} \
org.opencontainers.image.source=${LABEL_VCS_URL} \
org.opencontainers.image.created="${LABEL_DATE}" \
org.opencontainers.image.documentation="https://github.com/searxng/searxng-docker"

View File

@@ -32,63 +32,59 @@ install uninstall:
$(Q)./manage pyenv.$@ $(Q)./manage pyenv.$@
PHONY += clean PHONY += clean
clean: py.clean docs.clean node.clean nvm.clean test.clean clean: py.clean docs.clean node.clean nvm.clean go.clean test.clean
$(Q)./manage build_msg CLEAN "common files" $(Q)./manage build_msg CLEAN "common files"
$(Q)find . -name '*.orig' -exec rm -f {} + $(Q)find . -name '*.orig' -exec rm -f {} +
$(Q)find . -name '*.rej' -exec rm -f {} + $(Q)find . -name '*.rej' -exec rm -f {} +
$(Q)find . -name '*~' -exec rm -f {} + $(Q)find . -name '*~' -exec rm -f {} +
$(Q)find . -name '*.bak' -exec rm -f {} + $(Q)find . -name '*.bak' -exec rm -f {} +
lxc.clean:
$(Q)rm -rf lxc-env
PHONY += search.checker search.checker.% PHONY += search.checker search.checker.%
search.checker: install search.checker: install
$(Q)./manage pyenv.cmd searx-checker -v $(Q)./manage pyenv.cmd searxng-checker -v
search.checker.%: install search.checker.%: install
$(Q)./manage pyenv.cmd searx-checker -v "$(subst _, ,$(patsubst search.checker.%,%,$@))" $(Q)./manage pyenv.cmd searxng-checker -v "$(subst _, ,$(patsubst search.checker.%,%,$@))"
PHONY += test ci.test test.shell PHONY += test ci.test test.shell
ci.test: test.yamllint test.black test.pyright test.pylint test.unit test.robot test.rst test.pybabel test: test.yamllint test.black test.pyright_modified test.pylint test.unit test.robot test.rst test.shell test.shfmt
test: test.yamllint test.black test.pyright test.pylint test.unit test.robot test.rst test.shell ci.test: test test.pybabel
test.shell: test.shell:
$(Q)shellcheck -x -s dash \ $(Q)shellcheck -x -s dash \
dockerfiles/docker-entrypoint.sh container/entrypoint.sh
$(Q)shellcheck -x -s bash \ $(Q)shellcheck -x -s bash \
utils/brand.env \ utils/brand.sh \
$(MTOOLS) \ $(MTOOLS) \
utils/lib.sh \ utils/lib.sh \
utils/lib_sxng*.sh \
utils/lib_govm.sh \
utils/lib_nvm.sh \ utils/lib_nvm.sh \
utils/lib_static.sh \
utils/lib_go.sh \
utils/lib_redis.sh \ utils/lib_redis.sh \
utils/filtron.sh \ utils/lib_valkey.sh \
utils/searx.sh \ utils/searxng.sh
utils/searxng.sh \
utils/morty.sh \
utils/lxc.sh \
utils/lxc-searxng.env
$(Q)$(MTOOLS) build_msg TEST "$@ OK" $(Q)$(MTOOLS) build_msg TEST "$@ OK"
PHONY += format
format: format.python format.shell
# wrap ./manage script # wrap ./manage script
MANAGE += buildenv
MANAGE += weblate.translations.commit weblate.push.translations MANAGE += weblate.translations.commit weblate.push.translations
MANAGE += data.all data.languages data.useragents data.osm_keys_tags MANAGE += data.all data.traits data.useragents data.locales data.currencies
MANAGE += docs.html docs.live docs.gh-pages docs.prebuild docs.clean MANAGE += docs.html docs.live docs.gh-pages docs.prebuild docs.clean
MANAGE += docker.build docker.push docker.buildx MANAGE += podman.build
MANAGE += docker.build docker.buildx
MANAGE += container.build container.test container.push
MANAGE += gecko.driver MANAGE += gecko.driver
MANAGE += node.env node.clean MANAGE += node.env node.env.dev node.clean
MANAGE += py.build py.clean MANAGE += py.build py.clean
MANAGE += pyenv pyenv.install pyenv.uninstall MANAGE += pyenv pyenv.install pyenv.uninstall
MANAGE += pypi.upload pypi.upload.test MANAGE += format.python format.shell
MANAGE += format.python MANAGE += test.yamllint test.pylint test.black test.pybabel test.unit test.coverage test.robot test.rst test.clean test.themes test.pyright test.pyright_modified test.shfmt
MANAGE += test.yamllint test.pylint test.pyright test.black test.pybabel test.unit test.coverage test.robot test.rst test.clean MANAGE += themes.all themes.simple themes.simple.analyze themes.fix themes.lint themes.test
MANAGE += themes.all themes.simple themes.simple.test pygments.less
MANAGE += static.build.commit static.build.drop static.build.restore MANAGE += static.build.commit static.build.drop static.build.restore
MANAGE += nvm.install nvm.clean nvm.status nvm.nodejs MANAGE += nvm.install nvm.clean nvm.status nvm.nodejs
MANAGE += go.env.dev go.clean
PHONY += $(MANAGE) PHONY += $(MANAGE)
@@ -97,8 +93,8 @@ $(MANAGE):
# short hands of selected targets # short hands of selected targets
PHONY += docs docker themes PHONY += docs container themes
docs: docs.html docs: docs.html
docker: docker.build container: container.build
themes: themes.all themes: themes.all

View File

@@ -12,11 +12,11 @@
## How to test this PR locally? ## How to test this PR locally?
<!-- commands to run the tests or instructions to test the changes--> <!-- commands to run the tests or instructions to test the changes -->
## Author's checklist ## Author's checklist
<!-- additional notes for reviewiers --> <!-- additional notes for reviewers -->
## Related issues ## Related issues

View File

@@ -1,155 +1,64 @@
.. SPDX-License-Identifier: AGPL-3.0-or-later .. SPDX-License-Identifier: AGPL-3.0-or-later
----
.. figure:: https://raw.githubusercontent.com/searxng/searxng/master/src/brand/searxng.svg
:target: https://docs.searxng.org/
:alt: SearXNG
:width: 100%
:align: center
----
Privacy-respecting, hackable `metasearch engine`_
If you are looking for running instances, ready to use, then visit searx.space_.
Otherwise jump to the user_, admin_ and developer_ handbooks you will find on
our homepage_.
|SearXNG install|
|SearXNG homepage|
|SearXNG wiki|
|AGPL License|
|Issues|
|commits|
|weblate|
|SearXNG logo|
----
.. _searx.space: https://searx.space
.. _user: https://docs.searxng.org/user
.. _admin: https://docs.searxng.org/admin
.. _developer: https://docs.searxng.org/dev
.. _homepage: https://docs.searxng.org/
.. _metasearch engine: https://en.wikipedia.org/wiki/Metasearch_engine .. _metasearch engine: https://en.wikipedia.org/wiki/Metasearch_engine
.. _Installation guide: https://docs.searxng.org/admin/installation.html
.. _Configuration guide: https://docs.searxng.org/admin/settings/index.html
.. _CONTRIBUTING: https://github.com/searxng/searxng/blob/master/CONTRIBUTING.rst
.. _LICENSE: https://github.com/searxng/searxng/blob/master/LICENSE
.. |SearXNG logo| image:: https://raw.githubusercontent.com/searxng/searxng/master/src/brand/searxng-wordmark.svg .. figure:: https://raw.githubusercontent.com/searxng/searxng/master/client/simple/src/brand/searxng.svg
:target: https://docs.searxng.org/ :target: https://searxng.org
:width: 5% :alt: SearXNG
:width: 512px
.. |SearXNG install| image:: https://img.shields.io/badge/-install-blue
:target: https://docs.searxng.org/admin/installation.html
.. |SearXNG homepage| image:: https://img.shields.io/badge/-homepage-blue SearXNG is a `metasearch engine`_. Users are neither tracked nor profiled.
:target: https://docs.searxng.org/
.. |SearXNG wiki| image:: https://img.shields.io/badge/-wiki-blue .. image:: https://img.shields.io/badge/organization-3050ff?style=flat-square&logo=searxng&logoColor=fff&cacheSeconds=86400
:target: https://github.com/searxng/searxng/wiki :target: https://github.com/searxng
:alt: Organization
.. |AGPL License| image:: https://img.shields.io/badge/license-AGPL-blue.svg .. image:: https://img.shields.io/badge/documentation-3050ff?style=flat-square&logo=readthedocs&logoColor=fff&cacheSeconds=86400
:target: https://docs.searxng.org
:alt: Documentation
.. image:: https://img.shields.io/github/license/searxng/searxng?style=flat-square&label=license&color=3050ff&cacheSeconds=86400
:target: https://github.com/searxng/searxng/blob/master/LICENSE :target: https://github.com/searxng/searxng/blob/master/LICENSE
:alt: License
.. |Issues| image:: https://img.shields.io/github/issues/searxng/searxng?color=yellow&label=issues .. image:: https://img.shields.io/github/commit-activity/y/searxng/searxng/master?style=flat-square&label=commits&color=3050ff&cacheSeconds=3600
:target: https://github.com/searxng/searxng/issues :target: https://github.com/searxng/searxng/commits/master/
:alt: Commits
.. |PR| image:: https://img.shields.io/github/issues-pr-raw/searxng/searxng?color=yellow&label=PR
:target: https://github.com/searxng/searxng/pulls
.. |commits| image:: https://img.shields.io/github/commit-activity/y/searxng/searxng?color=yellow&label=commits
:target: https://github.com/searxng/searxng/commits/master
.. |weblate| image:: https://weblate.bubu1.eu/widgets/searxng/-/searxng/svg-badge.svg
:target: https://weblate.bubu1.eu/projects/searxng/
Contact
=======
Come join us if you have questions or just want to chat about SearXNG.
Matrix
`#searxng:matrix.org <https://matrix.to/#/#searxng:matrix.org>`_
IRC
`#searxng on libera.chat <https://web.libera.chat/?channel=#searxng>`_
which is bridged to Matrix.
Differences to searx
====================
SearXNG is a fork of `searx`_. Here are some of the changes:
.. _searx: https://github.com/searx/searx
User experience
---------------
- Huge update of the simple theme:
* usable on desktop, tablet and mobile
* light and dark versions (you can choose in the preferences)
* support right-to-left languages
* `see the screenshots <https://dev.searxng.org/screenshots.html>`_
- the translations are up to date, you can contribute on `Weblate`_
- the preferences page has been updated:
* you can see which engines are reliable or not
* engines are grouped inside each tab
* each engine has a description
- thanks to the anonymous metrics, it is easier to report a bug of an engine and
thus engines get fixed more quickly
- if you don't want any metrics to be recorded, you can `disable them on the server
<https://docs.searxng.org/admin/engines/settings.html#general>`_
- administrator can `block and/or replace the URLs in the search results
<https://github.com/searxng/searxng/blob/5c1c0817c3996c5670a545d05831d234d21e6217/searx/settings.yml#L191-L199>`_
.. image:: https://img.shields.io/weblate/progress/searxng?server=https%3A%2F%2Ftranslate.codeberg.org&style=flat-square&label=translated&color=3050ff&cacheSeconds=86400
:target: https://translate.codeberg.org/projects/searxng/
:alt: Translated
Setup Setup
----- =====
- you don't need `Morty`_ to proxy the images even on a public instance To install SearXNG, see `Installation guide`_.
- you don't need `Filtron`_ to block bots, we implemented the builtin `limiter`_
- you get a well maintained `Docker image`_, now also built for ARM64 and ARM/v7 architectures
- alternatively we have up to date installation scripts
.. _Docker image: https://github.com/searxng/searxng-docker To fine-tune SearXNG, see `Configuration guide`_.
Further information on *how-to* can be found `here <https://docs.searxng.org/admin/index.html>`_.
Contributing is easier Connect
---------------------- =======
- readable debug log If you have questions or want to connect with others in the community,
- contributions to the themes are made easier, check out our `Development we have two official channels:
Quickstart`_ guide
- a lot of code cleanup and bug fixes
- the dependencies are up to date
.. _Morty: https://github.com/asciimoo/morty - `#searxng:matrix.org <https://matrix.to/#/#searxng:matrix.org>`_
.. _Filtron: https://github.com/searxng/filtron - `#searxng @ libera.chat <https://web.libera.chat/?channel=#searxng>`_ (bridged to Matrix)
.. _limiter: https://docs.searxng.org/src/searx.plugins.limiter.html
.. _Weblate: https://weblate.bubu1.eu/projects/searxng/searxng/
.. _Development Quickstart: https://docs.searxng.org/dev/quickstart.html
Contributing
Translations
============ ============
We need translators, suggestions are welcome at See CONTRIBUTING_ for more details.
https://weblate.bubu1.eu/projects/searxng/searxng/
.. figure:: https://weblate.bubu1.eu/widgets/searxng/-/multi-auto.svg License
:target: https://weblate.bubu1.eu/projects/searxng/ =======
This project is licensed under the GNU Affero General Public License (AGPL-3.0).
Make a donation See LICENSE_ for more details.
===============
You can support the SearXNG project by clicking on the donation page:
https://docs.searxng.org/donate.html

2
client/simple/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
dist
node_modules

View File

@@ -0,0 +1,17 @@
{
"$schema": "https://json.schemastore.org/stylelintrc.json",
"plugins": ["stylelint-prettier"],
"extends": ["stylelint-config-standard-less"],
"rules": {
"at-rule-no-vendor-prefix": null,
"declaration-empty-line-before": null,
"no-invalid-position-at-import-rule": null,
"prettier/prettier": true,
"property-no-vendor-prefix": null,
"selector-attribute-quotes": null,
"selector-class-pattern": null,
"selector-id-pattern": null,
"selector-no-vendor-prefix": null,
"shorthand-property-no-redundant-values": null
}
}

24
client/simple/README.rst Normal file
View File

@@ -0,0 +1,24 @@
=====================
MEMO vite development
=====================
Local install::
# in folder ./client/simple/
$ npm install
Start development server::
$ ./manage vite.simple.dev
# in folder ./client/simple/
$ npm exec -- vite
Fix source code::
# in folder ./client/simple/
$ npm run fix
Fix & Build::
$ ./manage vite.simple.build

150
client/simple/biome.json Normal file
View File

@@ -0,0 +1,150 @@
{
"$schema": "https://biomejs.dev/schemas/2.2.5/schema.json",
"files": {
"ignoreUnknown": true,
"includes": ["**", "!dist", "!node_modules"]
},
"assist": {
"enabled": true,
"actions": {
"recommended": true,
"source": {
"useSortedAttributes": "on",
"useSortedProperties": "on"
}
}
},
"formatter": {
"bracketSameLine": false,
"bracketSpacing": true,
"enabled": true,
"formatWithErrors": false,
"indentStyle": "space",
"indentWidth": 2,
"lineEnding": "lf",
"lineWidth": 120
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"complexity": {
"noForEach": "error",
"noImplicitCoercions": "error",
"useSimplifiedLogicExpression": "error"
},
"correctness": {
"noGlobalDirnameFilename": "error",
"noUndeclaredVariables": {
"level": "error",
"options": {
"checkTypes": true
}
},
"useImportExtensions": "error",
"useJsonImportAttributes": "error",
"useSingleJsDocAsterisk": "error"
},
"nursery": {
"noDeprecatedImports": "warn",
"noImportCycles": "warn",
"noMisusedPromises": "warn",
"noUselessCatchBinding": "warn",
"noUselessUndefined": "warn",
"useExhaustiveSwitchCases": "warn",
"useExplicitType": "warn"
},
"performance": {
"noAwaitInLoops": "error",
"noBarrelFile": "error",
"noDelete": "error",
"noNamespaceImport": "error",
"noReExportAll": "error",
"useTopLevelRegex": "error"
},
"style": {
"noCommonJs": "error",
"noEnum": "error",
"noInferrableTypes": "error",
"noNamespace": "error",
"noNegationElse": "error",
"noNestedTernary": "error",
"noParameterAssign": "error",
"noParameterProperties": "error",
"noRestrictedTypes": {
"level": "error",
"options": {
"types": {
"Element": {
"message": "Element is too generic",
"use": "HTMLElement"
}
}
}
},
"noSubstr": "error",
"noUnusedTemplateLiteral": "error",
"noUselessElse": "error",
"noYodaExpression": "error",
"useAsConstAssertion": "error",
"useAtIndex": "error",
"useCollapsedElseIf": "error",
"useCollapsedIf": "error",
"useConsistentArrayType": {
"level": "error",
"options": {
"syntax": "shorthand"
}
},
"useConsistentBuiltinInstantiation": "error",
"useConsistentMemberAccessibility": {
"level": "error",
"options": {
"accessibility": "explicit"
}
},
"useConsistentObjectDefinitions": {
"level": "error",
"options": {
"syntax": "explicit"
}
},
"useDefaultSwitchClause": "error",
"useExplicitLengthCheck": "error",
"useForOf": "error",
"useGroupedAccessorPairs": "error",
"useNumberNamespace": "error",
"useNumericSeparators": "error",
"useObjectSpread": "error",
"useReadonlyClassProperties": "error",
"useShorthandAssign": "error",
"useSingleVarDeclarator": "error",
"useThrowNewError": "error",
"useThrowOnlyError": "error",
"useTrimStartEnd": "error",
"useUnifiedTypeSignatures": "error"
},
"suspicious": {
"noAlert": "error",
"noBitwiseOperators": "error",
"noConstantBinaryExpressions": "error",
"noEmptyBlockStatements": "error",
"noEvolvingTypes": "error",
"noUnassignedVariables": "error",
"noVar": "error",
"useNumberToFixedDigitsArgument": "error",
"useStaticResponseMethods": "error"
}
}
},
"javascript": {
"formatter": {
"arrowParentheses": "always",
"jsxQuoteStyle": "double",
"quoteProperties": "asNeeded",
"quoteStyle": "double",
"semicolons": "always",
"trailingCommas": "none"
}
}
}

View File

@@ -0,0 +1,177 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
/*
this file is generated automatically by searxng_extra/update/update_pygments.py
using pygments version 2.19.2:
./manage templates.simple.pygments
*/
.code-highlight {
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.hll { background-color: #ffffcc }
.c { color: #3D7B7B; font-style: italic } /* Comment */
.err { border: 1px solid #F00 } /* Error */
.k { color: #008000; font-weight: bold } /* Keyword */
.o { color: #666 } /* Operator */
.ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.cp { color: #9C6500 } /* Comment.Preproc */
.cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.gd { color: #A00000 } /* Generic.Deleted */
.ge { font-style: italic } /* Generic.Emph */
.ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.gr { color: #E40000 } /* Generic.Error */
.gh { color: #000080; font-weight: bold } /* Generic.Heading */
.gi { color: #008400 } /* Generic.Inserted */
.go { color: #717171 } /* Generic.Output */
.gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.gs { font-weight: bold } /* Generic.Strong */
.gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.gt { color: #04D } /* Generic.Traceback */
.kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.kp { color: #008000 } /* Keyword.Pseudo */
.kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.kt { color: #B00040 } /* Keyword.Type */
.m { color: #666 } /* Literal.Number */
.s { color: #BA2121 } /* Literal.String */
.na { color: #687822 } /* Name.Attribute */
.nb { color: #008000 } /* Name.Builtin */
.nc { color: #00F; font-weight: bold } /* Name.Class */
.no { color: #800 } /* Name.Constant */
.nd { color: #A2F } /* Name.Decorator */
.ni { color: #717171; font-weight: bold } /* Name.Entity */
.ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.nf { color: #00F } /* Name.Function */
.nl { color: #767600 } /* Name.Label */
.nn { color: #00F; font-weight: bold } /* Name.Namespace */
.nt { color: #008000; font-weight: bold } /* Name.Tag */
.nv { color: #19177C } /* Name.Variable */
.ow { color: #A2F; font-weight: bold } /* Operator.Word */
.w { color: #BBB } /* Text.Whitespace */
.mb { color: #666 } /* Literal.Number.Bin */
.mf { color: #666 } /* Literal.Number.Float */
.mh { color: #666 } /* Literal.Number.Hex */
.mi { color: #666 } /* Literal.Number.Integer */
.mo { color: #666 } /* Literal.Number.Oct */
.sa { color: #BA2121 } /* Literal.String.Affix */
.sb { color: #BA2121 } /* Literal.String.Backtick */
.sc { color: #BA2121 } /* Literal.String.Char */
.dl { color: #BA2121 } /* Literal.String.Delimiter */
.sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.s2 { color: #BA2121 } /* Literal.String.Double */
.se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.sh { color: #BA2121 } /* Literal.String.Heredoc */
.si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.sx { color: #008000 } /* Literal.String.Other */
.sr { color: #A45A77 } /* Literal.String.Regex */
.s1 { color: #BA2121 } /* Literal.String.Single */
.ss { color: #19177C } /* Literal.String.Symbol */
.bp { color: #008000 } /* Name.Builtin.Pseudo */
.fm { color: #00F } /* Name.Function.Magic */
.vc { color: #19177C } /* Name.Variable.Class */
.vg { color: #19177C } /* Name.Variable.Global */
.vi { color: #19177C } /* Name.Variable.Instance */
.vm { color: #19177C } /* Name.Variable.Magic */
.il { color: #666 } /* Literal.Number.Integer.Long */
}
.code-highlight-dark(){
.code-highlight {
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.hll { background-color: #49483e }
.c { color: #959077 } /* Comment */
.err { color: #ED007E; background-color: #1E0010 } /* Error */
.esc { color: #F8F8F2 } /* Escape */
.g { color: #F8F8F2 } /* Generic */
.k { color: #66D9EF } /* Keyword */
.l { color: #AE81FF } /* Literal */
.n { color: #F8F8F2 } /* Name */
.o { color: #FF4689 } /* Operator */
.x { color: #F8F8F2 } /* Other */
.p { color: #F8F8F2 } /* Punctuation */
.ch { color: #959077 } /* Comment.Hashbang */
.cm { color: #959077 } /* Comment.Multiline */
.cp { color: #959077 } /* Comment.Preproc */
.cpf { color: #959077 } /* Comment.PreprocFile */
.c1 { color: #959077 } /* Comment.Single */
.cs { color: #959077 } /* Comment.Special */
.gd { color: #FF4689 } /* Generic.Deleted */
.ge { color: #F8F8F2; font-style: italic } /* Generic.Emph */
.ges { color: #F8F8F2; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.gr { color: #F8F8F2 } /* Generic.Error */
.gh { color: #F8F8F2 } /* Generic.Heading */
.gi { color: #A6E22E } /* Generic.Inserted */
.go { color: #66D9EF } /* Generic.Output */
.gp { color: #FF4689; font-weight: bold } /* Generic.Prompt */
.gs { color: #F8F8F2; font-weight: bold } /* Generic.Strong */
.gu { color: #959077 } /* Generic.Subheading */
.gt { color: #F8F8F2 } /* Generic.Traceback */
.kc { color: #66D9EF } /* Keyword.Constant */
.kd { color: #66D9EF } /* Keyword.Declaration */
.kn { color: #FF4689 } /* Keyword.Namespace */
.kp { color: #66D9EF } /* Keyword.Pseudo */
.kr { color: #66D9EF } /* Keyword.Reserved */
.kt { color: #66D9EF } /* Keyword.Type */
.ld { color: #E6DB74 } /* Literal.Date */
.m { color: #AE81FF } /* Literal.Number */
.s { color: #E6DB74 } /* Literal.String */
.na { color: #A6E22E } /* Name.Attribute */
.nb { color: #F8F8F2 } /* Name.Builtin */
.nc { color: #A6E22E } /* Name.Class */
.no { color: #66D9EF } /* Name.Constant */
.nd { color: #A6E22E } /* Name.Decorator */
.ni { color: #F8F8F2 } /* Name.Entity */
.ne { color: #A6E22E } /* Name.Exception */
.nf { color: #A6E22E } /* Name.Function */
.nl { color: #F8F8F2 } /* Name.Label */
.nn { color: #F8F8F2 } /* Name.Namespace */
.nx { color: #A6E22E } /* Name.Other */
.py { color: #F8F8F2 } /* Name.Property */
.nt { color: #FF4689 } /* Name.Tag */
.nv { color: #F8F8F2 } /* Name.Variable */
.ow { color: #FF4689 } /* Operator.Word */
.pm { color: #F8F8F2 } /* Punctuation.Marker */
.w { color: #F8F8F2 } /* Text.Whitespace */
.mb { color: #AE81FF } /* Literal.Number.Bin */
.mf { color: #AE81FF } /* Literal.Number.Float */
.mh { color: #AE81FF } /* Literal.Number.Hex */
.mi { color: #AE81FF } /* Literal.Number.Integer */
.mo { color: #AE81FF } /* Literal.Number.Oct */
.sa { color: #E6DB74 } /* Literal.String.Affix */
.sb { color: #E6DB74 } /* Literal.String.Backtick */
.sc { color: #E6DB74 } /* Literal.String.Char */
.dl { color: #E6DB74 } /* Literal.String.Delimiter */
.sd { color: #E6DB74 } /* Literal.String.Doc */
.s2 { color: #E6DB74 } /* Literal.String.Double */
.se { color: #AE81FF } /* Literal.String.Escape */
.sh { color: #E6DB74 } /* Literal.String.Heredoc */
.si { color: #E6DB74 } /* Literal.String.Interpol */
.sx { color: #E6DB74 } /* Literal.String.Other */
.sr { color: #E6DB74 } /* Literal.String.Regex */
.s1 { color: #E6DB74 } /* Literal.String.Single */
.ss { color: #E6DB74 } /* Literal.String.Symbol */
.bp { color: #F8F8F2 } /* Name.Builtin.Pseudo */
.fm { color: #A6E22E } /* Name.Function.Magic */
.vc { color: #F8F8F2 } /* Name.Variable.Class */
.vg { color: #F8F8F2 } /* Name.Variable.Global */
.vi { color: #F8F8F2 } /* Name.Variable.Instance */
.vm { color: #F8F8F2 } /* Name.Variable.Magic */
.il { color: #AE81FF } /* Literal.Number.Integer.Long */
}
}

4441
client/simple/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,51 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@searxng/theme-simple",
"version": "0.0.0",
"private": true,
"license": "AGPL-3.0",
"type": "module",
"scripts": {
"build": "npm run build:icons && npm run build:vite",
"build:icons": "node theme_icons.ts",
"build:vite": "vite build",
"clean": "rm -Rf node_modules",
"fix": "npm run fix:stylelint && npm run fix:biome && npm run fix:package",
"fix:biome": "biome check --write",
"fix:package": "sort-package-json --quiet",
"fix:stylelint": "stylelint --fix strict 'src/**/*.{scss,sass,less,styl}'",
"lint": "npm run lint:biome && npm run lint:tsc",
"lint:biome": "biome lint",
"lint:tsc": "tsc --noEmit"
},
"browserslist": [
"Chrome >= 93",
"Firefox >= 92",
"Safari >= 15.4",
"not dead"
],
"dependencies": {
"ionicons": "~8.0.0",
"normalize.css": "8.0.1",
"ol": "~10.6.0",
"swiped-events": "1.2.0"
},
"devDependencies": {
"@biomejs/biome": "2.2.5",
"@types/node": "~24.6.2",
"browserslist": "~4.26.3",
"browserslist-to-esbuild": "~2.1.0",
"edge.js": "~6.3.0",
"less": "~4.4.1",
"lightningcss": "~1.30.2",
"sharp": "~0.34.4",
"sort-package-json": "~3.4.0",
"stylelint": "~16.24.0",
"stylelint-config-standard-less": "~3.0.0",
"stylelint-prettier": "~5.0.0",
"svgo": "~4.0.0",
"typescript": "~5.9.3",
"vite": "npm:rolldown-vite@7.1.15",
"vite-bundle-analyzer": "~1.2.3"
}
}

View File

@@ -50,17 +50,17 @@
</metadata> </metadata>
<path <path
d="M 39.581382,41.421315 H 30.62689 v -1.21543 q 0,-2.033984 0.818554,-3.59668 0.818555,-1.5875 3.447852,-4.018359 l 1.5875,-1.438672 q 1.413867,-1.289844 2.058789,-2.43086 0.669727,-1.141015 0.669727,-2.282031 0,-1.736328 -1.190625,-2.703711 -1.190625,-0.992188 -3.323828,-0.992188 -2.00918,0 -4.340821,0.84336 -2.331641,0.818554 -4.861719,2.455664 v -7.788673 q 3.001367,-1.041796 5.481836,-1.53789 2.480469,-0.496094 4.787305,-0.496094 6.052344,0 9.227344,2.480469 3.175001,2.455664 3.175001,7.19336 0,2.430859 -0.967383,4.365625 -0.967383,1.909961 -3.299024,4.117578 l -1.5875,1.413868 q -1.686719,1.53789 -2.207617,2.480469 -0.520899,0.917773 -0.520899,2.033984 z m -8.954492,3.671094 h 8.954492 v 8.830469 H 30.62689 Z" d="M 39.581382,41.421315 H 30.62689 v -1.21543 q 0,-2.033984 0.818554,-3.59668 0.818555,-1.5875 3.447852,-4.018359 l 1.5875,-1.438672 q 1.413867,-1.289844 2.058789,-2.43086 0.669727,-1.141015 0.669727,-2.282031 0,-1.736328 -1.190625,-2.703711 -1.190625,-0.992188 -3.323828,-0.992188 -2.00918,0 -4.340821,0.84336 -2.331641,0.818554 -4.861719,2.455664 v -7.788673 q 3.001367,-1.041796 5.481836,-1.53789 2.480469,-0.496094 4.787305,-0.496094 6.052344,0 9.227344,2.480469 3.175001,2.455664 3.175001,7.19336 0,2.430859 -0.967383,4.365625 -0.967383,1.909961 -3.299024,4.117578 l -1.5875,1.413868 q -1.686719,1.53789 -2.207617,2.480469 -0.520899,0.917773 -0.520899,2.033984 z m -8.954492,3.671094 h 8.954492 v 8.830469 H 30.62689 Z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.80000305px;line-height:1;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';display:inline;fill:#db3434;fill-opacity:1;stroke-width:0.26458335" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.80000305px;line-height:1;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';display:inline;fill:#808080;fill-opacity:1;stroke-width:0.26458335"
id="path827" id="path827"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0" />
<circle <circle
style="fill:none;fill-opacity:1;stroke:#db3434;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path834" id="path834"
cx="35" cx="35"
cy="36.486031" cy="36.486031"
r="30" /> r="30" />
<rect <rect
style="opacity:1;fill:#db3434;fill-opacity:1;stroke:none;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect912" id="rect912"
width="18.846331" width="18.846331"
height="39.963303" height="39.963303"

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import "./nojs.ts";
import "./router.ts";
import "./toolkit.ts";
import "./listener.ts";

View File

@@ -0,0 +1,7 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import { listen } from "./toolkit.ts";
listen("click", ".close", function (this: HTMLElement) {
(this.parentNode as HTMLElement)?.classList.add("invisible");
});

View File

@@ -0,0 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import { ready } from "./toolkit.ts";
ready(() => {
document.documentElement.classList.remove("no-js");
document.documentElement.classList.add("js");
});

View File

@@ -0,0 +1,40 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import { Endpoints, endpoint, ready, settings } from "./toolkit.ts";
ready(
() => {
import("../main/keyboard.ts");
import("../main/search.ts");
if (settings.autocomplete) {
import("../main/autocomplete.ts");
}
},
{ on: [endpoint === Endpoints.index] }
);
ready(
() => {
import("../main/keyboard.ts");
import("../main/mapresult.ts");
import("../main/results.ts");
import("../main/search.ts");
if (settings.infinite_scroll) {
import("../main/infinite_scroll.ts");
}
if (settings.autocomplete) {
import("../main/autocomplete.ts");
}
},
{ on: [endpoint === Endpoints.results] }
);
ready(
() => {
import("../main/preferences.ts");
},
{ on: [endpoint === Endpoints.preferences] }
);

View File

@@ -0,0 +1,142 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import type { KeyBindingLayout } from "../main/keyboard.ts";
// synced with searx/webapp.py get_client_settings
type Settings = {
advanced_search?: boolean;
autocomplete?: string;
autocomplete_min?: number;
doi_resolver?: string;
favicon_resolver?: string;
hotkeys?: KeyBindingLayout;
infinite_scroll?: boolean;
method?: "GET" | "POST";
query_in_title?: boolean;
results_on_new_tab?: boolean;
safesearch?: 0 | 1 | 2;
search_on_category_select?: boolean;
theme?: string;
theme_static_path?: string;
translations?: Record<string, string>;
url_formatting?: "pretty" | "full" | "host";
};
type HTTPOptions = {
body?: BodyInit;
timeout?: number;
};
type ReadyOptions = {
// all values must be truthy for the callback to be executed
on?: (boolean | undefined)[];
};
type AssertElement = (element?: HTMLElement | null) => asserts element is HTMLElement;
export type EndpointsKeys = keyof typeof Endpoints;
export const Endpoints = {
index: "index",
results: "results",
preferences: "preferences",
unknown: "unknown"
} as const;
export const mutable = {
closeDetail: undefined as (() => void) | undefined,
scrollPageToSelected: undefined as (() => void) | undefined,
selectImage: undefined as ((resultElement: HTMLElement) => void) | undefined,
selectNext: undefined as ((openDetailView?: boolean) => void) | undefined,
selectPrevious: undefined as ((openDetailView?: boolean) => void) | undefined
};
const getEndpoint = (): EndpointsKeys => {
const metaEndpoint = document.querySelector('meta[name="endpoint"]')?.getAttribute("content");
if (metaEndpoint && metaEndpoint in Endpoints) {
return metaEndpoint as EndpointsKeys;
}
return Endpoints.unknown;
};
const getSettings = (): Settings => {
const settings = document.querySelector("script[client_settings]")?.getAttribute("client_settings");
if (!settings) return {};
try {
return JSON.parse(atob(settings));
} catch (error) {
console.error("Failed to load client_settings:", error);
return {};
}
};
export const assertElement: AssertElement = (element?: HTMLElement | null): asserts element is HTMLElement => {
if (!element) {
throw new Error("Bad assertion: DOM element not found");
}
};
export const http = async (method: string, url: string | URL, options?: HTTPOptions): Promise<Response> => {
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), options?.timeout ?? 30_000);
const res = await fetch(url, {
body: options?.body,
method: method,
signal: controller.signal
}).finally(() => clearTimeout(timeoutId));
if (!res.ok) {
throw new Error(res.statusText);
}
return res;
};
export const listen = <K extends keyof DocumentEventMap, E extends HTMLElement>(
type: string | K,
target: string | Document | E,
listener: (this: E, event: DocumentEventMap[K]) => void | Promise<void>,
options?: AddEventListenerOptions
): void => {
if (typeof target !== "string") {
target.addEventListener(type, listener as EventListener, options);
return;
}
document.addEventListener(
type,
(event: Event) => {
for (const node of event.composedPath()) {
if (node instanceof HTMLElement && node.matches(target)) {
try {
listener.call(node as E, event as DocumentEventMap[K]);
} catch (error) {
console.error(error);
}
break;
}
}
},
options
);
};
export const ready = (callback: () => void, options?: ReadyOptions): void => {
for (const condition of options?.on ?? []) {
if (!condition) {
return;
}
}
if (document.readyState !== "loading") {
callback();
} else {
listen("DOMContentLoaded", document, callback, { once: true });
}
};
export const endpoint: EndpointsKeys = getEndpoint();
export const settings: Settings = getSettings();

View File

@@ -0,0 +1,131 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import { assertElement, http, listen, settings } from "../core/toolkit.ts";
const fetchResults = async (qInput: HTMLInputElement, query: string): Promise<void> => {
try {
let res: Response;
if (settings.method === "GET") {
res = await http("GET", `./autocompleter?q=${query}`);
} else {
res = await http("POST", "./autocompleter", { body: new URLSearchParams({ q: query }) });
}
const results = await res.json();
const autocomplete = document.querySelector<HTMLElement>(".autocomplete");
assertElement(autocomplete);
const autocompleteList = document.querySelector<HTMLUListElement>(".autocomplete ul");
assertElement(autocompleteList);
autocomplete.classList.add("open");
autocompleteList.replaceChildren();
// show an error message that no result was found
if (results?.[1]?.length === 0) {
const noItemFoundMessage = Object.assign(document.createElement("li"), {
className: "no-item-found",
textContent: settings.translations?.no_item_found ?? "No results found"
});
autocompleteList.append(noItemFoundMessage);
return;
}
const fragment = new DocumentFragment();
for (const result of results[1]) {
const li = Object.assign(document.createElement("li"), { textContent: result });
listen("mousedown", li, () => {
qInput.value = result;
const form = document.querySelector<HTMLFormElement>("#search");
form?.submit();
autocomplete.classList.remove("open");
});
fragment.append(li);
}
autocompleteList.append(fragment);
} catch (error) {
console.error("Error fetching autocomplete results:", error);
}
};
const qInput = document.getElementById("q") as HTMLInputElement | null;
assertElement(qInput);
let timeoutId: number;
listen("input", qInput, () => {
clearTimeout(timeoutId);
const query = qInput.value;
const minLength = settings.autocomplete_min ?? 2;
if (query.length < minLength) return;
timeoutId = window.setTimeout(async () => {
if (query === qInput.value) {
await fetchResults(qInput, query);
}
}, 300);
});
const autocomplete: HTMLElement | null = document.querySelector<HTMLElement>(".autocomplete");
const autocompleteList: HTMLUListElement | null = document.querySelector<HTMLUListElement>(".autocomplete ul");
if (autocompleteList) {
listen("keyup", qInput, (event: KeyboardEvent) => {
const listItems = [...autocompleteList.children] as HTMLElement[];
const currentIndex = listItems.findIndex((item) => item.classList.contains("active"));
let newCurrentIndex = -1;
switch (event.key) {
case "ArrowUp": {
const currentItem = listItems[currentIndex];
if (currentItem && currentIndex >= 0) {
currentItem.classList.remove("active");
}
// we need to add listItems.length to the index calculation here because the JavaScript modulos
// operator doesn't work with negative numbers
newCurrentIndex = (currentIndex - 1 + listItems.length) % listItems.length;
break;
}
case "ArrowDown": {
const currentItem = listItems[currentIndex];
if (currentItem && currentIndex >= 0) {
currentItem.classList.remove("active");
}
newCurrentIndex = (currentIndex + 1) % listItems.length;
break;
}
case "Tab":
case "Enter":
if (autocomplete) {
autocomplete.classList.remove("open");
}
break;
default:
break;
}
if (newCurrentIndex !== -1) {
const selectedItem = listItems[newCurrentIndex];
if (selectedItem) {
selectedItem.classList.add("active");
if (!selectedItem.classList.contains("no-item-found")) {
const qInput = document.getElementById("q") as HTMLInputElement | null;
if (qInput) {
qInput.value = selectedItem.textContent ?? "";
}
}
}
}
});
}

View File

@@ -0,0 +1,100 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import { assertElement, http, settings } from "../core/toolkit.ts";
const newLoadSpinner = (): HTMLDivElement => {
return Object.assign(document.createElement("div"), {
className: "loader"
});
};
const loadNextPage = async (onlyImages: boolean, callback: () => void): Promise<void> => {
const searchForm = document.querySelector<HTMLFormElement>("#search");
assertElement(searchForm);
const form = document.querySelector<HTMLFormElement>("#pagination form.next_page");
assertElement(form);
const action = searchForm.getAttribute("action");
if (!action) {
throw new Error("Form action not defined");
}
const paginationElement = document.querySelector<HTMLElement>("#pagination");
assertElement(paginationElement);
paginationElement.replaceChildren(newLoadSpinner());
try {
const res = await http("POST", action, { body: new FormData(form) });
const nextPage = await res.text();
if (!nextPage) return;
const nextPageDoc = new DOMParser().parseFromString(nextPage, "text/html");
const articleList = nextPageDoc.querySelectorAll<HTMLElement>("#urls article");
const nextPaginationElement = nextPageDoc.querySelector<HTMLElement>("#pagination");
document.querySelector("#pagination")?.remove();
const urlsElement = document.querySelector<HTMLElement>("#urls");
if (!urlsElement) {
throw new Error("URLs element not found");
}
if (articleList.length > 0 && !onlyImages) {
// do not add <hr> element when there are only images
urlsElement.appendChild(document.createElement("hr"));
}
urlsElement.append(...Array.from(articleList));
if (nextPaginationElement) {
const results = document.querySelector<HTMLElement>("#results");
results?.appendChild(nextPaginationElement);
callback();
}
} catch (error) {
console.error("Error loading next page:", error);
const errorElement = Object.assign(document.createElement("div"), {
textContent: settings.translations?.error_loading_next_page ?? "Error loading next page",
className: "dialog-error"
});
errorElement.setAttribute("role", "alert");
document.querySelector("#pagination")?.replaceChildren(errorElement);
}
};
const resultsElement: HTMLElement | null = document.getElementById("results");
if (!resultsElement) {
throw new Error("Results element not found");
}
const onlyImages: boolean = resultsElement.classList.contains("only_template_images");
const observedSelector = "article.result:last-child";
const intersectionObserveOptions: IntersectionObserverInit = {
rootMargin: "320px"
};
const observer: IntersectionObserver = new IntersectionObserver((entries: IntersectionObserverEntry[]) => {
const [paginationEntry] = entries;
if (paginationEntry?.isIntersecting) {
observer.unobserve(paginationEntry.target);
loadNextPage(onlyImages, () => {
const nextObservedElement = document.querySelector<HTMLElement>(observedSelector);
if (nextObservedElement) {
observer.observe(nextObservedElement);
}
}).then(() => {
// wait until promise is resolved
});
}
}, intersectionObserveOptions);
const initialObservedElement: HTMLElement | null = document.querySelector<HTMLElement>(observedSelector);
if (initialObservedElement) {
observer.observe(initialObservedElement);
}

View File

@@ -0,0 +1,468 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import { assertElement, listen, mutable, settings } from "../core/toolkit.ts";
export type KeyBindingLayout = "default" | "vim";
type KeyBinding = {
key: string;
fun: (event: KeyboardEvent) => void;
des: string;
cat: string;
};
type HighlightResultElement = "down" | "up" | "visible" | "bottom" | "top";
/* common base for layouts */
const baseKeyBinding: Record<string, KeyBinding> = {
Escape: {
key: "ESC",
fun: (event: KeyboardEvent) => removeFocus(event),
des: "remove focus from the focused input",
cat: "Control"
},
c: {
key: "c",
fun: () => copyURLToClipboard(),
des: "copy url of the selected result to the clipboard",
cat: "Results"
},
h: {
key: "h",
fun: () => toggleHelp(keyBindings),
des: "toggle help window",
cat: "Other"
},
i: {
key: "i",
fun: () => searchInputFocus(),
des: "focus on the search input",
cat: "Control"
},
n: {
key: "n",
fun: () => GoToNextPage(),
des: "go to next page",
cat: "Results"
},
o: {
key: "o",
fun: () => openResult(false),
des: "open search result",
cat: "Results"
},
p: {
key: "p",
fun: () => GoToPreviousPage(),
des: "go to previous page",
cat: "Results"
},
r: {
key: "r",
fun: () => reloadPage(),
des: "reload page from the server",
cat: "Control"
},
t: {
key: "t",
fun: () => openResult(true),
des: "open the result in a new tab",
cat: "Results"
}
};
const keyBindingLayouts: Record<KeyBindingLayout, Record<string, KeyBinding>> = {
// SearXNG layout
default: {
ArrowLeft: {
key: "←",
fun: () => highlightResult("up")(),
des: "select previous search result",
cat: "Results"
},
ArrowRight: {
key: "→",
fun: () => highlightResult("down")(),
des: "select next search result",
cat: "Results"
},
...baseKeyBinding
},
// Vim-like keyboard layout
vim: {
b: {
key: "b",
fun: () => scrollPage(-window.innerHeight),
des: "scroll one page up",
cat: "Navigation"
},
d: {
key: "d",
fun: () => scrollPage(window.innerHeight / 2),
des: "scroll half a page down",
cat: "Navigation"
},
f: {
key: "f",
fun: () => scrollPage(window.innerHeight),
des: "scroll one page down",
cat: "Navigation"
},
g: {
key: "g",
fun: () => scrollPageTo(-document.body.scrollHeight, "top"),
des: "scroll to the top of the page",
cat: "Navigation"
},
j: {
key: "j",
fun: () => highlightResult("down")(),
des: "select next search result",
cat: "Results"
},
k: {
key: "k",
fun: () => highlightResult("up")(),
des: "select previous search result",
cat: "Results"
},
u: {
key: "u",
fun: () => scrollPage(-window.innerHeight / 2),
des: "scroll half a page up",
cat: "Navigation"
},
v: {
key: "v",
fun: () => scrollPageTo(document.body.scrollHeight, "bottom"),
des: "scroll to the bottom of the page",
cat: "Navigation"
},
y: {
key: "y",
fun: () => copyURLToClipboard(),
des: "copy url of the selected result to the clipboard",
cat: "Results"
},
...baseKeyBinding
}
};
const keyBindings: Record<string, KeyBinding> =
settings.hotkeys && settings.hotkeys in keyBindingLayouts
? keyBindingLayouts[settings.hotkeys]
: keyBindingLayouts.default;
const isElementInDetail = (element?: HTMLElement): boolean => {
const ancestor = element?.closest(".detail, .result");
return ancestor?.classList.contains("detail") ?? false;
};
const getResultElement = (element?: HTMLElement): HTMLElement | undefined => {
return element?.closest(".result") ?? undefined;
};
const isImageResult = (resultElement?: HTMLElement): boolean => {
return resultElement?.classList.contains("result-images") ?? false;
};
const highlightResult =
(which: HighlightResultElement | HTMLElement) =>
(noScroll?: boolean, keepFocus?: boolean): void => {
let effectiveWhich = which;
let current = document.querySelector<HTMLElement>(".result[data-vim-selected]");
if (!current) {
// no selection : choose the first one
current = document.querySelector<HTMLElement>(".result");
if (!current) {
// no first one : there are no results
return;
}
// replace up/down actions by selecting first one
if (which === "down" || which === "up") {
effectiveWhich = current;
}
}
const results = Array.from(document.querySelectorAll<HTMLElement>(".result"));
let next: HTMLElement | undefined;
if (typeof effectiveWhich !== "string") {
next = effectiveWhich;
} else {
switch (effectiveWhich) {
case "visible": {
const top = document.documentElement.scrollTop || document.body.scrollTop;
const bot = top + document.documentElement.clientHeight;
for (const element of results) {
const etop = element.offsetTop;
const ebot = etop + element.clientHeight;
if (ebot <= bot && etop > top) {
next = element;
break;
}
}
break;
}
case "down":
next = results[results.indexOf(current) + 1] || current;
break;
case "up":
next = results[results.indexOf(current) - 1] || current;
break;
case "bottom":
next = results.at(-1);
break;
// biome-ignore lint/complexity/noUselessSwitchCase: fallthrough is intended
case "top":
default:
next = results[0];
}
}
if (next) {
current.removeAttribute("data-vim-selected");
next.setAttribute("data-vim-selected", "true");
if (!keepFocus) {
const link = next.querySelector<HTMLAnchorElement>("h3 a") || next.querySelector<HTMLAnchorElement>("a");
link?.focus();
}
if (!noScroll) {
mutable.scrollPageToSelected?.();
}
}
};
const reloadPage = (): void => {
document.location.reload();
};
const removeFocus = (event: KeyboardEvent): void => {
const target = event.target as HTMLElement;
const tagName = target?.tagName?.toLowerCase();
if (document.activeElement && (tagName === "input" || tagName === "select" || tagName === "textarea")) {
(document.activeElement as HTMLElement).blur();
} else {
mutable.closeDetail?.();
}
};
const pageButtonClick = (css_selector: string): void => {
const button = document.querySelector<HTMLButtonElement>(css_selector);
if (button) {
button.click();
}
};
const GoToNextPage = (): void => {
pageButtonClick('nav#pagination .next_page button[type="submit"]');
};
const GoToPreviousPage = (): void => {
pageButtonClick('nav#pagination .previous_page button[type="submit"]');
};
mutable.scrollPageToSelected = (): void => {
const sel = document.querySelector<HTMLElement>(".result[data-vim-selected]");
if (!sel) return;
const wtop = document.documentElement.scrollTop || document.body.scrollTop;
const height = document.documentElement.clientHeight;
const etop = sel.offsetTop;
const ebot = etop + sel.clientHeight;
const offset = 120;
// first element ?
if (!sel.previousElementSibling && ebot < height) {
// set to the top of page if the first element
// is fully included in the viewport
window.scroll(window.scrollX, 0);
return;
}
if (wtop > etop - offset) {
window.scroll(window.scrollX, etop - offset);
} else {
const wbot = wtop + height;
if (wbot < ebot + offset) {
window.scroll(window.scrollX, ebot - height + offset);
}
}
};
const scrollPage = (amount: number): void => {
window.scrollBy(0, amount);
highlightResult("visible")();
};
const scrollPageTo = (position: number, nav: HighlightResultElement): void => {
window.scrollTo(0, position);
highlightResult(nav)();
};
const searchInputFocus = (): void => {
window.scrollTo(0, 0);
const q = document.querySelector<HTMLInputElement>("#q");
if (q) {
q.focus();
if (q.setSelectionRange) {
const len = q.value.length;
q.setSelectionRange(len, len);
}
}
};
const openResult = (newTab: boolean): void => {
let link = document.querySelector<HTMLAnchorElement>(".result[data-vim-selected] h3 a");
if (!link) {
link = document.querySelector<HTMLAnchorElement>(".result[data-vim-selected] > a");
}
if (!link) return;
const url = link.getAttribute("href");
if (url) {
if (newTab) {
window.open(url);
} else {
window.location.href = url;
}
}
};
const initHelpContent = (divElement: HTMLElement, keyBindings: typeof baseKeyBinding): void => {
const categories: Record<string, KeyBinding[]> = {};
for (const binding of Object.values(keyBindings)) {
const cat = binding.cat;
categories[cat] ??= [];
categories[cat].push(binding);
}
const sortedCategoryKeys = Object.keys(categories).sort(
(a, b) => (categories[b]?.length ?? 0) - (categories[a]?.length ?? 0)
);
let html = '<a href="#" class="close" aria-label="close" title="close">×</a>';
html += "<h3>How to navigate SearXNG with hotkeys</h3>";
html += "<table>";
for (const [i, categoryKey] of sortedCategoryKeys.entries()) {
const bindings = categories[categoryKey];
if (!bindings || bindings.length === 0) continue;
const isFirst = i % 2 === 0;
const isLast = i === sortedCategoryKeys.length - 1;
if (isFirst) {
html += "<tr>";
}
html += "<td>";
html += `<h4>${categoryKey}</h4>`;
html += '<ul class="list-unstyled">';
for (const binding of bindings) {
html += `<li><kbd>${binding.key}</kbd> ${binding.des}</li>`;
}
html += "</ul>";
html += "</td>";
if (!isFirst || isLast) {
html += "</tr>";
}
}
html += "</table>";
divElement.innerHTML = html;
};
const toggleHelp = (keyBindings: typeof baseKeyBinding): void => {
let helpPanel = document.querySelector<HTMLElement>("#vim-hotkeys-help");
if (helpPanel) {
// toggle hidden
helpPanel.classList.toggle("invisible");
} else {
// first call
helpPanel = Object.assign(document.createElement("div"), {
id: "vim-hotkeys-help",
className: "dialog-modal"
});
initHelpContent(helpPanel, keyBindings);
const body = document.getElementsByTagName("body")[0];
if (body) {
body.appendChild(helpPanel);
}
}
};
const copyURLToClipboard = async (): Promise<void> => {
const currentUrlElement = document.querySelector<HTMLAnchorElement>(".result[data-vim-selected] h3 a");
assertElement(currentUrlElement);
const url = currentUrlElement.getAttribute("href");
if (url) {
await navigator.clipboard.writeText(url);
}
};
listen("click", ".result", function (this: HTMLElement, event: PointerEvent) {
if (!isElementInDetail(event.target as HTMLElement)) {
highlightResult(this)(true, true);
const resultElement = getResultElement(event.target as HTMLElement);
if (resultElement && isImageResult(resultElement)) {
event.preventDefault();
mutable.selectImage?.(resultElement);
}
}
});
// FIXME: Focus might also trigger Pointer event ^^^
listen(
"focus",
".result a",
(event: FocusEvent) => {
if (!isElementInDetail(event.target as HTMLElement)) {
const resultElement = getResultElement(event.target as HTMLElement);
if (resultElement && !resultElement.hasAttribute("data-vim-selected")) {
highlightResult(resultElement)(true);
}
if (resultElement && isImageResult(resultElement)) {
event.preventDefault();
mutable.selectImage?.(resultElement);
}
}
},
{ capture: true }
);
listen("keydown", document, (event: KeyboardEvent) => {
// check for modifiers so we don't break browser's hotkeys
if (Object.hasOwn(keyBindings, event.key) && !event.ctrlKey && !event.altKey && !event.shiftKey && !event.metaKey) {
const tagName = (event.target as HTMLElement)?.tagName?.toLowerCase();
if (event.key === "Escape") {
keyBindings[event.key]?.fun(event);
} else if (event.target === document.body || tagName === "a" || tagName === "button") {
event.preventDefault();
keyBindings[event.key]?.fun(event);
}
}
});
mutable.selectNext = highlightResult("down");
mutable.selectPrevious = highlightResult("up");

View File

@@ -0,0 +1,86 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import { listen } from "../core/toolkit.ts";
listen("click", ".searxng_init_map", async function (this: HTMLElement, event: Event) {
event.preventDefault();
this.classList.remove("searxng_init_map");
const {
View,
OlMap,
TileLayer,
VectorLayer,
OSM,
VectorSource,
Style,
Stroke,
Fill,
Circle,
fromLonLat,
GeoJSON,
Feature,
Point
} = await import("../pkg/ol.ts");
import("ol/ol.css");
const { leafletTarget: target, mapLon, mapLat, mapGeojson } = this.dataset;
const lon = Number.parseFloat(mapLon || "0");
const lat = Number.parseFloat(mapLat || "0");
const view = new View({ maxZoom: 16, enableRotation: false });
const map = new OlMap({
target: target,
layers: [new TileLayer({ source: new OSM({ maxZoom: 16 }) })],
view: view
});
try {
const markerSource = new VectorSource({
features: [
new Feature({
geometry: new Point(fromLonLat([lon, lat]))
})
]
});
const markerLayer = new VectorLayer({
source: markerSource,
style: new Style({
image: new Circle({
radius: 6,
fill: new Fill({ color: "#3050ff" })
})
})
});
map.addLayer(markerLayer);
} catch (error) {
console.error("Failed to create marker layer:", error);
}
if (mapGeojson) {
try {
const geoSource = new VectorSource({
features: new GeoJSON().readFeatures(JSON.parse(mapGeojson), {
dataProjection: "EPSG:4326",
featureProjection: "EPSG:3857"
})
});
const geoLayer = new VectorLayer({
source: geoSource,
style: new Style({
stroke: new Stroke({ color: "#3050ff", width: 2 }),
fill: new Fill({ color: "#3050ff33" })
})
});
map.addLayer(geoLayer);
view.fit(geoSource.getExtent(), { padding: [20, 20, 20, 20] });
} catch (error) {
console.error("Failed to create GeoJSON layer:", error);
}
}
});

View File

@@ -0,0 +1,70 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import { http, listen, settings } from "../core/toolkit.ts";
let engineDescriptions: Record<string, [string, string]> | undefined;
const loadEngineDescriptions = async (): Promise<void> => {
if (engineDescriptions) return;
try {
const res = await http("GET", "engine_descriptions.json");
engineDescriptions = await res.json();
} catch (error) {
console.error("Error fetching engineDescriptions:", error);
}
if (!engineDescriptions) return;
for (const [engine_name, [description, source]] of Object.entries(engineDescriptions)) {
const elements = document.querySelectorAll<HTMLElement>(`[data-engine-name="${engine_name}"] .engine-description`);
const sourceText = ` (<i>${settings.translations?.Source}:&nbsp;${source}</i>)`;
for (const element of elements) {
element.innerHTML = description + sourceText;
}
}
};
const toggleEngines = (enable: boolean, engineToggles: NodeListOf<HTMLInputElement>): void => {
for (const engineToggle of engineToggles) {
// check if element visible, so that only engines of the current category are modified
if (engineToggle.offsetParent) {
engineToggle.checked = !enable;
}
}
};
const engineElements: NodeListOf<HTMLElement> = document.querySelectorAll<HTMLElement>("[data-engine-name]");
for (const engineElement of engineElements) {
listen("mouseenter", engineElement, loadEngineDescriptions);
}
const engineToggles: NodeListOf<HTMLInputElement> = document.querySelectorAll<HTMLInputElement>(
"tbody input[type=checkbox][class~=checkbox-onoff]"
);
const enableAllEngines: NodeListOf<HTMLElement> = document.querySelectorAll<HTMLElement>(".enable-all-engines");
for (const engine of enableAllEngines) {
listen("click", engine, () => toggleEngines(true, engineToggles));
}
const disableAllEngines: NodeListOf<HTMLElement> = document.querySelectorAll<HTMLElement>(".disable-all-engines");
for (const engine of disableAllEngines) {
listen("click", engine, () => toggleEngines(false, engineToggles));
}
const copyHashButton: HTMLElement | null = document.querySelector<HTMLElement>("#copy-hash");
if (copyHashButton) {
listen("click", copyHashButton, async (event: Event) => {
event.preventDefault();
const { copiedText, hash } = copyHashButton.dataset;
if (!(copiedText && hash)) return;
try {
await navigator.clipboard.writeText(hash);
copyHashButton.innerText = copiedText;
} catch (error) {
console.error("Failed to copy hash:", error);
}
});
}

View File

@@ -0,0 +1,177 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import "../../../node_modules/swiped-events/src/swiped-events.js";
import { assertElement, listen, mutable, settings } from "../core/toolkit.ts";
let imgTimeoutID: number;
const imageLoader = (resultElement: HTMLElement): void => {
if (imgTimeoutID) clearTimeout(imgTimeoutID);
const imgElement = resultElement.querySelector<HTMLImageElement>(".result-images-source img");
if (!imgElement) return;
// use thumbnail until full image loads
const thumbnail = resultElement.querySelector<HTMLImageElement>(".image_thumbnail");
if (thumbnail) {
if (thumbnail.src === `${settings.theme_static_path}/img/img_load_error.svg`) return;
imgElement.onerror = (): void => {
imgElement.src = thumbnail.src;
};
imgElement.src = thumbnail.src;
}
const imgSource = imgElement.getAttribute("data-src");
if (!imgSource) return;
// unsafe nodejs specific, cast to https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout#return_value
// https://github.com/searxng/searxng/pull/5073#discussion_r2265767231
imgTimeoutID = setTimeout(() => {
imgElement.src = imgSource;
imgElement.removeAttribute("data-src");
}, 1000) as unknown as number;
};
const imageThumbnails: NodeListOf<HTMLImageElement> =
document.querySelectorAll<HTMLImageElement>("#urls img.image_thumbnail");
for (const thumbnail of imageThumbnails) {
if (thumbnail.complete && thumbnail.naturalWidth === 0) {
thumbnail.src = `${settings.theme_static_path}/img/img_load_error.svg`;
}
thumbnail.onerror = (): void => {
thumbnail.src = `${settings.theme_static_path}/img/img_load_error.svg`;
};
}
const copyUrlButton: HTMLButtonElement | null =
document.querySelector<HTMLButtonElement>("#search_url button#copy_url");
copyUrlButton?.style.setProperty("display", "block");
mutable.selectImage = (resultElement: HTMLElement): void => {
// add a class that can be evaluated in the CSS and indicates that the
// detail view is open
const resultsElement = document.getElementById("results");
resultsElement?.classList.add("image-detail-open");
// add a hash to the browser history so that pressing back doesn't return
// to the previous page this allows us to dismiss the image details on
// pressing the back button on mobile devices
window.location.hash = "#image-viewer";
mutable.scrollPageToSelected?.();
// if there is no element given by the caller, stop here
if (!resultElement) return;
imageLoader(resultElement);
};
mutable.closeDetail = (): void => {
const resultsElement = document.getElementById("results");
resultsElement?.classList.remove("image-detail-open");
// remove #image-viewer hash from url by navigating back
if (window.location.hash === "#image-viewer") {
window.history.back();
}
mutable.scrollPageToSelected?.();
};
listen("click", ".btn-collapse", function (this: HTMLElement) {
const btnLabelCollapsed = this.getAttribute("data-btn-text-collapsed");
const btnLabelNotCollapsed = this.getAttribute("data-btn-text-not-collapsed");
const target = this.getAttribute("data-target");
if (!(target && btnLabelCollapsed && btnLabelNotCollapsed)) return;
const targetElement = document.querySelector<HTMLElement>(target);
assertElement(targetElement);
const isCollapsed = this.classList.contains("collapsed");
const newLabel = isCollapsed ? btnLabelNotCollapsed : btnLabelCollapsed;
const oldLabel = isCollapsed ? btnLabelCollapsed : btnLabelNotCollapsed;
this.innerHTML = this.innerHTML.replace(oldLabel, newLabel);
this.classList.toggle("collapsed");
targetElement.classList.toggle("invisible");
});
listen("click", ".media-loader", function (this: HTMLElement) {
const target = this.getAttribute("data-target");
if (!target) return;
const iframeLoad = document.querySelector<HTMLIFrameElement>(`${target} > iframe`);
assertElement(iframeLoad);
const srctest = iframeLoad.getAttribute("src");
if (!srctest) {
const dataSrc = iframeLoad.getAttribute("data-src");
if (dataSrc) {
iframeLoad.setAttribute("src", dataSrc);
}
}
});
listen("click", "#copy_url", async function (this: HTMLElement) {
const target = this.parentElement?.querySelector<HTMLPreElement>("pre");
assertElement(target);
await navigator.clipboard.writeText(target.innerText);
const copiedText = this.dataset.copiedText;
if (copiedText) {
this.innerText = copiedText;
}
});
listen("click", ".result-detail-close", (event: Event) => {
event.preventDefault();
mutable.closeDetail?.();
});
listen("click", ".result-detail-previous", (event: Event) => {
event.preventDefault();
mutable.selectPrevious?.(false);
});
listen("click", ".result-detail-next", (event: Event) => {
event.preventDefault();
mutable.selectNext?.(false);
});
// listen for the back button to be pressed and dismiss the image details when called
window.addEventListener("hashchange", () => {
if (window.location.hash !== "#image-viewer") {
mutable.closeDetail?.();
}
});
const swipeHorizontal: NodeListOf<HTMLElement> = document.querySelectorAll<HTMLElement>(".swipe-horizontal");
for (const element of swipeHorizontal) {
listen("swiped-left", element, () => {
mutable.selectNext?.(false);
});
listen("swiped-right", element, () => {
mutable.selectPrevious?.(false);
});
}
window.addEventListener(
"scroll",
() => {
const backToTopElement = document.getElementById("backToTop");
const resultsElement = document.getElementById("results");
if (backToTopElement && resultsElement) {
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
const isScrolling = scrollTop >= 100;
resultsElement.classList.toggle("scrolling", isScrolling);
}
},
true
);

View File

@@ -0,0 +1,118 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import { assertElement, listen, settings } from "../core/toolkit.ts";
const submitIfQuery = (qInput: HTMLInputElement): void => {
if (qInput.value.length > 0) {
const search = document.getElementById("search") as HTMLFormElement | null;
search?.submit();
}
};
const updateClearButton = (qInput: HTMLInputElement, cs: HTMLElement): void => {
cs.classList.toggle("empty", qInput.value.length === 0);
};
const createClearButton = (qInput: HTMLInputElement): void => {
const cs = document.getElementById("clear_search");
assertElement(cs);
updateClearButton(qInput, cs);
listen("click", cs, (event: MouseEvent) => {
event.preventDefault();
qInput.value = "";
qInput.focus();
updateClearButton(qInput, cs);
});
listen("input", qInput, () => updateClearButton(qInput, cs), { passive: true });
};
const qInput = document.getElementById("q") as HTMLInputElement | null;
assertElement(qInput);
const isMobile: boolean = window.matchMedia("(max-width: 50em)").matches;
const isResultsPage: boolean = document.querySelector("main")?.id === "main_results";
// focus search input on large screens
if (!(isMobile || isResultsPage)) {
qInput.focus();
}
// On mobile, move cursor to the end of the input on focus
if (isMobile) {
listen("focus", qInput, () => {
// Defer cursor move until the next frame to prevent a visual jump
requestAnimationFrame(() => {
const end = qInput.value.length;
qInput.setSelectionRange(end, end);
qInput.scrollLeft = qInput.scrollWidth;
});
});
}
createClearButton(qInput);
// Additionally to searching when selecting a new category, we also
// automatically start a new search request when the user changes a search
// filter (safesearch, time range or language) (this requires JavaScript
// though)
if (
settings.search_on_category_select &&
// If .search_filters is undefined (invisible) we are on the homepage and
// hence don't have to set any listeners
document.querySelector(".search_filters")
) {
const safesearchElement = document.getElementById("safesearch");
if (safesearchElement) {
listen("change", safesearchElement, () => submitIfQuery(qInput));
}
const timeRangeElement = document.getElementById("time_range");
if (timeRangeElement) {
listen("change", timeRangeElement, () => submitIfQuery(qInput));
}
const languageElement = document.getElementById("language");
if (languageElement) {
listen("change", languageElement, () => submitIfQuery(qInput));
}
}
const categoryButtons: HTMLButtonElement[] = [
...document.querySelectorAll<HTMLButtonElement>("button.category_button")
];
for (const button of categoryButtons) {
listen("click", button, (event: MouseEvent) => {
if (event.shiftKey) {
event.preventDefault();
button.classList.toggle("selected");
return;
}
// deselect all other categories
for (const categoryButton of categoryButtons) {
categoryButton.classList.toggle("selected", categoryButton === button);
}
});
}
const form: HTMLFormElement | null = document.querySelector<HTMLFormElement>("#search");
assertElement(form);
// override form submit action to update the actually selected categories
listen("submit", form, (event: Event) => {
event.preventDefault();
const categoryValuesInput = document.querySelector<HTMLInputElement>("#selected-categories");
if (categoryValuesInput) {
const categoryValues = categoryButtons
.filter((button) => button.classList.contains("selected"))
.map((button) => button.name.replace("category_", ""));
categoryValuesInput.value = categoryValues.join(",");
}
form.submit();
});

View File

@@ -0,0 +1,28 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import { Feature, Map as OlMap, View } from "ol";
import { createEmpty } from "ol/extent";
import { GeoJSON } from "ol/format";
import { Point } from "ol/geom";
import { Tile as TileLayer, Vector as VectorLayer } from "ol/layer";
import { fromLonLat } from "ol/proj";
import { OSM, Vector as VectorSource } from "ol/source";
import { Circle, Fill, Stroke, Style } from "ol/style";
export {
View,
OlMap,
TileLayer,
VectorLayer,
OSM,
createEmpty,
VectorSource,
Style,
Stroke,
Fill,
Circle,
fromLonLat,
GeoJSON,
Feature,
Point
};

View File

@@ -1,3 +1,5 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
.dialog-modal { .dialog-modal {
animation-name: dialogmodal; animation-name: dialogmodal;
animation-duration: 0.13s; animation-duration: 0.13s;

View File

@@ -1,8 +1,9 @@
/*! Autocomplete.js v2.6.3 | license MIT | (c) 2017, Baptiste Donaux | http://autocomplete-js.com */ // SPDX-License-Identifier: AGPL-3.0-or-later
.autocomplete { .autocomplete {
position: absolute; position: absolute;
width: @search-width; width: @search-width;
max-width: calc(100% - 2 * @search-padding-horizontal);
max-height: 0; max-height: 0;
overflow-y: hidden; overflow-y: hidden;
.ltr-text-align-left(); .ltr-text-align-left();
@@ -53,10 +54,9 @@
color: var(--color-autocomplete-font); color: var(--color-autocomplete-font);
max-height: 32rem; max-height: 32rem;
overflow-y: auto; overflow-y: auto;
z-index: 100; z-index: 5000;
margin-top: 3.5rem; margin-top: 3.5rem;
border-radius: 0.8rem; border-radius: 0.8rem;
box-shadow: 0 2px 8px rgb(34 38 46 / 25%);
&:empty { &:empty {
display: none; display: none;
@@ -66,8 +66,6 @@
@media screen and (max-width: @phone) { @media screen and (max-width: @phone) {
.autocomplete { .autocomplete {
width: 100%;
> ul > li { > ul > li {
padding: 1rem; padding: 1rem;
} }

View File

@@ -1,3 +1,5 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
/* /*
* SearXNG, A privacy-respecting, hackable metasearch engine * SearXNG, A privacy-respecting, hackable metasearch engine
* *
@@ -55,8 +57,12 @@
--color-autocomplete-background: #fff; --color-autocomplete-background: #fff;
--color-autocomplete-background-hover: #e3e3e3; --color-autocomplete-background-hover: #e3e3e3;
/// Answer Colors /// Answer Colors
--color-answer-font: #444; // same as --color-base-font --color-answer-font: #444; // same as --color-base-font
--color-answer-background: #fff; --color-answer-background: #fff;
// colors of the KeyValue result class
--color-result-keyvalue-col-table: #fdfbff;
--color-result-keyvalue-odd: #fdfbff;
--color-result-keyvalue-even: #fff;
/// Results Colors /// Results Colors
--color-result-background: #fff; --color-result-background: #fff;
--color-result-border: #ddd; --color-result-border: #ddd;
@@ -78,15 +84,15 @@
/// Settings Colors /// Settings Colors
--color-settings-tr-hover: #ebebeb; --color-settings-tr-hover: #ebebeb;
--color-settings-engine-description-font: #545454; --color-settings-engine-description-font: #545454;
--color-settings-engine-group-background: #0001; --color-settings-table-group-background: #0001;
/// Detail modal /// Detail modal
--color-result-detail-font: #fff; --color-result-detail-font: #fff;
--color-result-detail-label-font: lightgray; --color-result-detail-label-font: lightgray;
--color-result-detail-background: #242424; --color-result-detail-background: #242424;
--color-result-detail-hr: #555; --color-result-detail-hr: #555;
--color-result-detail-link: #8af; --color-result-detail-link: #8af;
--color-result-detail-loader-border: rgba(255, 255, 255, 0.2); --color-result-detail-loader-border: rgb(255 255 255 / 20%);
--color-result-detail-loader-borderleft: rgba(0, 0, 0, 0); --color-result-detail-loader-borderleft: rgb(0 0 0 / 0%);
/// Toolkit Colors /// Toolkit Colors
--color-toolkit-badge-font: #fff; --color-toolkit-badge-font: #fff;
--color-toolkit-badge-background: #545454; --color-toolkit-badge-background: #545454;
@@ -111,10 +117,21 @@
--color-toolkit-checkbox-input-border: #3050ff; --color-toolkit-checkbox-input-border: #3050ff;
--color-toolkit-engine-tooltip-border: #ddd; --color-toolkit-engine-tooltip-border: #ddd;
--color-toolkit-engine-tooltip-background: #fff; --color-toolkit-engine-tooltip-background: #fff;
--color-toolkit-loader-border: rgba(0, 0, 0, 0.2); --color-toolkit-loader-border: rgb(0 0 0 / 20%);
--color-toolkit-loader-borderleft: rgba(255, 255, 255, 0); --color-toolkit-loader-borderleft: rgb(255 255 255 / 0%);
--color-doc-code: #300; --color-doc-code: #003;
--color-doc-code-background: #fdd; --color-doc-code-background: #ddeaff;
/// Other misc colors
--color-bar-chart-primary: #5bc0de;
--color-bar-chart-secondary: #deb15b;
--color-image-resolution-background: rgb(0 0 0 / 50%);
--color-image-resolution-font: #fff;
--color-loading-indicator: rgb(255 255 255 / 20%);
--color-loading-indicator-gap: #fff;
--color-line-number: #64708d;
// Favicons Colors
--color-favicon-background-color: #ddd;
--color-favicon-border-color: #ccc;
} }
.dark-themes() { .dark-themes() {
@@ -169,6 +186,10 @@
/// Answer Colors /// Answer Colors
--color-answer-font: #bbb; // same as --color-base-font --color-answer-font: #bbb; // same as --color-base-font
--color-answer-background: #26292f; --color-answer-background: #26292f;
// colors of the KeyValue result class
--color-result-keyvalue-col-table: #1e1e22;
--color-result-keyvalue-odd: #1e1e22;
--color-result-keyvalue-even: #26292f;
/// Results Colors /// Results Colors
--color-result-background: #26292f; --color-result-background: #26292f;
--color-result-border: #333; --color-result-border: #333;
@@ -189,8 +210,8 @@
--color-result-detail-background: #1a1a1c; --color-result-detail-background: #1a1a1c;
--color-result-detail-hr: #555; --color-result-detail-hr: #555;
--color-result-detail-link: #8af; --color-result-detail-link: #8af;
--color-result-detail-loader-border: rgba(255, 255, 255, 0.2); --color-result-detail-loader-border: rgb(255 255 255 / 20%);
--color-result-detail-loader-borderleft: rgba(0, 0, 0, 0); --color-result-detail-loader-borderleft: rgb(0 0 0 / 0%);
// Images Colors // Images Colors
--color-result-image-span-font: #bbb; --color-result-image-span-font: #bbb;
--color-result-image-span-font-selected: #222; --color-result-image-span-font-selected: #222;
@@ -198,7 +219,7 @@
/// Settings Colors /// Settings Colors
--color-settings-tr-hover: #2c2c32; --color-settings-tr-hover: #2c2c32;
--color-settings-engine-description-font: darken(#dcdcdc, 30%); --color-settings-engine-description-font: darken(#dcdcdc, 30%);
--color-settings-engine-group-background: #1b1b21; --color-settings-table-group-background: #1b1b21;
/// Toolkit Colors /// Toolkit Colors
--color-toolkit-badge-font: #fff; --color-toolkit-badge-font: #fff;
--color-toolkit-badge-background: #555; --color-toolkit-badge-background: #555;
@@ -223,10 +244,21 @@
--color-toolkit-checkbox-input-border: #58f; --color-toolkit-checkbox-input-border: #58f;
--color-toolkit-engine-tooltip-border: #333; --color-toolkit-engine-tooltip-border: #333;
--color-toolkit-engine-tooltip-background: #222; --color-toolkit-engine-tooltip-background: #222;
--color-toolkit-loader-border: rgba(255, 255, 255, 0.2); --color-toolkit-loader-border: rgb(255 255 255 / 20%);
--color-toolkit-loader-borderleft: rgba(0, 0, 0, 0); --color-toolkit-loader-borderleft: rgb(0 0 0 / 0%);
--color-doc-code: #fdd; --color-doc-code: #ddd;
--color-doc-code-background: #300; --color-doc-code-background: #4d5a6f;
// Favicons Colors
--color-favicon-background-color: #ddd;
--color-favicon-border-color: #ccc;
}
.black-themes() {
--color-base-background: #000;
--color-base-background-mobile: #000;
--color-header-background: #000;
--color-footer-background: #000;
--color-sidebar-background: #000;
} }
/// Dark Theme (autoswitch based on device pref) /// Dark Theme (autoswitch based on device pref)
@@ -241,6 +273,11 @@
.dark-themes(); .dark-themes();
} }
:root.theme-black {
.dark-themes();
.black-themes();
}
/// General Size /// General Size
@results-width: 45rem; @results-width: 45rem;
@results-sidebar-width: 25rem; @results-sidebar-width: 25rem;
@@ -250,14 +287,15 @@
@results-margin: 0.125rem; @results-margin: 0.125rem;
@result-padding: 1rem; @result-padding: 1rem;
@results-image-row-height: 12rem; @results-image-row-height: 12rem;
@results-image-row-height-phone: 6rem; @results-image-row-height-phone: 10rem;
@search-width: 44rem; @search-width: 44rem;
// heigh of #search, see detail.less // height of #search, see detail.less
@search-height: 7.6rem; @search-height: 13rem;
@search-padding-horizontal: 0.5rem;
/// Device Size /// Device Size
/// @desktop > @tablet /// @desktop > @tablet
@tablet: 79.75em; // see https://github.com/searxng/searxng/issues/874 @tablet: 79.75em; // see https://github.com/searxng/searxng/issues/874
@phone: 50em; @phone: 50em;
@small-phone: 35em; @small-phone: 35em;
@ultra-small-phone: 20rem; @ultra-small-phone: 20rem;
@@ -266,12 +304,12 @@
@stacked-bar-chart: rgb(0, 0, 0); @stacked-bar-chart: rgb(0, 0, 0);
/// Load fonts from this directory. /// Load fonts from this directory.
@icon-font-path: "../../../fonts/"; @icon-font-path: "../../../fonts/";
//** File name for all font files. //** File name for all font files.
@icon-font-name: "glyphicons-halflings-regular"; @icon-font-name: "glyphicons-halflings-regular";
//** Element ID within SVG icon file. //** Element ID within SVG icon file.
@icon-font-svg-id: "glyphicons_halflingsregular"; @icon-font-svg-id: "glyphicons_halflingsregular";
// decoration of the select HTML elements // decoration of the select HTML elements
@select-light-svg-path: "../svg/select-light.svg"; @select-light-svg-path: "../svg/select-light.svg";
@select-dark-svg-path: "../svg/select-dark.svg"; @select-dark-svg-path: "../svg/select-dark.svg";

View File

@@ -1,3 +1,5 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
#main_results #results.image-detail-open.only_template_images { #main_results #results.image-detail-open.only_template_images {
width: min(98%, 59.25rem) !important; width: min(98%, 59.25rem) !important;
} }
@@ -22,8 +24,9 @@ article.result-images .detail {
bottom: 0; bottom: 0;
background: var(--color-result-detail-background); background: var(--color-result-detail-background);
border: 1px solid var(--color-result-detail-background); border: 1px solid var(--color-result-detail-background);
z-index: 10000; z-index: 1000;
padding: 4rem 3rem 3rem 3rem; padding: 4rem 3rem 3rem 3rem;
overflow-y: scroll;
a.result-images-source { a.result-images-source {
display: block; display: block;
@@ -42,15 +45,14 @@ article.result-images .detail {
height: inherit; height: inherit;
max-width: 100%; max-width: 100%;
min-height: inherit; min-height: inherit;
max-height: calc(100vh - 25rem - 7rem); max-height: calc(100vh - 25rem - 17rem);
background: inherit; background: inherit;
} }
} }
.result-images-labels { .result-images-labels {
color: var(--color-result-detail-font); color: var(--color-result-detail-font);
max-height: 16rem; height: 19rem;
min-height: 16rem;
hr { hr {
border-top: 1px solid var(--color-result-detail-hr); border-top: 1px solid var(--color-result-detail-hr);
@@ -62,11 +64,16 @@ article.result-images .detail {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
font-size: 0.9rem; font-size: 0.9rem;
margin-bottom: 0;
} }
p { p {
color: var(--color-result-detail-label-font); color: var(--color-result-detail-label-font);
font-size: 0.9rem; font-size: 0.9rem;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
margin: 0.8rem 0;
span { span {
display: inline-block; display: inline-block;
@@ -82,13 +89,14 @@ article.result-images .detail {
p.result-content { p.result-content {
height: 2rem; height: 2rem;
line-height: unset;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
p.result-url { p.result-url {
white-space: nowrap; white-space: nowrap;
overflow-x: hidden; overflow: hidden hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
@@ -143,7 +151,7 @@ article.result-images .detail {
height: 1.5rem; height: 1.5rem;
position: absolute; position: absolute;
filter: opacity(40%); filter: opacity(40%);
z-index: 2000002; z-index: 1200;
span { span {
display: block; display: block;
@@ -198,7 +206,9 @@ article.result-images .detail {
} }
} }
#results.image-detail-open.scrolling article.result-images[data-vim-selected] .detail { #results.image-detail-open.scrolling
article.result-images[data-vim-selected]
.detail {
top: 0; top: 0;
a.result-images-source img { a.result-images-source img {
@@ -236,7 +246,7 @@ article.result-images .detail {
a.result-images-source img { a.result-images-source img {
width: 100%; width: 100%;
max-height: calc(100vh - 20rem); max-height: calc(100vh - 2rem);
margin: 0; margin: 0;
} }

View File

@@ -1,33 +1,41 @@
iframe[src^="https://w.soundcloud.com"] { // SPDX-License-Identifier: AGPL-3.0-or-later
iframe[src^="https://w.soundcloud.com"]
{
height: 120px; height: 120px;
} }
iframe[src^="https://www.deezer.com"] { iframe[src^="https://www.deezer.com"]
{
// The real size is 92px, but 94px are needed to avoid an inner scrollbar of // The real size is 92px, but 94px are needed to avoid an inner scrollbar of
// the embedded HTML. // the embedded HTML.
height: 94px; height: 94px;
} }
iframe[src^="https://www.mixcloud.com"] { iframe[src^="https://www.mixcloud.com"]
{
// the embedded player from mixcloud has some quirks: initial there is an // the embedded player from mixcloud has some quirks: initial there is an
// issue with an image URL that is blocked since it is an a Cross-Origin // issue with an image URL that is blocked since it is an a Cross-Origin
// request. The alternative text (<img alt='Mixcloud Logo'> then cause an // request. The alternative text (<img alt='Mixcloud Logo'> then cause an
// scrollbar in the inner of the iframe we can't avoid. Another quirk comes // scrollbar in the inner of the iframe we can't avoid. Another quirk comes
// when pressing the play button, somtimes the shown player has an height of // when pressing the play button, sometimes the shown player has an height of
// 200px, somtimes 250px. // 200px, sometimes 250px.
height: 250px; height: 250px;
} }
iframe[src^="https://bandcamp.com/EmbeddedPlayer"] { iframe[src^="https://bandcamp.com/EmbeddedPlayer"]
{
// show playlist // show playlist
height: 350px; height: 350px;
} }
iframe[src^="https://bandcamp.com/EmbeddedPlayer/track"] { iframe[src^="https://bandcamp.com/EmbeddedPlayer/track"]
{
// hide playlist // hide playlist
height: 120px; height: 120px;
} }
iframe[src^="https://genius.com/songs"] { iframe[src^="https://genius.com/songs"]
{
height: 65px; height: 65px;
} }

View File

@@ -1,3 +1,5 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
#main_index { #main_index {
margin-top: 26vh; margin-top: 26vh;
} }
@@ -6,7 +8,7 @@
text-align: center; text-align: center;
.title { .title {
background: url('../img/searxng.png') no-repeat; background: url("../img/searxng.png") no-repeat;
min-height: 4rem; min-height: 4rem;
margin: 4rem auto; margin: 4rem auto;
background-position: center; background-position: center;

View File

@@ -1,9 +1,12 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
.info-page { .info-page {
code { code {
font-family: monospace; font-family: monospace;
color: var(--color-doc-code); .rounded-corners-tiny;
background-color: var(--color-doc-code-background); background-color: var(--color-doc-code-background);
padding: 2px 5px; color: var(--color-doc-code);
.rounded-corners(5px); padding: 0.2rem;
border: 0 none;
} }
} }

View File

@@ -2,9 +2,6 @@
// Mixins // Mixins
.text-size-adjust (@property: 100%) { .text-size-adjust (@property: 100%) {
-webkit-text-size-adjust: @property;
-ms-text-size-adjust: @property;
-moz-text-size-adjust: @property;
text-size-adjust: @property; text-size-adjust: @property;
} }
@@ -22,7 +19,6 @@
// disable user selection // disable user selection
.disable-user-select () { .disable-user-select () {
-webkit-touch-callout: none;
user-select: none; user-select: none;
} }

View File

@@ -1,26 +1,16 @@
// SPDX-License-Identifier: AGPL-3.0-or-later // SPDX-License-Identifier: AGPL-3.0-or-later
.stats_endpoint { .stats_endpoint {
.github-issue-button { .github-issue-button {
display: block; display: block;
padding: 8px 16px;
font-family: sans-serif;
font-size: 16px; font-size: 16px;
color: white;
background-color: #238636;
border: #2ea043;
border-radius: 10px !important;
box-shadow: rgba(0, 0, 0, 0) 0 0 0 0;
}
.github-issue-button:hover {
background-color: #2ea043;
} }
.issue-hide { .issue-hide {
display: none; display: none;
} }
input[type=checked] { input[type="checked"] {
position: absolute; position: absolute;
} }

View File

@@ -1,7 +1,20 @@
#tab-content-query table td, // SPDX-License-Identifier: AGPL-3.0-or-later
#tab-content-query table th {
.ltr-text-align-right() !important; table {
height: 3rem; border-collapse: collapse;
th,
td {
text-align: center;
padding: 1rem 0.5rem;
.ltr-text-align-left();
}
tr.pref-group th {
font-weight: normal;
.ltr-text-align-left();
background: var(--color-settings-table-group-background);
}
} }
#main_preferences { #main_preferences {
@@ -22,6 +35,29 @@
width: 300px; width: 300px;
} }
input[type="text"] {
width: 13.25rem;
color: var(--color-toolkit-input-text-font);
border: none;
background: none repeat scroll 0 0 var(--color-toolkit-select-background);
padding: 0.2rem 0.4rem;
height: 2rem;
.rounded-corners-tiny;
&:hover,
&:focus {
background-color: var(--color-toolkit-select-background-hover);
}
}
div.pref-group {
width: 100%;
font-weight: normal;
padding: 1rem 0.5rem;
.ltr-text-align-left();
background: var(--color-settings-table-group-background);
}
.value { .value {
margin: 0; margin: 0;
padding: 0; padding: 0;
@@ -41,21 +77,6 @@
width: 14rem; width: 14rem;
} }
input[type="text"] {
width: 13.25rem;
color: var(--color-toolkit-input-text-font);
border: none;
background: none repeat scroll 0 0 var(--color-toolkit-select-background);
padding: 0.2rem 0.4rem;
height: 2rem;
.rounded-corners-tiny;
&:hover,
&:focus {
background-color: var(--color-toolkit-select-background-hover);
}
}
select:focus, select:focus,
input:focus { input:focus {
outline: none; outline: none;
@@ -72,12 +93,13 @@
font-size: 90%; font-size: 90%;
} }
table { .bang {
border-collapse: collapse; .ltr-text-align-left();
} .rounded-corners-tiny;
background-color: var(--color-doc-code-background);
table td { color: var(--color-doc-code);
text-align: center; padding: 0.2rem;
border: 0 none;
} }
.category { .category {
@@ -95,10 +117,6 @@
} }
table.table_engines { table.table_engines {
td {
height: 3.75rem;
}
th.name { th.name {
/* stylelint-disable */ /* stylelint-disable */
label { label {
@@ -114,15 +132,14 @@
.engine-description { .engine-description {
margin-top: 0.5rem; margin-top: 0.5rem;
} }
.bang {
margin: 0.3rem;
}
} }
} }
.engine-group { .checkbox-col,
.ltr-text-align-left();
font-weight: normal;
background: var(--color-settings-engine-group-background);
}
.name, .name,
.shortcut { .shortcut {
.ltr-text-align-left(); .ltr-text-align-left();
@@ -178,11 +195,33 @@
} }
} }
#toggle-all-engines-container {
width: max-content;
margin-left: auto;
}
div.selectable_url { div.selectable_url {
pre { pre {
width: 100%; width: 100%;
} }
} }
#copy-hash-container {
display: flex;
align-items: center;
gap: 0.5rem;
div.selectable_url {
pre {
width: auto;
flex-grow: 1;
}
}
}
#pref-hash-input {
width: 100%;
}
} }
@media screen and (max-width: @tablet) { @media screen and (max-width: @tablet) {

View File

@@ -0,0 +1,56 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
@import "../../../generated/pygments.less";
.codelines {
margin: @results-margin 0 0 0;
padding: @result-padding 0 0 0;
}
.code-highlight-sxng() {
.code-highlight {
pre {
overflow: auto;
margin: 0;
padding: 0 0 0.75rem 0;
}
.linenos {
user-select: none;
cursor: default;
&::selection {
background: transparent;
}
margin-right: 8px;
text-align: right;
}
span.linenos {
color: var(--color-line-number);
}
.err {
// The code view in the result list should not act as a code-checker.
border: none;
color: inherit;
}
}
}
.code-highlight-sxng();
/// Dark Theme (autoswitch based on device pref)
@media (prefers-color-scheme: dark) {
:root.theme-auto {
.code-highlight-dark();
.code-highlight-sxng();
}
}
// Dark Theme by preferences
:root.theme-dark {
.code-highlight-dark();
.code-highlight-sxng();
}

View File

@@ -0,0 +1,38 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
/*
Layout of the KeyValue result class
*/
#main_results .result-keyvalue {
caption {
padding: 0.8rem 0.5rem;
font-style: italic;
caption-side: bottom;
background-color: var(--color-result-keyvalue-table);
}
.col-key {
width: 25%;
}
table {
word-break: break-word;
table-layout: fixed;
width: 100%;
background-color: var(--color-result-keyvalue-table);
}
tr.odd {
background-color: var(--color-result-keyvalue-odd);
}
tr.even {
background-color: var(--color-result-keyvalue-even);
}
th,
td {
padding: 0.3rem 0.5rem;
}
}

View File

@@ -0,0 +1,72 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
/*
Layout of the Paper result class
*/
.result-paper {
.attributes {
display: table;
border-spacing: 0.125rem;
div {
display: table-row;
span {
font-size: 0.9rem;
margin-top: 0.25rem;
display: table-cell;
time {
font-size: 0.9rem;
}
}
span:first-child {
color: var(--color-base-font);
min-width: 10rem;
}
span:nth-child(2) {
color: var(--color-result-publishdate-font);
}
}
}
.content {
margin-top: 0.25rem;
}
.comments {
font-size: 0.9rem;
margin: 0.25rem 0 0 0;
padding: 0;
word-wrap: break-word;
line-height: 1.24;
font-style: italic;
}
}
@media screen and (max-width: @phone) {
.result-paper {
.attributes {
display: block;
div {
display: block;
span {
display: inline;
}
span:first-child {
font-weight: bold;
}
span:nth-child(2) {
.ltr-margin-left(0.5rem);
}
}
}
}
}

View File

@@ -0,0 +1,41 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
@import (inline) "../../node_modules/normalize.css/normalize.css";
@import "definitions.less";
@import "mixins.less";
// Reset padding and margin
html,
body,
main {
padding: 0;
margin: 0;
}
html {
font-family: sans-serif;
font-size: 0.9em;
.text-size-adjust;
color: var(--color-base-font);
background-color: var(--color-base-background);
scroll-behavior: smooth;
}
body {
margin-inline: 1rem;
}
a {
text-decoration: none;
color: var(--color-url-font);
&:visited {
color: var(--color-url-visited-font);
.highlight {
color: var(--color-url-visited-font);
}
}
}

View File

@@ -1,6 +1,4 @@
/* // SPDX-License-Identifier: AGPL-3.0-or-later
* SearXNG, A privacy-respecting, hackable metasearch engine
*/
#search { #search {
padding: 0; padding: 0;
@@ -15,20 +13,22 @@
background: var(--color-header-background); background: var(--color-header-background);
border-bottom: 1px solid var(--color-header-border); border-bottom: 1px solid var(--color-header-border);
display: grid; display: grid;
column-gap: 1.2rem; gap: 1rem 1.2rem;
row-gap: 1rem;
grid-template-columns: 3rem 1fr; grid-template-columns: 3rem 1fr;
grid-template-areas: grid-template-areas:
"logo search" "logo search"
"spacer categories"; "spacer categories";
} }
.category { .category_checkbox,
.category_button {
display: inline-block; display: inline-block;
position: relative; position: relative;
.ltr-margin-right(1rem); .ltr-margin-right(1rem);
padding: 0; padding: 0;
}
.category_checkbox {
input { input {
display: none; display: none;
} }
@@ -57,7 +57,46 @@
} }
} }
button.category_button {
background-color: inherit;
color: var(--color-base-font);
cursor: pointer;
padding: 0.2rem 0;
display: inline-flex;
align-items: center;
text-transform: capitalize;
font-size: 0.9em;
border: none;
border-bottom: 2px solid transparent;
svg {
padding-right: 0.2rem;
}
&.selected,
&:active {
color: var(--color-categories-item-selected-font);
border-bottom: 2px solid var(--color-categories-item-border-selected);
}
}
// only used when JavaScript is disabled
.no-js
#categories_container:has(button.category_button:focus-within)
button.category_button {
&.selected {
color: var(--color-base-font);
border-bottom: none;
}
&:focus-within {
color: var(--color-categories-item-selected-font);
border-bottom: 2px solid var(--color-categories-item-border-selected);
}
}
#search_logo { #search_logo {
padding: 0.5rem 10px 0 10px;
grid-area: logo; grid-area: logo;
display: flex; display: flex;
align-items: center; align-items: center;
@@ -90,12 +129,18 @@
} }
#search_view { #search_view {
padding: 0.5rem @search-padding-horizontal 0 @search-padding-horizontal;
grid-area: search; grid-area: search;
body.results_endpoint & {
padding: 0.5rem 2.8rem 0 0;
}
} }
.search_box { .search_box {
border-radius: 0.8rem; border-radius: 0.8rem;
width: @search-width; width: 100%;
max-width: @search-width;
display: inline-flex; display: inline-flex;
flex-direction: row; flex-direction: row;
white-space: nowrap; white-space: nowrap;
@@ -114,7 +159,7 @@
outline: none; outline: none;
color: var(--color-search-font); color: var(--color-search-font);
font-size: 1.1rem; font-size: 1.1rem;
z-index: 10000; z-index: 1000;
&:hover { &:hover {
color: var(--color-search-background-hover); color: var(--color-search-background-hover);
@@ -139,7 +184,7 @@ html.no-js #clear_search.hide_if_nojs {
outline: none; outline: none;
color: var(--color-search-font); color: var(--color-search-font);
font-size: 1.1rem; font-size: 1.1rem;
z-index: 2; z-index: 100;
} }
#q { #q {
@@ -149,11 +194,6 @@ html.no-js #clear_search.hide_if_nojs {
.ltr-rounded-left-corners(0.8rem); .ltr-rounded-left-corners(0.8rem);
} }
#q::-ms-clear,
#q::-webkit-search-cancel-button {
display: none;
}
#send_search { #send_search {
.ltr-rounded-right-corners(0.8rem); .ltr-rounded-right-corners(0.8rem);
@@ -205,11 +245,6 @@ html.no-js #clear_search.hide_if_nojs {
#categories { #categories {
font-size: 90%; font-size: 90%;
clear: both; clear: both;
.checkbox_container {
margin: auto;
margin-top: 2px;
}
} }
} }
@@ -219,7 +254,7 @@ html.no-js #clear_search.hide_if_nojs {
#categories_container { #categories_container {
width: max-content; width: max-content;
.category { .category_checkbox {
display: inline-block; display: inline-block;
width: auto; width: auto;
} }
@@ -228,9 +263,7 @@ html.no-js #clear_search.hide_if_nojs {
#categories { #categories {
width: 100%; width: 100%;
.ltr-text-align-left(); .ltr-text-align-left();
overflow-x: scroll; overflow: scroll hidden;
overflow-y: hidden;
-webkit-overflow-scrolling: touch;
} }
} }
} }
@@ -240,8 +273,7 @@ html.no-js #clear_search.hide_if_nojs {
width: 100%; width: 100%;
margin: 0; margin: 0;
padding: 0.1rem 0 0 0; padding: 0.1rem 0 0 0;
column-gap: 0; gap: 0 0;
row-gap: 0;
grid-template-areas: grid-template-areas:
"logo search" "logo search"
"categories categories"; "categories categories";
@@ -252,9 +284,7 @@ html.no-js #clear_search.hide_if_nojs {
} }
.search_box { .search_box {
width: 98%; width: 100%;
display: flex;
margin: 0 auto;
} }
#q { #q {
@@ -263,7 +293,8 @@ html.no-js #clear_search.hide_if_nojs {
} }
.search_filters { .search_filters {
margin: 0; margin: 0 10px;
padding: 0.5rem 0;
} }
.category { .category {
@@ -271,16 +302,23 @@ html.no-js #clear_search.hide_if_nojs {
width: auto; width: auto;
margin: 0; margin: 0;
svg {
display: none;
}
}
.category_checkbox {
label { label {
padding: 1rem !important; padding: 1rem !important;
margin: 0 !important; margin: 0 !important;
svg {
display: none;
}
} }
} }
.category_button {
padding: 1rem !important;
margin: 0 !important;
}
#search_view:focus-within { #search_view:focus-within {
display: block; display: block;
background-color: var(--color-search-background); background-color: var(--color-search-background);
@@ -288,7 +326,7 @@ html.no-js #clear_search.hide_if_nojs {
top: 0; top: 0;
height: 100%; height: 100%;
width: 100%; width: 100%;
z-index: 10000; z-index: 2000;
.search_box { .search_box {
border-bottom: 1px solid var(--color-search-border); border-bottom: 1px solid var(--color-search-border);
@@ -328,13 +366,17 @@ html.no-js #clear_search.hide_if_nojs {
#categories { #categories {
.disable-user-select; .disable-user-select;
&::-webkit-scrollbar {
width: 0;
height: 0;
}
} }
#categories_container { #categories_container {
position: relative; position: relative;
} }
.favicon img {
height: 1.5rem;
width: 1.5rem;
border-radius: 10%;
background-color: var(--color-favicon-background-color);
border: 1px solid var(--color-favicon-border-color);
display: flex;
}

View File

@@ -75,18 +75,18 @@ failed-test {
} }
.bar-chart-bar { .bar-chart-bar {
border: 3px solid #5bc0de; border: 3px solid var(--color-bar-chart-primary);
margin: 1px 0; margin: 1px 0;
} }
.bar-chart-serie1 { .bar-chart-serie1 {
border: 3px solid #5bc0de; border: 3px solid var(--color-bar-chart-primary);
margin: 1px 0; margin: 1px 0;
float: left; float: left;
} }
.bar-chart-serie2 { .bar-chart-serie2 {
border: 3px solid #deb15b; border: 3px solid var(--color-bar-chart-secondary);
margin: 1px 0; margin: 1px 0;
float: left; float: left;
} }

View File

@@ -1,34 +1,36 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
/* /*
--center-page-width overrides the less variable @results-width when the results are centered --center-page-width overrides the less variable @results-width when the results are centered
see the CSS rules for #results in style.less ( grid-template-columns and gap). see the CSS rules for #results in style.less ( grid-template-columns and gap).
In this file, the --center-page-width values comes from the Oscar theme (Bootstrap 3). In this file, the --center-page-width values comes from the Oscar theme (Bootstrap 3).
All rules starts with ".center-aligment-yes #main_results" to be enabled only All rules starts with ".center-alignment-yes #main_results" to be enabled only
on the /search URL and when the "center alignment" preference is enabled. on the /search URL and when the "center alignment" preference is enabled.
*/ */
@media screen and (min-width: @phone) { @media screen and (min-width: @phone) {
.center-aligment-yes #main_results { .center-alignment-yes #main_results {
--center-page-width: 48rem; --center-page-width: 48rem;
} }
} }
@media screen and (min-width: 62rem) { @media screen and (width >= 62rem) {
.center-aligment-yes #main_results { .center-alignment-yes #main_results {
--center-page-width: 60rem; --center-page-width: 60rem;
} }
} }
@media screen and (min-width: @tablet) { @media screen and (min-width: @tablet) {
.center-aligment-yes #main_results { .center-alignment-yes #main_results {
--center-page-width: 73rem; --center-page-width: 73rem;
} }
} }
@media screen and (min-width: @phone) and (max-width: @tablet) { @media screen and (min-width: @phone) and (max-width: @tablet) {
// any change must be reset in @media screen and (min-width: @tablet) { ... } // any change must be reset in @media screen and (min-width: @tablet) { ... }
.center-aligment-yes #main_results { .center-alignment-yes #main_results {
#results { #results {
grid-template-columns: 60% calc(40% - @results-gap); grid-template-columns: 60% calc(40% - @results-gap);
margin-left: 0; margin-left: 0;
@@ -50,7 +52,7 @@ on the /search URL and when the "center alignment" preference is enabled.
} }
@media screen and (min-width: @tablet) { @media screen and (min-width: @tablet) {
.center-aligment-yes #main_results { .center-alignment-yes #main_results {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
@@ -63,9 +65,11 @@ on the /search URL and when the "center alignment" preference is enabled.
} }
#search_header { #search_header {
grid-template-columns: calc(50% - 4.5rem - var(--center-page-width) / 2) 3rem var(--center-page-width); grid-template-columns:
calc(50% - 4.5rem - var(--center-page-width) / 2)
3rem var(--center-page-width);
grid-template-areas: "na logo search" "na spacer categories"; grid-template-areas: "na logo search" "na spacer categories";
column-gap: 1.2rem; // from search.less column-gap: 1.2rem; // from search.less
width: 100%; width: 100%;
padding-left: 0; padding-left: 0;
padding-right: 0; padding-right: 0;
@@ -91,10 +95,12 @@ on the /search URL and when the "center alignment" preference is enabled.
align-self: flex-start; align-self: flex-start;
} }
&:not(.only_template_images):not(.image-detail-open) { &:not(.only_template_images, .image-detail-open) {
// the gap is set in style.less // the gap is set in style.less
.ltr-margin-left(1.5rem); .ltr-margin-left(1.5rem);
grid-template-columns: calc(var(--center-page-width) - @results-gap - @results-sidebar-width) @results-sidebar-width; grid-template-columns:
calc(var(--center-page-width) - @results-gap - @results-sidebar-width)
@results-sidebar-width;
#backToTop { #backToTop {
.ltr-left(calc(50% - @results-sidebar-width - @results-gap + 1rem + var(--center-page-width) / 2)); .ltr-left(calc(50% - @results-sidebar-width - @results-gap + 1rem + var(--center-page-width) / 2));

View File

@@ -1,3 +1,5 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
.ltr-left(@offset) { .ltr-left(@offset) {
left: @offset; left: @offset;
} }

View File

@@ -1,3 +1,5 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
.ltr-left(@offset) { .ltr-left(@offset) {
right: @offset; right: @offset;
} }
@@ -94,6 +96,10 @@
direction: initial; direction: initial;
text-align: right; text-align: right;
.result .url_header {
direction: rtl;
}
.result .url_wrapper { .result .url_wrapper {
justify-content: end; justify-content: end;
} }
@@ -105,7 +111,11 @@
} }
// Image detail // Image detail
#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p { #results.image-detail-open
article.result-images[data-vim-selected]
.detail
.result-images-labels
p {
direction: rtl; direction: rtl;
&.result-url { &.result-url {
@@ -121,7 +131,7 @@
} }
// select HTML element // select HTML element
@supports ((background-position-x: 100%) and ((appearance: none) or (-webkit-appearance: none) or (-moz-appearance: none))) { @supports ((background-position-x: 100%) and ((appearance: none))) {
select { select {
border-width: 0 0 0 2rem; border-width: 0 0 0 2rem;
background-position-x: -2rem; background-position-x: -2rem;

View File

@@ -1,15 +1,10 @@
/* // SPDX-License-Identifier: AGPL-3.0-or-later
* SearXNG, A privacy-respecting, hackable metasearch engine
*
* To convert "style.less" to "style.css" run: $make styles
*/
// stylelint-disable no-descending-specificity // stylelint-disable no-descending-specificity
@import (inline) "../../node_modules/normalize.css/normalize.css"; @import (inline) "../../node_modules/normalize.css/normalize.css";
@import "definitions.less"; @import "definitions.less";
@import "mixins.less"; @import "mixins.less";
@import "code.less";
@import "toolkit.less"; @import "toolkit.less";
@import "autocomplete.less"; @import "autocomplete.less";
@import "detail.less"; @import "detail.less";
@@ -19,6 +14,7 @@
@import "new_issue.less"; @import "new_issue.less";
@import "stats.less"; @import "stats.less";
@import "result_templates.less"; @import "result_templates.less";
@import "weather.less";
// for index.html template // for index.html template
@import "index.less"; @import "index.less";
@@ -32,8 +28,8 @@
// to center the results // to center the results
@import "style-center.less"; @import "style-center.less";
// ion-icon // sxng-icon-set
.ion-icon { .sxng-icon-set {
display: inline-block; display: inline-block;
vertical-align: bottom; vertical-align: bottom;
line-height: 1; line-height: 1;
@@ -41,16 +37,16 @@
.ltr-transform(); .ltr-transform();
} }
.ion-icon-small { .sxng-icon-set-small {
width: 1rem; width: 1rem;
height: 1rem; height: 1rem;
.ion-icon; .sxng-icon-set;
} }
.ion-icon-big { .sxng-icon-set-big {
width: 1.5rem; width: 1.5rem;
height: 1.5rem; height: 1.5rem;
.ion-icon; .sxng-icon-set;
} }
// Main LESS-Code // Main LESS-Code
@@ -63,6 +59,8 @@ html {
background-color: var(--color-base-background); background-color: var(--color-base-background);
padding: 0; padding: 0;
margin: 0; margin: 0;
scroll-behavior: smooth;
} }
body, body,
@@ -78,6 +76,12 @@ body {
margin: 0; margin: 0;
} }
@supports (height: 100dvh) {
body {
height: 100dvh;
}
}
main { main {
width: 100%; width: 100%;
margin-bottom: 2rem; margin-bottom: 2rem;
@@ -109,7 +113,8 @@ footer {
} }
input[type="submit"], input[type="submit"],
#results button[type="submit"] { #results button[type="submit"],
.button {
padding: 0.7rem; padding: 0.7rem;
display: inline-block; display: inline-block;
background: var(--color-btn-background); background: var(--color-btn-background);
@@ -167,6 +172,8 @@ article[data-vim-selected].category-social {
.result { .result {
margin: @results-margin 0; margin: @results-margin 0;
padding: @result-padding; padding: @result-padding;
box-sizing: border-box;
width: 100%;
.ltr-border-left(0.2rem solid transparent); .ltr-border-left(0.2rem solid transparent);
h3 { h3 {
@@ -195,7 +202,8 @@ article[data-vim-selected].category-social {
.cache_link, .cache_link,
.proxyfied_link { .proxyfied_link {
font-size: 0.9em !important; font-size: smaller !important;
margin-left: 0.5rem;
} }
.content, .content,
@@ -228,19 +236,29 @@ article[data-vim-selected].category-social {
} }
} }
.url_header {
display: flex;
gap: 0.5rem;
}
.url_wrapper { .url_wrapper {
display: flex; display: flex;
align-items: center;
font-size: 1rem; font-size: 1rem;
color: var(--color-result-url-font); color: var(--color-result-url-font);
flex-wrap: nowrap; flex-flow: row nowrap;
overflow: hidden; overflow: hidden;
flex-direction: row;
margin: 0; margin: 0;
padding: 0; padding: 0;
.url_o1 { .url_o1 {
white-space: nowrap; white-space: nowrap;
flex-shrink: 1; flex-shrink: 1;
padding-bottom: 1px;
.url_i1 {
unicode-bidi: plaintext;
}
} }
.url_o1::after { .url_o1::after {
@@ -252,10 +270,9 @@ article[data-vim-selected].category-social {
.url_o2 { .url_o2 {
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
flex-basis: content; flex: 0 1 content;
flex-grow: 0;
flex-shrink: 1;
text-align: right; text-align: right;
padding-bottom: 1px;
.url_i2 { .url_i2 {
float: right; float: right;
@@ -265,6 +282,7 @@ article[data-vim-selected].category-social {
.published_date, .published_date,
.result_length, .result_length,
.result_views,
.result_author, .result_author,
.result_shipping, .result_shipping,
.result_source_country { .result_source_country {
@@ -277,24 +295,12 @@ article[data-vim-selected].category-social {
color: var(--color-result-description-highlight-font); color: var(--color-result-description-highlight-font);
} }
img { img.thumbnail {
&.thumbnail { .ltr-float-left();
.ltr-float-left(); padding-top: 0.6rem;
padding-top: 0.6rem; .ltr-padding-right(1rem);
.ltr-padding-right(1rem); width: 7rem;
width: 20rem; height: unset; // remove height value that was needed for lazy loading
height: unset; // remove heigth value that was needed for lazy loading
}
&.image {
.ltr-float-left();
padding-top: 0.6rem;
.ltr-padding-right(1rem);
width: 7rem;
max-height: 7rem;
object-fit: scale-down;
object-position: right top;
}
} }
.break { .break {
@@ -302,6 +308,50 @@ article[data-vim-selected].category-social {
} }
} }
.result-packages {
.attributes {
display: table;
border-spacing: 0.125rem;
margin-top: 0.3rem;
div {
display: table-row;
span {
font-size: 0.9rem;
margin-top: 0.25rem;
display: table-cell;
time {
font-size: 0.9rem;
}
}
span:first-child {
color: var(--color-base-font);
min-width: 10rem;
}
span:nth-child(2) {
color: var(--color-result-publishdate-font);
}
}
}
.content {
margin-top: 0.25rem;
}
.comments {
font-size: 0.9rem;
margin: 0.25rem 0 0 0;
padding: 0;
word-wrap: break-word;
line-height: 1.24;
font-style: italic;
}
}
.template_group_images { .template_group_images {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
@@ -319,7 +369,7 @@ article[data-vim-selected].category-social {
.category-files, .category-files,
.category-social { .category-social {
border: 1px solid var(--color-result-border); border: 1px solid var(--color-result-border);
margin: 1rem @results-tablet-offset 0 @results-tablet-offset !important; margin: 0 @results-tablet-offset 1rem @results-tablet-offset !important;
.rounded-corners; .rounded-corners;
} }
@@ -340,6 +390,16 @@ article[data-vim-selected].category-social {
padding: 10px 0 0 0; padding: 10px 0 0 0;
} }
.result-videos {
img.thumbnail {
.ltr-float-left();
padding-top: 0.6rem;
.ltr-padding-right(1rem);
width: 20rem;
height: unset; // remove height value that was needed for lazy loading
}
}
.result-videos .content { .result-videos .content {
overflow: hidden; overflow: hidden;
} }
@@ -360,6 +420,9 @@ article[data-vim-selected].category-social {
.engines { .engines {
.ltr-float-right(); .ltr-float-right();
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
color: var(--color-result-engines-font); color: var(--color-result-engines-font);
span { span {
@@ -390,9 +453,11 @@ article[data-vim-selected].category-social {
margin: 0.25rem; margin: 0.25rem;
border: none !important; border: none !important;
height: @results-image-row-height; height: @results-image-row-height;
width: unset;
& > a { & > a {
position: relative; position: relative;
outline: none;
} }
img { img {
@@ -400,12 +465,23 @@ article[data-vim-selected].category-social {
padding: 0; padding: 0;
border: none; border: none;
height: 100%; height: 100%;
width: 100%; width: auto;
object-fit: cover; object-fit: cover;
vertical-align: bottom; vertical-align: bottom;
background: var(--color-result-image-background); background: var(--color-result-image-background);
} }
.image_resolution {
position: absolute;
right: 0;
bottom: 0;
background: var(--color-image-resolution-background);
padding: 0.3rem 0.5rem;
font-size: 0.9rem;
color: var(--color-image-resolution-font);
border-top-left-radius: 0.3rem;
}
span.title, span.title,
span.source { span.source {
display: block; display: block;
@@ -463,18 +539,16 @@ article[data-vim-selected].category-social {
margin-bottom: 0; margin-bottom: 0;
.ltr-margin-left(@results-offset); .ltr-margin-left(@results-offset);
display: grid; display: grid;
grid-template-columns: @results-width @results-sidebar-width; grid-template:
grid-template-rows: min-content min-content 1fr min-content; "corrections sidebar" min-content
"answers sidebar" min-content
"urls sidebar" 1fr
"pagination sidebar" min-content
/ @results-width @results-sidebar-width;
gap: 0 @results-gap; gap: 0 @results-gap;
grid-template-areas:
"corrections sidebar"
"answers sidebar"
"urls sidebar"
"pagination sidebar";
} }
#results #sidebar *:first-child, #results #sidebar *:first-child {
#results #urls *:first-child {
margin-top: 0; margin-top: 0;
} }
@@ -483,10 +557,14 @@ article[data-vim-selected].category-social {
grid-area: urls; grid-area: urls;
} }
#apis .wrapper {
display: flex;
}
#suggestions { #suggestions {
.wrapper { .wrapper {
display: flex; display: flex;
flex-flow: row wrap; flex-flow: column;
justify-content: flex-end; justify-content: flex-end;
form { form {
@@ -506,6 +584,10 @@ article[data-vim-selected].category-social {
background: transparent; background: transparent;
color: var(--color-result-search-url-font); color: var(--color-result-search-url-font);
cursor: pointer; cursor: pointer;
width: calc(100%);
text-overflow: ellipsis;
overflow: hidden;
text-align: left;
} }
input[type="submit"], input[type="submit"],
@@ -539,13 +621,30 @@ article[data-vim-selected].category-social {
} }
} }
#infoboxes .title,
#suggestions .title, #suggestions .title,
#search_url .title, #search_url .title,
#engines_msg .title,
#apis .title { #apis .title {
margin: 2em 0 0.5em 0; margin: 2em 0 0.5em 0;
color: var(--color-base-font); color: var(--color-base-font);
} }
summary.title {
cursor: pointer;
padding-top: 1em;
}
.sidebar-collapsible {
border-top: 1px solid var(--color-sidebar-border);
padding-bottom: 0.5em;
}
#sidebar-end-collapsible {
border-bottom: 1px solid var(--color-sidebar-border);
width: 100%;
}
#answers { #answers {
grid-area: answers; grid-area: answers;
background: var(--color-answer-background); background: var(--color-answer-background);
@@ -562,6 +661,15 @@ article[data-vim-selected].category-social {
span { span {
overflow-wrap: anywhere; overflow-wrap: anywhere;
} }
.answer {
display: flex;
flex-direction: column;
}
.answer-url {
margin: 5px 10px 10px auto;
}
} }
#infoboxes { #infoboxes {
@@ -634,21 +742,50 @@ article[data-vim-selected].category-social {
} }
} }
#search_url { #apis {
margin-top: 8px; input {
font-size: 0.9em;
margin: 0 10px 0 0;
.show-content-button;
}
}
#engines_msg {
.engine-name {
width: 10rem;
}
.response-error {
color: var(--color-error);
}
.bar-chart-value {
width: auto;
}
}
#search_url {
div.selectable_url { div.selectable_url {
pre { pre {
float: left;
width: 200em; width: 200em;
} }
} }
button#copy_url {
float: right;
padding: 0.4rem;
margin-left: 0.5rem;
border-radius: 0.3rem;
display: none; // will be shown by JS.
}
} }
#links_on_top { #links_on_top {
position: absolute; position: absolute;
.ltr-right(1.8rem); .ltr-right(1rem);
.ltr-text-align-right(); .ltr-text-align-right();
top: 2.2rem; top: 2.7rem;
padding: 0; padding: 0;
border: 0; border: 0;
display: flex; display: flex;
@@ -684,9 +821,24 @@ article[data-vim-selected].category-social {
} }
} }
#apis { .numbered_pagination {
margin-top: 8px; display: flex;
clear: both; flex-direction: row;
justify-content: center;
align-items: center;
overflow: hidden;
}
.page_number {
background: transparent !important;
color: var(--color-result-link-font) !important;
text-decoration: underline;
}
.page_number_current {
background: transparent;
color: var(--color-result-link-visited-font);
border: none;
} }
#backToTop { #backToTop {
@@ -700,6 +852,7 @@ article[data-vim-selected].category-social {
.ltr-left(@results-width + @results-offset + (0.5 * @results-gap - 1.2em)); .ltr-left(@results-width + @results-offset + (0.5 * @results-gap - 1.2em));
transition: opacity 0.5s; transition: opacity 0.5s;
opacity: 0; opacity: 0;
pointer-events: none;
.rounded-corners; .rounded-corners;
a { a {
@@ -718,6 +871,7 @@ article[data-vim-selected].category-social {
#results.scrolling #backToTop { #results.scrolling #backToTop {
opacity: 1; opacity: 1;
pointer-events: all;
} }
/* /*
@@ -766,14 +920,6 @@ article[data-vim-selected].category-social {
} }
} }
#apis {
display: none;
}
#search_url {
display: none;
}
.result { .result {
.thumbnail { .thumbnail {
max-width: 98%; max-width: 98%;
@@ -791,7 +937,10 @@ article[data-vim-selected].category-social {
.engines { .engines {
.ltr-float-right(); .ltr-float-right();
padding: 0 0 3px 0; display: flex;
flex-wrap: wrap;
justify-content: flex-end;
padding: 3px 0 0 0;
} }
} }
@@ -816,22 +965,21 @@ article[data-vim-selected].category-social {
} }
#main_results div#results { #main_results div#results {
margin: 1rem auto 0 auto; margin: 0 auto;
justify-content: center; justify-content: center;
display: grid; display: grid;
grid-template-columns: @results-width; grid-template:
grid-template-rows: min-content min-content min-content 1fr min-content min-content; "corrections" min-content
"answers" min-content
"sidebar" min-content
"urls" 1fr
"pagination" min-content
/ @results-width;
gap: 0; gap: 0;
grid-template-areas:
"corrections"
"answers"
"sidebar"
"urls"
"pagination";
} }
} }
@media screen and (max-width: calc(@tablet - 0.5px)) { @media screen and (width <= calc(@tablet - 0.5px)) {
#links_on_top { #links_on_top {
span { span {
display: none; display: none;
@@ -839,7 +987,7 @@ article[data-vim-selected].category-social {
} }
} }
@media screen and (max-width: 52rem) { @media screen and (width <= 52rem) {
body.results_endpoint { body.results_endpoint {
#links_on_top { #links_on_top {
.link_on_top_about, .link_on_top_about,
@@ -851,10 +999,10 @@ article[data-vim-selected].category-social {
} }
@media screen and (min-width: @phone) and (max-width: @tablet) { @media screen and (min-width: @phone) and (max-width: @tablet) {
// when .center-aligment-yes, see style-center.less // when .center-alignment-yes, see style-center.less
// the media query includes "min-width: @phone" // the media query includes "min-width: @phone"
// because the phone layout includes the tablet layout unconditionally. // because the phone layout includes the tablet layout unconditionally.
.center-aligment-no { .center-alignment-no {
.results-tablet(); .results-tablet();
} }
} }
@@ -864,15 +1012,14 @@ article[data-vim-selected].category-social {
#main_results div#results.only_template_images { #main_results div#results.only_template_images {
margin: 1rem @results-tablet-offset 0 @results-tablet-offset; margin: 1rem @results-tablet-offset 0 @results-tablet-offset;
display: grid; display: grid;
grid-template-columns: 100%; grid-template:
grid-template-rows: min-content min-content min-content 1fr min-content; "corrections" min-content
"answers" min-content
"sidebar" min-content
"urls" 1fr
"pagination" min-content
/ 100%;
gap: 0; gap: 0;
grid-template-areas:
"corrections"
"answers"
"sidebar"
"urls"
"pagination";
#sidebar { #sidebar {
display: none; display: none;
@@ -913,12 +1060,12 @@ article[data-vim-selected].category-social {
#main_results div#results { #main_results div#results {
grid-template-columns: 100%; grid-template-columns: 100%;
margin: 1rem 0 0 0; margin: 0 auto;
} }
#links_on_top { #links_on_top {
top: 0.8rem; top: 1.4rem;
.ltr-right(0.7rem); .ltr-right(10px);
} }
#main_index #links_on_top { #main_index #links_on_top {
@@ -942,19 +1089,49 @@ article[data-vim-selected].category-social {
.result { .result {
background: var(--color-result-background); background: var(--color-result-background);
margin: 1rem 0; border: 1px solid var(--color-result-background);
margin: 1rem 2%;
width: 96%;
.rounded-corners;
} }
.result-images { .result-images {
margin: 0; margin: 0;
height: @results-image-row-height-phone; height: @results-image-row-height-phone;
background: var(--color-base-background-mobile); background: var(--color-base-background-mobile);
width: unset;
} }
.infobox { .infobox {
border: none !important; border: none !important;
background-color: var(--color-sidebar-background); background-color: var(--color-sidebar-background);
} }
.numbered_pagination {
display: none;
}
.result-packages {
.attributes {
display: block;
div {
display: block;
span {
display: inline;
}
span:first-child {
font-weight: bold;
}
span:nth-child(2) {
.ltr-margin-left(0.5rem);
}
}
}
}
} }
/* /*
@@ -976,3 +1153,8 @@ article[data-vim-selected].category-social {
pre code { pre code {
white-space: pre-wrap; white-space: pre-wrap;
} }
// import layouts of the Result types
@import "result_types/keyvalue.less";
@import "result_types/code.less";
@import "result_types/paper.less";

View File

@@ -1,3 +1,5 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// other solution : http://stackoverflow.com/questions/1577598/how-to-hide-parts-of-html-when-javascript-is-disabled/13857783#13857783 // other solution : http://stackoverflow.com/questions/1577598/how-to-hide-parts-of-html-when-javascript-is-disabled/13857783#13857783
// stylelint-disable no-descending-specificity // stylelint-disable no-descending-specificity
@@ -156,9 +158,7 @@ div.selectable_url {
td { td {
padding: 0 1em 0 0; padding: 0 1em 0 0;
padding-top: 0;
.ltr-padding-right(1rem); .ltr-padding-right(1rem);
padding-bottom: 0;
.ltr-padding-left(0); .ltr-padding-left(0);
} }
@@ -176,6 +176,15 @@ div.selectable_url {
border-color: var(--color-error); border-color: var(--color-error);
} }
.dialog-error-block {
.dialog();
display: block;
color: var(--color-error);
background: var(--color-error-background);
border-color: var(--color-error);
}
.dialog-warning { .dialog-warning {
.dialog(); .dialog();
@@ -194,7 +203,7 @@ div.selectable_url {
left: 50%; left: 50%;
margin: 0 auto; margin: 0 auto;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
z-index: 10000000; z-index: 5000;
h3 { h3 {
margin-top: 0; margin-top: 0;
@@ -208,8 +217,7 @@ div.selectable_url {
// //
.scrollx { .scrollx {
overflow-x: auto; overflow: auto hidden;
overflow-y: hidden;
display: block; display: block;
padding: 0; padding: 0;
margin: 0; margin: 0;
@@ -241,7 +249,7 @@ ul.tabs {
order: 2; order: 2;
} }
& > input[type=radio] { & > input[type="radio"] {
display: none; display: none;
} }
@@ -299,7 +307,7 @@ html body .tabs > input:checked {
} }
~ label { ~ label {
position: inherited; position: inherit;
background: inherit; background: inherit;
border-bottom: 2px solid transparent; border-bottom: 2px solid transparent;
font-weight: normal; font-weight: normal;
@@ -331,7 +339,7 @@ select {
padding: 0.2rem !important; padding: 0.2rem !important;
color: var(--color-search-font); color: var(--color-search-font);
font-size: 0.9rem; font-size: 0.9rem;
z-index: 2; z-index: 100;
&:hover, &:hover,
&:focus { &:focus {
@@ -339,14 +347,13 @@ select {
} }
} }
@supports ((background-position-x: 100%) and ((appearance: none) or (-webkit-appearance: none) or (-moz-appearance: none))) { @supports ((background-position-x: 100%) and ((appearance: none))) {
select { select {
appearance: none; appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
border-width: 0 2rem 0 0; border-width: 0 2rem 0 0;
border-color: transparent; border-color: transparent;
background: data-uri('image/svg+xml;charset=UTF-8', @select-light-svg-path) no-repeat; background: data-uri("image/svg+xml;charset=UTF-8", @select-light-svg-path)
no-repeat;
background-position-x: calc(100% + 2rem); background-position-x: calc(100% + 2rem);
background-size: 2rem; background-size: 2rem;
background-origin: content-box; background-origin: content-box;
@@ -368,19 +375,23 @@ select {
@media (prefers-color-scheme: dark) { @media (prefers-color-scheme: dark) {
html.theme-auto select, html.theme-auto select,
html.theme-dark select { html.theme-dark select {
background-image: data-uri('image/svg+xml;charset=UTF-8', @select-dark-svg-path); background-image: data-uri(
"image/svg+xml;charset=UTF-8",
@select-dark-svg-path
);
} }
} }
html.theme-dark select { html.theme-dark select {
background-image: data-uri('image/svg+xml;charset=UTF-8', @select-dark-svg-path); background-image: data-uri(
"image/svg+xml;charset=UTF-8",
@select-dark-svg-path
);
} }
} }
/* -- checkbox-onoff -- */ /* -- checkbox-onoff -- */
input.checkbox-onoff[type="checkbox"] { input.checkbox-onoff[type="checkbox"] {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none; appearance: none;
cursor: pointer; cursor: pointer;
display: inline-block; display: inline-block;
@@ -405,7 +416,7 @@ input.checkbox-onoff[type="checkbox"] {
border: 1px solid var(--color-btn-background); border: 1px solid var(--color-btn-background);
border-radius: 12px; border-radius: 12px;
box-shadow: var(--color-btn-background) 0 0 3px; box-shadow: var(--color-btn-background) 0 0 3px;
z-index: 10000; z-index: 1200;
top: -0.55em; top: -0.55em;
left: -0.6em; left: -0.6em;
} }
@@ -428,7 +439,7 @@ reversed-checkbox displays unchecked checkedboxes as checked, and vice versa.
see https://github.com/searxng/searxng/blob/3408d061aab9abc6168fec9bbc6deab71b236dac/searx/templates/simple/preferences.html#L313 see https://github.com/searxng/searxng/blob/3408d061aab9abc6168fec9bbc6deab71b236dac/searx/templates/simple/preferences.html#L313
*/ */
input.checkbox-onoff[type="checkbox"], input.checkbox-onoff[type="checkbox"],
.reversed-checkbox input.checkbox-onoff[type="checkbox"]:checked { input.checkbox-onoff.reversed-checkbox[type="checkbox"]:checked {
background: var(--color-toolkit-checkbox-onoff-off-background); background: var(--color-toolkit-checkbox-onoff-off-background);
&::before { &::before {
@@ -440,7 +451,7 @@ input.checkbox-onoff[type="checkbox"],
} }
input.checkbox-onoff[type="checkbox"]:checked, input.checkbox-onoff[type="checkbox"]:checked,
.reversed-checkbox input.checkbox-onoff[type="checkbox"] { input.checkbox-onoff.reversed-checkbox[type="checkbox"] {
background: var(--color-toolkit-checkbox-onoff-on-background); background: var(--color-toolkit-checkbox-onoff-on-background);
&::before { &::before {
@@ -453,9 +464,7 @@ input.checkbox-onoff[type="checkbox"]:checked,
/* -- checkbox -- */ /* -- checkbox -- */
@supports (transform: rotate(-45deg)) { @supports (transform: rotate(-45deg)) {
input[type=checkbox]:not(.checkbox-onoff) { input[type="checkbox"]:not(.checkbox-onoff) {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none; appearance: none;
width: 20px; width: 20px;
@@ -468,7 +477,7 @@ input.checkbox-onoff[type="checkbox"]:checked,
.rounded-corners(0.3em); .rounded-corners(0.3em);
&::after { &::after {
content: ''; content: "";
width: 9px; width: 9px;
height: 5px; height: 5px;
position: absolute; position: absolute;
@@ -489,14 +498,18 @@ input.checkbox-onoff[type="checkbox"]:checked,
} }
// disabled : can't be focused, show only the check mark // disabled : can't be focused, show only the check mark
input[type=checkbox][disabled]:not(.checkbox-onoff) { input[type="checkbox"][disabled]:not(.checkbox-onoff) {
border: inherit; border: inherit;
background-color: transparent !important; background-color: transparent !important;
cursor: inherit; cursor: inherit;
} }
// if not checked and possible to checked then display a "light" check mark on hover // if not checked and possible to checked then display a "light" check mark on hover
input.checkbox[type=checkbox]:not(:checked):not([disabled]):not(.checkbox-onoff):hover::after { input.checkbox[type="checkbox"]:not(
:checked,
[disabled],
.checkbox-onoff
):hover::after {
opacity: 0.5; opacity: 0.5;
} }
} }
@@ -524,33 +537,16 @@ input.checkbox-onoff[type="checkbox"]:checked,
border-right: 0.5em solid var(--color-toolkit-loader-border); border-right: 0.5em solid var(--color-toolkit-loader-border);
border-bottom: 0.5em solid var(--color-toolkit-loader-border); border-bottom: 0.5em solid var(--color-toolkit-loader-border);
border-left: 0.5em solid var(--color-toolkit-loader-borderleft); border-left: 0.5em solid var(--color-toolkit-loader-borderleft);
-webkit-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0); transform: translateZ(0);
-webkit-animation: load8 1.2s infinite linear;
animation: load8 1.2s infinite linear; animation: load8 1.2s infinite linear;
} }
@-webkit-keyframes load8 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes load8 { @keyframes load8 {
0% { 0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); transform: rotate(0deg);
} }
100% { 100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); transform: rotate(360deg);
} }
} }
@@ -565,7 +561,7 @@ input.checkbox-onoff[type="checkbox"]:checked,
background: var(--color-toolkit-engine-tooltip-background); background: var(--color-toolkit-engine-tooltip-background);
font-size: 14px; font-size: 14px;
font-weight: normal; font-weight: normal;
z-index: 1000000; z-index: 5000;
text-align: left; text-align: left;
.rounded-corners; .rounded-corners;
} }
@@ -581,11 +577,7 @@ td:hover .engine-tooltip,
margin: 0; margin: 0;
padding: 0 0.125rem 0 4rem; padding: 0 0.125rem 0 4rem;
width: 100%; width: 100%;
width: -moz-available; flex-flow: row nowrap;
width: -webkit-fill-available;
width: fill;
flex-direction: row;
flex-wrap: nowrap;
align-items: center; align-items: center;
display: inline-flex; display: inline-flex;
} }

View File

@@ -0,0 +1,31 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
.loader,
.loader::after {
border-radius: 50%;
width: 10em;
height: 10em;
}
.loader {
margin: 60px auto;
font-size: 10px;
position: relative;
text-indent: -9999em;
border-top: 1.1em solid var(--color-loading-indicator);
border-right: 1.1em solid var(--color-loading-indicator);
border-bottom: 1.1em solid var(--color-loading-indicator);
border-left: 1.1em solid var(--color-loading-indicator-gap);
transform: translateZ(0);
animation: load8 1.1s infinite linear;
}
@keyframes load8 {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

View File

@@ -0,0 +1,44 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
#answers .weather {
summary {
display: block;
list-style: none;
}
div.summary {
margin: 0;
padding: 0.5rem 1rem;
background-color: var(--color-header-background);
.rounded-corners-tiny;
}
table {
font-size: 0.9rem;
table-layout: fixed;
margin-top: 0.5rem;
margin-bottom: 0.5rem;
border-collapse: separate;
border-spacing: 0.1em 0;
}
td {
padding: 0;
overflow: hidden;
text-overflow: ellipsis;
}
img.symbol {
width: 5rem;
margin: auto;
display: block;
}
.title {
// background-color: var(--color-result-keyvalue-even);
}
.measured {
// background-color: var(--color-result-keyvalue-odd);
}
}

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
<path fill="#58f" d="M11 20.85a.92.92 0 0 1-1.1.93A10 10 0 0 1 2.06 13c-.06-.55.4-1 .95-1h3a1 1 0 0 1 1 1 3 3 0 0 0 3 3 1 1 0 0 1 1 1v3.85Zm6-1.92c0 .77.83 1.23 1.42.74a10 10 0 0 0 2.03-2.32c.39-.61-.09-1.35-.81-1.35H18a1 1 0 0 0-1 1v1.93ZM12 2a10 10 0 0 1 6.65 2.53c.61.55.17 1.47-.65 1.47h-.15A2.85 2.85 0 0 0 15 8.85c0 .33-.18.62-.47.77l-.08.04a1 1 0 0 1-.9 0l-.08-.04a.85.85 0 0 1-.47-.77A2.85 2.85 0 0 0 10.15 6H10a1 1 0 0 1-1-1V3.2c0-.44.28-.84.7-.94C10.45 2.1 11.22 2 12 2Z"/>
<path fill="#58f" d="M3.42 10c-.63 0-1.1-.58-.9-1.18.6-1.8 1.7-3.36 3.12-4.53C6.2 3.82 7 4.26 7 5a3 3 0 0 0 3 3h.15c.47 0 .85.38.85.85 0 1.09.61 2.07 1.58 2.56l.08.04a3 3 0 0 0 2.68 0l.08-.04A2.85 2.85 0 0 0 17 8.85c0-.47.38-.85.85-.85h2.66c.4 0 .77.23.9.6a9.98 9.98 0 0 1 .52 4.6.94.94 0 0 1-.95.8H18a3 3 0 0 0-3 3v3.8c0 .44-.28.84-.7.94l-.2.04a.92.92 0 0 1-1.1-.93V17a3 3 0 0 0-3-3 1 1 0 0 1-1-1 3 3 0 0 0-3-3H3.42Z"/>
</svg>

After

Width:  |  Height:  |  Size: 989 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path d="M248 64C146.39 64 64 146.39 64 248s82.39 184 184 184 184-82.39 184-184S349.61 64 248 64z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M220 220h32v116"/>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32" d="M208 340h88"/>
<path d="M248 130a26 26 0 1026 26 26 26 0 00-26-26z" fill="currentColor" stroke="currentColor" stroke-miterlimit="10" stroke-width="1"/>
</svg>

After

Width:  |  Height:  |  Size: 648 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path d="M368 415.86V72a24.07 24.07 0 00-24-24H72a24.07 24.07 0 00-24 24v352a40.12 40.12 0 0040 40h328" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/>
<path d="M416 464h0a48 48 0 01-48-48V128h72a24 24 0 0124 24v264a48 48 0 01-48 48z" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/>
<path d="M240 128h64M240 192h64M112 256h192M112 320h192M112 384h192" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/>
<path d="M176 208h-64a16 16 0 01-16-16v-64a16 16 0 0116-16h64a16 16 0 0116 16v64a16 16 0 01-16 16z" fill="currentColor" stroke="currentColor" stroke-linejoin="round" stroke-width="1" />
</svg>

After

Width:  |  Height:  |  Size: 787 B

View File

Before

Width:  |  Height:  |  Size: 196 B

After

Width:  |  Height:  |  Size: 196 B

View File

Before

Width:  |  Height:  |  Size: 184 B

After

Width:  |  Height:  |  Size: 184 B

View File

@@ -0,0 +1,84 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
/**
* Generate icons.html for the jinja templates of the simple theme.
*/
import { dirname, resolve } from "node:path";
import { argv } from "node:process";
import type { Config as SvgoConfig } from "svgo";
import { type IconSet, type JinjaMacro, jinja_svg_sets } from "./tools/jinja_svg_catalog.ts";
const HERE = `${dirname(argv[1] || "")}/`;
const dest: string = resolve(HERE, "../../searx/templates/simple/icons.html");
const searxng_jinja_macros: JinjaMacro[] = [
{ name: "icon", class: "sxng-icon-set" },
{ name: "icon_small", class: "sxng-icon-set-small" },
{ name: "icon_big", class: "sxng-icon-set-big" }
];
const sxng_icon_opts: SvgoConfig = {
multipass: true,
plugins: [
"removeTitle",
"removeXMLNS",
{
name: "addAttributesToSVGElement",
params: {
attributes: [{ "aria-hidden": "true" }]
}
}
]
};
const simple_icons: IconSet[] = [
{
base: resolve(HERE, "node_modules/ionicons/dist/svg"),
set: {
alert: "alert-outline.svg",
appstore: "apps-outline.svg",
book: "book-outline.svg",
close: "close-outline.svg",
download: "download-outline.svg",
"ellipsis-vertical": "ellipsis-vertical-outline.svg",
"file-tray-full": "file-tray-full-outline.svg",
film: "film-outline.svg",
globe: "globe-outline.svg",
heart: "heart-outline.svg",
image: "image-outline.svg",
layers: "layers-outline.svg",
leecher: "arrow-down.svg",
location: "location-outline.svg",
magnet: "magnet-outline.svg",
"musical-notes": "musical-notes-outline.svg",
"navigate-down": "chevron-down-outline.svg",
"navigate-left": "chevron-back-outline.svg",
"navigate-right": "chevron-forward-outline.svg",
"navigate-up": "chevron-up-outline.svg",
people: "people-outline.svg",
play: "play-outline.svg",
radio: "radio-outline.svg",
save: "save-outline.svg",
school: "school-outline.svg",
search: "search-outline.svg",
seeder: "swap-vertical.svg",
settings: "settings-outline.svg",
tv: "tv-outline.svg"
},
svgo_opts: sxng_icon_opts
},
// some of the ionicons are not suitable for a dark theme, we fixed the svg
// manually in src/svg/ionicons
// - https://github.com/searxng/searxng/pull/4284#issuecomment-2680550342
{
base: resolve(HERE, "src/svg/ionicons"),
set: {
"information-circle": "information-circle-outline.svg",
newspaper: "newspaper-outline.svg"
},
svgo_opts: sxng_icon_opts
}
];
jinja_svg_sets(dest, searxng_jinja_macros, simple_icons);

View File

@@ -0,0 +1,64 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import fs from "node:fs";
import path from "node:path";
import sharp from "sharp";
import type { Config } from "svgo";
import { optimize as svgo } from "svgo";
// Mapping of src to dest
export type Src2Dest = {
// Name of the source file.
src: string;
// Name of the destination file.
dest: string;
};
/**
* Convert a list of SVG files to PNG.
*
* @param items - Array of SVG files (src: SVG, dest:PNG) to convert.
*/
export const svg2png = (items: Src2Dest[]): void => {
for (const item of items) {
fs.mkdirSync(path.dirname(item.dest), { recursive: true });
sharp(item.src)
.png({
force: true,
compressionLevel: 9,
palette: true
})
.toFile(item.dest)
.then((info) => {
console.log(`[svg2png] created ${item.dest} -- bytes: ${info.size}, w:${info.width}px, h:${info.height}px`);
})
.catch((error) => {
console.error(`ERROR: ${item.dest} -- ${error}`);
throw error;
});
}
};
/**
* Optimize SVG images for WEB.
*
* @param items - Array of SVG files (src:SVG, dest:SVG) to optimize.
* @param svgo_opts - Options passed to svgo.
*/
export const svg2svg = (items: Src2Dest[], svgo_opts: Config): void => {
for (const item of items) {
try {
fs.mkdirSync(path.dirname(item.dest), { recursive: true });
const raw = fs.readFileSync(item.src, "utf8");
const opt = svgo(raw, svgo_opts);
fs.writeFileSync(item.dest, opt.data);
console.log(`[svg2svg] optimized: ${item.dest} -- src: ${item.src}`);
} catch (error) {
console.error(`ERROR: optimize src: ${item.src} -- ${error}`);
throw error;
}
}
};

View File

@@ -0,0 +1,28 @@
{{--
SPDX-License-Identifier: AGPL-3.0-or-later
This is a EDGE https://edgejs.dev/ template to generate a HTML Jinja template
for the backend. Example output of this EDGE template:
- https://github.com/searxng/searxng/blob/master/searx/templates/simple/icons.html
--}}
{#
Catalog of SVG symbols that can be inserted into the HTML output of a Jinja
template. This file from:
client/simple/tools/icon_catalog.edge.html
#}
{%-
set catalog = {
@each((svg, name) in svg_catalog)
'{{{name}}}' : '{{{svg}}}',
@end
}
-%}
@each(macro in macros)
{% macro {{ macro.name }}(action, alt) -%}
{{ open_curly_brace }} catalog[action] | replace("{{__jinja_class_placeholder__}}", "{{ macro.class }}") | safe {{ close_curly_brace }}
{%- endmacro %}
@end

View File

@@ -0,0 +1,118 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import fs from "node:fs";
import { dirname, resolve } from "node:path";
import { Edge } from "edge.js";
import { type Config as SvgoConfig, optimize as svgo } from "svgo";
const __jinja_class_placeholder__ = "__jinja_class_placeholder__";
// A set of icons
export type IconSet = {
// Object of SVG icons, where property name is the name of the icon and value is the src of the SVG (relative to base)
set: Record<string, string>;
// Folder in which the SVG src files are located
base: string;
// svgo options for this set
svgo_opts: SvgoConfig;
};
// Mapping of icon name to SVG source file
type IconSVG = {
// Name of the icon isource file
name: string;
// Name of the destination file
src: string;
// Options passed to svgo
svgo_opts: SvgoConfig;
};
// Arguments to create a jinja macro
export type JinjaMacro = {
// Name of the jinja macro
name: string;
// SVG's class name (value of XML class attribute)
class: string;
};
/**
* Generate a jinja template with a catalog of SVG icons that can be
* used in other HTML jinja templates.
*
* @param dest - filename of the generate jinja template.
* @param macros - Jinja macros to create.
* @param items - Array of SVG items.
*/
export const jinja_svg_catalog = (dest: string, macros: JinjaMacro[], items: IconSVG[]): void => {
const svg_catalog: Record<string, string> = {};
const edge_template = resolve(import.meta.dirname, "jinja_svg_catalog.html.edge");
for (const item of items) {
// JSON.stringify & JSON.parse are used to create a deep copy of the item.svgo_opts object
const svgo_opts: SvgoConfig = JSON.parse(JSON.stringify(item.svgo_opts));
svgo_opts.plugins?.push({
name: "addClassesToSVGElement",
params: {
classNames: [__jinja_class_placeholder__]
}
});
try {
const raw = fs.readFileSync(item.src, "utf8");
const opt = svgo(raw, svgo_opts);
svg_catalog[item.name] = opt.data;
} catch (error) {
console.error(`ERROR: jinja_svg_catalog processing ${item.name} src: ${item.src} -- ${error}`);
throw error;
}
}
fs.mkdirSync(dirname(dest), { recursive: true });
const ctx = {
svg_catalog: svg_catalog,
macros: macros,
edge_template: edge_template,
__jinja_class_placeholder__: __jinja_class_placeholder__,
// see https://github.com/edge-js/edge/issues/162
open_curly_brace: "{{",
close_curly_brace: "}}"
};
const jinjatmpl = Edge.create().renderRawSync(fs.readFileSync(edge_template, "utf-8"), ctx);
fs.writeFileSync(dest, jinjatmpl);
console.log(`[jinja_svg_catalog] created: ${dest}`);
};
/**
* Calls jinja_svg_catalog for a collection of icon sets where each set has its
* own parameters.
*
* @param dest - filename of the generate jinja template.
* @param macros - Jinja macros to create.
* @param sets - Array of SVG sets.
*/
export const jinja_svg_sets = (dest: string, macros: JinjaMacro[], sets: IconSet[]): void => {
const items: IconSVG[] = [];
const all: string[] = [];
for (const obj of sets) {
for (const [name, file] of Object.entries(obj.set)) {
if (all.includes(name)) {
throw new Error(`ERROR: ${name} has already been defined`);
}
all.push(name);
items.push({
name: name,
src: resolve(obj.base, file),
svgo_opts: obj.svgo_opts
});
}
}
jinja_svg_catalog(dest, macros, items);
};

View File

@@ -0,0 +1,45 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
/**
* Custom vite plugins to build the web-client components of the simple theme.
*
* HINT:
* This is an inital implementation for the migration of the build process
* from grunt to vite. For fully support (vite: build & serve) more work is
* needed.
*/
import type { Config } from "svgo";
import type { Plugin } from "vite";
import { type Src2Dest, svg2png, svg2svg } from "./img.ts";
/**
* Vite plugin to convert a list of SVG files to PNG.
*
* @param items - Array of SVG files (src: SVG, dest:PNG) to convert.
*/
export const plg_svg2png = (items: Src2Dest[]): Plugin => {
return {
name: "searxng-simple-svg2png",
apply: "build",
writeBundle: () => {
svg2png(items);
}
};
};
/**
* Vite plugin to optimize SVG images for WEB.
*
* @param items - Array of SVG files (src:SVG, dest:SVG) to optimize.
* @param svgo_opts - Options passed to svgo.
*/
export const plg_svg2svg = (items: Src2Dest[], svgo_opts: Config): Plugin => {
return {
name: "searxng-simple-svg2svg",
apply: "build",
writeBundle: () => {
svg2svg(items, svgo_opts);
}
};
};

View File

@@ -0,0 +1,40 @@
{
"$schema": "https://json.schemastore.org/tsconfig.json",
"compilerOptions": {
"lib": ["DOM", "DOM.Iterable", "ES2022"],
"module": "ESNext",
"moduleResolution": "Bundler",
"target": "ES2022",
"allowImportingTsExtensions": true,
"allowJs": true,
"checkJs": true,
"esModuleInterop": true,
"incremental": true,
"noEmit": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"strict": true,
"allowUnreachableCode": false,
"allowUnusedLabels": false,
"exactOptionalPropertyTypes": false,
"forceConsistentCasingInFileNames": true,
"isolatedModules": true,
"noFallthroughCasesInSwitch": true,
"noImplicitOverride": true,
"noImplicitReturns": true,
"noPropertyAccessFromIndexSignature": false,
"noUncheckedIndexedAccess": true,
"noUncheckedSideEffectImports": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"verbatimModuleSyntax": true,
"baseUrl": ".",
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo",
"types": ["vite/client"]
},
"include": ["./"],
"exclude": ["./node_modules/"]
}

View File

@@ -0,0 +1,190 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
/**
* CONFIG: https://vite.dev/config/
*/
import { resolve } from "node:path";
import { constants as zlibConstants } from "node:zlib";
import browserslistToEsbuild from "browserslist-to-esbuild";
import { browserslistToTargets } from "lightningcss";
import type { PreRenderedAsset } from "rolldown";
import type { Config } from "svgo";
import type { UserConfig } from "vite";
import analyzer from "vite-bundle-analyzer";
import manifest from "./package.json" with { type: "json" };
import { plg_svg2png, plg_svg2svg } from "./tools/plg.ts";
const ROOT = "../../"; // root of the git repository
const PATH = {
brand: "src/brand/",
dist: resolve(ROOT, "searx/static/themes/simple/"),
modules: "node_modules/",
src: "src/",
templates: resolve(ROOT, "searx/templates/simple/")
} as const;
const svg2svg_opts: Config = {
plugins: [{ name: "preset-default" }, "sortAttrs", "convertStyleToAttrs"]
};
const svg2svg_favicon_opts: Config = {
plugins: [{ name: "preset-default" }, "sortAttrs"]
};
export default {
base: "/static/themes/simple/",
publicDir: "static/",
build: {
target: browserslistToEsbuild(manifest.browserslist),
assetsDir: "",
outDir: PATH.dist,
manifest: "manifest.json",
emptyOutDir: true,
sourcemap: true,
rolldownOptions: {
input: {
// build CSS files
"searxng-ltr.css": `${PATH.src}/less/style-ltr.less`,
"searxng-rtl.css": `${PATH.src}/less/style-rtl.less`,
"rss.css": `${PATH.src}/less/rss.less`,
// build script files
"searxng.core": `${PATH.src}/js/core/index.ts`,
// ol pkg
ol: `${PATH.src}/js/pkg/ol.ts`,
"ol.css": `${PATH.modules}/ol/ol.css`
},
// file naming conventions / pathnames are relative to outDir (PATH.dist)
output: {
entryFileNames: "js/[name].min.js",
chunkFileNames: "js/[name].min.js",
assetFileNames: ({ names }: PreRenderedAsset): string => {
const [name] = names;
const extension = name?.split(".").pop();
switch (extension) {
case "css":
return "css/[name].min[extname]";
case "js":
return "js/[name].min[extname]";
case "png":
case "svg":
return "img/[name][extname]";
default:
console.warn("Unknown asset:", name);
return "[name][extname]";
}
}
}
}
}, // end: build
plugins: [
// -- bundle analyzer
analyzer({
enabled: process.env.VITE_BUNDLE_ANALYZE === "true",
analyzerPort: "auto",
summary: true,
reportTitle: manifest.name,
// sidecars with max compression
gzipOptions: {
level: zlibConstants.Z_BEST_COMPRESSION
},
brotliOptions: {
params: {
[zlibConstants.BROTLI_PARAM_QUALITY]: zlibConstants.BROTLI_MAX_QUALITY
}
}
}),
// -- svg images
plg_svg2svg(
[
{
src: `${PATH.src}/svg/empty_favicon.svg`,
dest: `${PATH.dist}/img/empty_favicon.svg`
},
{
src: `${PATH.src}/svg/select-dark.svg`,
dest: `${PATH.dist}/img/select-dark.svg`
},
{
src: `${PATH.src}/svg/select-light.svg`,
dest: `${PATH.dist}/img/select-light.svg`
}
],
svg2svg_opts
),
// SearXNG brand (static)
plg_svg2png([
{
src: `${PATH.brand}/searxng-wordmark.svg`,
dest: `${PATH.dist}/img/favicon.png`
},
{
src: `${PATH.brand}/searxng.svg`,
dest: `${PATH.dist}/img/searxng.png`
}
]),
// -- svg
plg_svg2svg(
[
{
src: `${PATH.brand}/searxng.svg`,
dest: `${PATH.dist}/img/searxng.svg`
},
{
src: `${PATH.brand}/img_load_error.svg`,
dest: `${PATH.dist}/img/img_load_error.svg`
}
],
svg2svg_opts
),
// -- favicon
plg_svg2svg(
[
{
src: `${PATH.brand}/searxng-wordmark.svg`,
dest: `${PATH.dist}/img/favicon.svg`
}
],
svg2svg_favicon_opts
),
// -- simple templates
plg_svg2svg(
[
{
src: `${PATH.brand}/searxng-wordmark.svg`,
dest: `${PATH.templates}/searxng-wordmark.min.svg`
}
],
svg2svg_opts
)
], // end: plugins
// FIXME: missing CCS sourcemaps!!
// see: https://github.com/vitejs/vite/discussions/13845#discussioncomment-11992084
//
// what I have tried so far (see config below):
//
// - build.sourcemap
// - esbuild.sourcemap
// - css.preprocessorOptions.less.sourceMap
css: {
transformer: "lightningcss",
lightningcss: {
targets: browserslistToTargets(manifest.browserslist)
},
devSourcemap: true
} // end: css
} satisfies UserConfig;

View File

@@ -0,0 +1,26 @@
contents:
repositories:
- https://dl-cdn.alpinelinux.org/alpine/edge/main
- https://dl-cdn.alpinelinux.org/alpine/edge/community
packages:
- alpine-base
- build-base
- python3-dev
- uv
- brotli
entrypoint:
command: /bin/sh -l
work-dir: /usr/local/searxng/
environment:
PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SSL_CERT_DIR: /etc/ssl/certs
SSL_CERT_FILE: /etc/ssl/certs/ca-certificates.crt
HISTFILE: /dev/null
archs:
- x86_64
- aarch64
- armv7

62
container/base.yml Normal file
View File

@@ -0,0 +1,62 @@
contents:
repositories:
- https://dl-cdn.alpinelinux.org/alpine/edge/main
packages:
- alpine-baselayout
- ca-certificates
- ca-certificates-bundle
- musl-locales
- musl-locales-lang
- tzdata
- busybox
- python3
- wget
entrypoint:
command: /bin/sh -l
work-dir: /usr/local/searxng/
accounts:
groups:
- groupname: searxng
gid: 977
users:
- username: searxng
uid: 977
shell: /bin/ash
environment:
PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SSL_CERT_DIR: /etc/ssl/certs
SSL_CERT_FILE: /etc/ssl/certs/ca-certificates.crt
HISTFILE: /dev/null
CONFIG_PATH: /etc/searxng
DATA_PATH: /var/cache/searxng
paths:
# Workdir
- path: /usr/local/searxng/
type: directory
uid: 977
gid: 977
permissions: 0o555
# Config volume
- path: /etc/searxng/
type: directory
uid: 977
gid: 977
permissions: 0o755
# Data volume
- path: /var/cache/searxng/
type: directory
uid: 977
gid: 977
permissions: 0o755
archs:
- x86_64
- aarch64
- armv7

View File

@@ -0,0 +1,35 @@
FROM ghcr.io/searxng/base:searxng-builder AS builder
COPY ./requirements.txt ./requirements-server.txt ./
ENV UV_NO_MANAGED_PYTHON="true"
ENV UV_NATIVE_TLS="true"
ARG TIMESTAMP_VENV="0"
RUN --mount=type=cache,id=uv,target=/root/.cache/uv set -eux -o pipefail; \
export SOURCE_DATE_EPOCH="$TIMESTAMP_VENV"; \
uv venv; \
uv pip install --requirements ./requirements.txt --requirements ./requirements-server.txt; \
uv cache prune --ci; \
find ./.venv/lib/ -type f -exec strip --strip-unneeded {} + || true; \
find ./.venv/lib/ -type d -name "__pycache__" -exec rm -rf {} +; \
find ./.venv/lib/ -type f -name "*.pyc" -delete; \
python -m compileall -q -f -j 0 --invalidation-mode=unchecked-hash ./.venv/lib/; \
find ./.venv/lib/python*/site-packages/*.dist-info/ -type f -name "RECORD" -exec sort -t, -k1,1 -o {} {} \;; \
find ./.venv/ -exec touch -h --date="@$TIMESTAMP_VENV" {} +
# use "--exclude=./searx/version_frozen.py" when actions/runner-images updates to Podman 5.0+
COPY ./searx/ ./searx/
ARG TIMESTAMP_SETTINGS="0"
RUN set -eux -o pipefail; \
python -m compileall -q -f -j 0 --invalidation-mode=unchecked-hash ./searx/; \
find ./searx/static/ -type f \
\( -name "*.html" -o -name "*.css" -o -name "*.js" -o -name "*.svg" \) \
-exec gzip -9 -k {} + \
-exec brotli -9 -k {} + \
-exec gzip --test {}.gz + \
-exec brotli --test {}.br +; \
touch -c --date="@$TIMESTAMP_SETTINGS" ./searx/settings.yml

44
container/dist.dockerfile Normal file
View File

@@ -0,0 +1,44 @@
ARG CONTAINER_IMAGE_ORGANIZATION="searxng"
ARG CONTAINER_IMAGE_NAME="searxng"
FROM localhost/$CONTAINER_IMAGE_ORGANIZATION/$CONTAINER_IMAGE_NAME:builder AS builder
FROM ghcr.io/searxng/base:searxng AS dist
COPY --chown=searxng:searxng --from=builder /usr/local/searxng/.venv/ ./.venv/
COPY --chown=searxng:searxng --from=builder /usr/local/searxng/searx/ ./searx/
COPY --chown=searxng:searxng ./container/ ./
#COPY --chown=searxng:searxng ./searx/version_frozen.py ./searx/
ARG CREATED="0001-01-01T00:00:00Z"
ARG VERSION="unknown"
ARG VCS_URL="unknown"
ARG VCS_REVISION="unknown"
LABEL org.opencontainers.image.created="$CREATED" \
org.opencontainers.image.description="SearXNG is a metasearch engine. Users are neither tracked nor profiled." \
org.opencontainers.image.documentation="https://docs.searxng.org/admin/installation-docker" \
org.opencontainers.image.licenses="AGPL-3.0-or-later" \
org.opencontainers.image.revision="$VCS_REVISION" \
org.opencontainers.image.source="$VCS_URL" \
org.opencontainers.image.title="SearXNG" \
org.opencontainers.image.url="https://searxng.org" \
org.opencontainers.image.version="$VERSION"
ENV SEARXNG_VERSION="$VERSION" \
SEARXNG_SETTINGS_PATH="$CONFIG_PATH/settings.yml" \
GRANIAN_PROCESS_NAME="searxng" \
GRANIAN_INTERFACE="wsgi" \
GRANIAN_HOST="::" \
GRANIAN_PORT="8080" \
GRANIAN_WEBSOCKETS="false" \
GRANIAN_BLOCKING_THREADS="4" \
GRANIAN_WORKERS_KILL_TIMEOUT="30s" \
GRANIAN_BLOCKING_THREADS_IDLE_TIMEOUT="5m"
# "*_PATH" ENVs are defined in base images
VOLUME $CONFIG_PATH
VOLUME $DATA_PATH
EXPOSE 8080
ENTRYPOINT ["/usr/local/searxng/entrypoint.sh"]

132
container/entrypoint.sh Executable file
View File

@@ -0,0 +1,132 @@
#!/bin/sh
# shellcheck shell=dash
set -u
# Check if it's a valid file
check_file() {
local target="$1"
if [ ! -f "$target" ]; then
cat <<EOF
!!!
!!! ERROR
!!! "$target" is not a valid file, exiting...
!!!
EOF
exit 127
fi
}
# Check if it's a valid directory
check_directory() {
local target="$1"
if [ ! -d "$target" ]; then
cat <<EOF
!!!
!!! ERROR
!!! "$target" is not a valid directory, exiting...
!!!
EOF
exit 127
fi
}
setup_ownership() {
local target="$1"
local type="$2"
case "$type" in
file | directory) ;;
*)
cat <<EOF
!!!
!!! ERROR
!!! "$type" is not a valid type, exiting...
!!!
EOF
exit 1
;;
esac
target_ownership=$(stat -c %U:%G "$target")
if [ "$target_ownership" != "searxng:searxng" ]; then
if [ "${FORCE_OWNERSHIP:-true}" = true ] && [ "$(id -u)" -eq 0 ]; then
chown -R searxng:searxng "$target"
else
cat <<EOF
!!!
!!! WARNING
!!! "$target" $type is not owned by "searxng:searxng"
!!! This may cause issues when running SearXNG
!!!
!!! Expected "searxng:searxng"
!!! Got "$target_ownership"
!!!
EOF
fi
fi
}
# Handle volume mounts
volume_handler() {
local target="$1"
check_directory "$target"
setup_ownership "$target" "directory"
}
# Handle configuration file updates
config_handler() {
local target="$1"
local template="$2"
local new_template_target="$target.new"
# Create/Update the configuration file
if [ -f "$target" ]; then
setup_ownership "$target" "file"
if [ "$template" -nt "$target" ]; then
cp -pfT "$template" "$new_template_target"
cat <<EOF
...
... INFORMATION
... Update available for "$target"
... It is recommended to update the configuration file to ensure proper functionality
...
... New version placed at "$new_template_target"
... Please review and merge changes
...
EOF
fi
else
cat <<EOF
...
... INFORMATION
... "$target" does not exist, creating from template...
...
EOF
cp -pfT "$template" "$target"
sed -i "s/ultrasecretkey/$(head -c 24 /dev/urandom | base64 | tr -dc 'a-zA-Z0-9')/g" "$target"
fi
check_file "$target"
}
cat <<EOF
SearXNG $SEARXNG_VERSION
EOF
# Check for volume mounts
volume_handler "$CONFIG_PATH"
volume_handler "$DATA_PATH"
# Check for files
config_handler "$SEARXNG_SETTINGS_PATH" "/usr/local/searxng/searx/settings.yml"
update-ca-certificates
exec /usr/local/searxng/.venv/bin/granian searx.webapp:app

View File

@@ -1,172 +0,0 @@
#!/bin/sh
help() {
cat <<EOF
Command line:
-h Display this help
-d Dry run to update the configuration files.
-f Always update on the configuration files (existing files are renamed with
the .old suffix). Without this option, the new configuration files are
copied with the .new suffix
Environment variables:
INSTANCE_NAME settings.yml : general.instance_name
AUTOCOMPLETE settings.yml : search.autocomplete
BASE_URL settings.yml : server.base_url
MORTY_URL settings.yml : result_proxy.url
MORTY_KEY settings.yml : result_proxy.key
BIND_ADDRESS uwsgi bind to the specified TCP socket using HTTP protocol.
Default value: ${DEFAULT_BIND_ADDRESS}
Volume:
/etc/searxng the docker entry point copies settings.yml and uwsgi.ini in
this directory (see the -f command line option)"
EOF
}
export DEFAULT_BIND_ADDRESS="0.0.0.0:8080"
export BIND_ADDRESS="${BIND_ADDRESS:-${DEFAULT_BIND_ADDRESS}}"
# Parse command line
FORCE_CONF_UPDATE=0
DRY_RUN=0
while getopts "fdh" option
do
case $option in
f) FORCE_CONF_UPDATE=1 ;;
d) DRY_RUN=1 ;;
h)
help
exit 0
;;
*)
echo "unknow option ${option}"
exit 42
;;
esac
done
get_searxng_version(){
su searxng -c \
'python3 -c "import six; import searx.version; six.print_(searx.version.VERSION_STRING)"' \
2>/dev/null
}
SEARXNG_VERSION="$(get_searxng_version)"
export SEARXNG_VERSION
echo "SearXNG version ${SEARXNG_VERSION}"
# helpers to update the configuration files
patch_uwsgi_settings() {
CONF="$1"
}
patch_searxng_settings() {
CONF="$1"
# Make sure that there is trailing slash at the end of BASE_URL
# see https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Shell-Parameter-Expansion
export BASE_URL="${BASE_URL%/}/"
# update settings.yml
sed -i \
-e "s|base_url: false|base_url: ${BASE_URL}|g" \
-e "s/instance_name: \"SearXNG\"/instance_name: \"${INSTANCE_NAME}\"/g" \
-e "s/autocomplete: \"\"/autocomplete: \"${AUTOCOMPLETE}\"/g" \
-e "s/ultrasecretkey/$(openssl rand -hex 32)/g" \
"${CONF}"
# Morty configuration
if [ -n "${MORTY_KEY}" ] && [ -n "${MORTY_URL}" ]; then
sed -i -e "s/image_proxy: false/image_proxy: true/g" \
"${CONF}"
cat >> "${CONF}" <<-EOF
# Morty configuration
result_proxy:
url: ${MORTY_URL}
key: !!binary "${MORTY_KEY}"
EOF
fi
}
update_conf() {
FORCE_CONF_UPDATE=$1
CONF="$2"
NEW_CONF="${2}.new"
OLD_CONF="${2}.old"
REF_CONF="$3"
PATCH_REF_CONF="$4"
if [ -f "${CONF}" ]; then
if [ "${REF_CONF}" -nt "${CONF}" ]; then
# There is a new version
if [ "$FORCE_CONF_UPDATE" -ne 0 ]; then
# Replace the current configuration
printf '⚠️ Automaticaly update %s to the new version\n' "${CONF}"
if [ ! -f "${OLD_CONF}" ]; then
printf 'The previous configuration is saved to %s\n' "${OLD_CONF}"
mv "${CONF}" "${OLD_CONF}"
fi
cp "${REF_CONF}" "${CONF}"
$PATCH_REF_CONF "${CONF}"
else
# Keep the current configuration
printf '⚠️ Check new version %s to make sure SearXNG is working properly\n' "${NEW_CONF}"
cp "${REF_CONF}" "${NEW_CONF}"
$PATCH_REF_CONF "${NEW_CONF}"
fi
else
printf 'Use existing %s\n' "${CONF}"
fi
else
printf 'Create %s\n' "${CONF}"
cp "${REF_CONF}" "${CONF}"
$PATCH_REF_CONF "${CONF}"
fi
}
# searx compatibility: copy /etc/searx/* to /etc/searxng/*
SEARX_CONF=0
if [ -f "/etc/searx/settings.yml" ]; then
if [ ! -f "${SEARXNG_SETTINGS_PATH}" ]; then
printf '⚠️ /etc/searx/settings.yml is copied to /etc/searxng\n'
cp "/etc/searx/settings.yml" "${SEARXNG_SETTINGS_PATH}"
fi
SEARX_CONF=1
fi
if [ -f "/etc/searx/uwsgi.ini" ]; then
printf '⚠️ /etc/searx/uwsgi.ini is ignored. Use the volume /etc/searxng\n'
SEARX_CONF=1
fi
if [ "$SEARX_CONF" -eq "1" ]; then
printf '⚠️ The deprecated volume /etc/searx is mounted. Please update your configuration to use /etc/searxng ⚠️\n'
cat << EOF > /etc/searx/deprecated_volume_read_me.txt
This Docker image uses the volume /etc/searxng
Update your configuration:
* remove uwsgi.ini (or very carefully update your existing uwsgi.ini using https://github.com/searxng/searxng/blob/master/dockerfiles/uwsgi.ini )
* mount /etc/searxng instead of /etc/searx
EOF
fi
# end of searx compatibility
# make sure there are uwsgi settings
update_conf "${FORCE_CONF_UPDATE}" "${UWSGI_SETTINGS_PATH}" "/usr/local/searxng/dockerfiles/uwsgi.ini" "patch_uwsgi_settings"
# make sure there are searxng settings
update_conf "${FORCE_CONF_UPDATE}" "${SEARXNG_SETTINGS_PATH}" "/usr/local/searxng/searx/settings.yml" "patch_searxng_settings"
# dry run (to update configuration files, then inspect them)
if [ $DRY_RUN -eq 1 ]; then
printf 'Dry run\n'
exit
fi
unset MORTY_KEY
# Start uwsgi
printf 'Listen on %s\n' "${BIND_ADDRESS}"
exec su-exec searxng:searxng uwsgi --master --http-socket "${BIND_ADDRESS}" "${UWSGI_SETTINGS_PATH}"

View File

@@ -1,49 +0,0 @@
[uwsgi]
# Who will run the code
uid = searxng
gid = searxng
# Number of workers (usually CPU count)
workers = %k
threads = 4
# The right granted on the created socket
chmod-socket = 666
# Plugin to use and interpretor config
single-interpreter = true
master = true
plugin = python3
lazy-apps = true
enable-threads = true
# Module to import
module = searx.webapp
# Virtualenv and python path
pythonpath = /usr/local/searxng/
chdir = /usr/local/searxng/searx/
# automatically set processes name to something meaningful
auto-procname = true
# Disable request logging for privacy
disable-logging = true
log-5xx = true
# Set the max size of a request (request-body excluded)
buffer-size = 8192
# No keep alive
# See https://github.com/searx/searx-docker/issues/24
add-header = Connection: close
# uwsgi serves the static files
# expires set to one year since there are hashes
static-map = /static=/usr/local/searxng/searx/static
static-expires = /* 31557600
static-gzip-all = True
offload-threads = %k
# Cache
cache2 = name=searxngcache,items=2000,blocks=2000,blocksize=4096,bitmap=1

View File

@@ -4,3 +4,4 @@ stylesheet = searxng.css
[options] [options]
touch_icon = touch_icon =
globaltoc_maxdepth = 5

View File

@@ -0,0 +1,69 @@
===============================
Answer CAPTCHA from server's IP
===============================
With a SSH tunnel we can send requests from server's IP and solve a CAPTCHA that
blocks requests from this IP. If your SearXNG instance is hosted at
``example.org`` and your login is ``user`` you can setup a proxy simply by
:man:`ssh`:
.. code:: bash
# SOCKS server: socks://127.0.0.1:8080
$ ssh -q -N -D 8080 user@example.org
The ``socks://localhost:8080`` from above can be tested by:
.. tabs::
.. group-tab:: server's IP
.. code:: bash
$ curl -x socks://127.0.0.1:8080 http://ipecho.net/plain
n.n.n.n
.. group-tab:: desktop's IP
.. code:: bash
$ curl http://ipecho.net/plain
x.x.x.x
In the settings of the WEB browser open the *"Network Settings"* and setup a
proxy on ``SOCKS5 127.0.0.1:8080`` (see screenshot below). In the WEB browser
check the IP from the server is used:
- http://ipecho.net/plain
Now open the search engine that blocks requests from your server's IP. If you
have `issues with the qwant engine
<https://github.com/searxng/searxng/issues/2011#issuecomment-1553317619>`__,
solve the CAPTCHA from `qwant.com <https://www.qwant.com/>`__.
-----
.. tabs::
.. group-tab:: Firefox
.. kernel-figure:: answer-captcha/ffox-setting-proxy-socks.png
:alt: FFox proxy on SOCKS5, 127.0.0.1:8080
Firefox's network settings
.. admonition:: :man:`ssh` manual:
-D [bind_address:]port
Specifies a local “dynamic” application-level port forwarding. This works
by allocating a socket to listen to port on the local side .. Whenever a
connection is made to this port, the connection is forwarded over the
secure channel, and the application protocol is then used to determine
where to connect to from the remote machine .. ssh will act as a SOCKS
server ..
-N
Do not execute a remote command. This is useful for just forwarding ports.

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

View File

@@ -59,7 +59,7 @@ Sample response
"shortcut": "bb" "shortcut": "bb"
}, },
], ],
"instance_name": "searx", "instance_name": "SearXNG",
"locales": { "locales": {
"de": "Deutsch (German)", "de": "Deutsch (German)",
"en": "English", "en": "English",
@@ -69,10 +69,6 @@ Sample response
{ {
"enabled": true, "enabled": true,
"name": "HTTPS rewrite" "name": "HTTPS rewrite"
},
{
"enabled": false,
"name": "Vim-like hotkeys"
} }
], ],
"safe_search": 0 "safe_search": 0
@@ -88,9 +84,9 @@ HTML of the site. URL of the SearXNG instance and values are customizable.
.. code:: html .. code:: html
<form method="post" action="https://example.org/"> <form method="post" action="https://example.org/">
<!-- search --> <input type="text" name="q" /> <!-- search --> <input type="text" name="q">
<!-- categories --> <input type="hidden" name="categories" value="general,social media" /> <!-- categories --> <input type="hidden" name="categories" value="general,social media">
<!-- language --> <input type="hidden" name="lang" value="all" /> <!-- language --> <input type="hidden" name="lang" value="all">
<!-- locale --> <input type="hidden" name="locale" value="en" /> <!-- locale --> <input type="hidden" name="locale" value="en">
<!-- date filter --> <input type="hidden" name="time_range" value="month" /> <!-- date filter --> <input type="hidden" name="time_range" value="month">
</form> </form>

Some files were not shown because too many files have changed in this diff Show More