30 Commits

Author SHA1 Message Date
Bnyro ef6290c8cd [furo] add some project links to the online documentation (#3408)
- add button for editing docs source on GitHub
- add links to GitHub repository and public instances (searx.space)

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-05-07 16:19:28 +02:00
Markus Heiser 89aa588b27 [furo] customize CSS - code.literal nowrap & improve large table layout (#3408)
The readability can be improve with the following two changes:

Slightly increase the content width to make the engine list more readable::

    .content {
      width: 52em;    /*  instead of 46em */
    }

To avoid word wrap in bang::

    p code.literal {
      text-wrap: nowrap;
    }

Sugested-by: https://github.com/searxng/searxng/pull/3408#issuecomment-2094082144
2026-05-07 16:19:28 +02:00
Markus Heiser 50626ef150 [furo] remove .. contents:: directives (#3408)
The directive creates a table of contents for the page.  However, Furo includes
a table of contents already in the sidebar.  It is, thus, recommended to
removing the `.. contents::` directive.

[1] https://github.com/pradyunsg/furo/issues/88#issuecomment-803297274

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-05-07 16:19:28 +02:00
Markus Heiser 2f72fc4df2 [docs] switch sphinx theme from pallets to furo (#3408)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-05-07 16:19:28 +02:00
Markus Heiser 130cea600d [fix] Startpage engine fails when date field is string (not integer: TypeError) (#6053)
In order to avoid an abort with an error, type- and value- errors are catched,
the publishDate cannot then be determined, but the result item remains.

[1] https://github.com/searxng/searxng/pull/5980/changes#r3091479655

Replaces the PRs:

- https://github.com/searxng/searxng/pull/5980
- https://github.com/searxng/searxng/pull/6006

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

Suggested-by: @Bnyro [1]

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-05-07 14:56:14 +02:00
Markus Heiser ea63c19b27 [doc] add "SearXNG BM25 Reranker" to the list of external plugins (#6052)
[1] https://github.com/searxng/searxng/issues/6039#issuecomment-4370220040

Suggested-by: @Oaklight [1]
2026-05-07 13:11:37 +02:00
Bnyro a9909c4977 [fix] karmasearch: videos engine in wrong category 2026-05-06 22:23:09 +02:00
Fabian Freund a480560371 [fix] wikidata: crashes when querying due to missing escaping of quotation marks 2026-05-06 21:13:27 +02:00
Bnyro 330d56bba9 [mod] result templates: move iframe to macro and fix page rendering for non-YouTube links (#5960)
This PR moves the `iframe` logic into a macro, so that `videos.html` and `general.html` both can benefit from the workaround to fix YouTube results by @return42 in https://github.com/searxng/searxng/pull/5858

It also fixes that only YouTube videos contained the closing `>` after `<iframe border="0" ...`, the regression has been caused by https://github.com/searxng/searxng/pull/5858

## Why is this change important?

Currently, the page breaks if there's any non-YouTube Iframe

Here, the page ends in the middle of the results and the footer and page number selector are not visible.
2026-05-06 09:29:20 +02:00
Markus Heiser 36bcd6b551 [fix] engine: wikidata - improvement of typing (#5993)
The type checker in my IDE shut down after over 500 errors / after this
patch there are still 125 criticisms, however its an improvement and a better
starting point.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-05-06 08:39:55 +02:00
Markus Heiser 8fabaf86b6 [fix] engine: wikidata - initialization fails with KeyError (#5993)
The response to QUERY_PROPERTY_NAMES has changed; fields without the `name`
field are now also returned.

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

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-05-06 08:39:55 +02:00
Bnyro d501b0420a [mod] yep: fix engine due to new API layout (#6048)
Apparently, YEP no longer supports images and news search.

Also, the naming of the query parameters changed a bit.

Closes: https://github.com/searxng/searxng/issues/6047
2026-05-06 08:17:19 +02:00
Sai Asish Y 0ac5254b8e [fix] mwmbl: crash if there's no result description available 2026-05-05 21:40:20 +02:00
dependabot[bot] d3566fe8a8 [upd] pypi: Bump wlc from 1.17.2 to 2.0.0 (#6011)
Bumps [wlc](https://github.com/WeblateOrg/wlc) from 1.17.2 to 2.0.0.
- [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.17.2...2.0.0)

---
updated-dependencies:
- dependency-name: wlc
  dependency-version: 2.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...
2026-05-05 10:04:14 +02:00
Markus Heiser 93fe8cac1e [doc] fix issues reported since Sphinx v9.1.0
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-05-05 09:57:42 +02:00
Markus Heiser 12b7fd341c [upd] pypi: Update docutils (0.22.4) and Sphinx (9.1.0)
Sphinx 9.1.0 dropped Python 3.11 support [1].

[1] https://www.sphinx-doc.org/en/master/changes/index.html#release-9-1-0-released-dec-31-2025

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-05-05 09:57:42 +02:00
dependabot[bot] aefc3c3166 [upd] web-client (simple): Bump the minor group (#6041)
Bumps the minor group in /client/simple with 2 updates: [stylelint](https://github.com/stylelint/stylelint) and [vite-bundle-analyzer](https://github.com/nonzzz/vite-bundle-analyzer).


Updates `stylelint` from 17.9.0 to 17.9.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/17.9.0...17.9.1)

Updates `vite-bundle-analyzer` from 1.3.7 to 1.3.8
- [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.3.7...v1.3.8)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 17.9.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: vite-bundle-analyzer
  dependency-version: 1.3.8
  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>
2026-05-02 22:59:57 +02:00
dependabot[bot] cd75013c92 [upd] pypi: Bump typer from 0.25.0 to 0.25.1 in the minor group (#6040)
Bumps the minor group with 1 update: [typer](https://github.com/fastapi/typer).


Updates `typer` from 0.25.0 to 0.25.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.25.0...0.25.1)

---
updated-dependencies:
- dependency-name: typer
  dependency-version: 0.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor
2026-05-02 06:12:35 +02:00
dependabot[bot] cba0cffa8f [upd] pypi: Bump the minor group across 1 directory with 4 updates (#6037)
Bumps the minor group with 4 updates in the / directory: [certifi](https://github.com/certifi/python-certifi), [typer](https://github.com/fastapi/typer), [granian](https://github.com/emmett-framework/granian) and [basedpyright](https://github.com/detachhead/basedpyright).


Updates `certifi` from 2026.2.25 to 2026.4.22
- [Commits](https://github.com/certifi/python-certifi/compare/2026.02.25...2026.04.22)

Updates `typer` from 0.24.1 to 0.25.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.24.1...0.25.0)

Updates `granian` from 2.7.3 to 2.7.4
- [Release notes](https://github.com/emmett-framework/granian/releases)
- [Commits](https://github.com/emmett-framework/granian/compare/v2.7.3...v2.7.4)

Updates `basedpyright` from 1.39.2 to 1.39.3
- [Release notes](https://github.com/detachhead/basedpyright/releases)
- [Commits](https://github.com/detachhead/basedpyright/compare/v1.39.2...v1.39.3)
2026-04-29 07:32:28 +02:00
Markus Heiser f96ac331ed [upd] pypi: Bump lxml from 6.0.4 to 6.1.0 (#6036)
Release 6.1.0 fixes a possible external entity injection (XXE) vulnerability in
``iterparse()`` and the ``ETCompatXMLParser``.

https://github.com/lxml/lxml/blob/64ed06c1a0c1833bfac99f209f16c3bdfddfde79/CHANGES.txt#L42-L66

- Closes https://github.com/searxng/searxng/issues/6025

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-04-29 07:11:13 +02:00
github-actions[bot] 616d6f4818 [data] update searx.data - update_ahmia_blacklist.py (#6026) 2026-04-29 06:49:10 +02:00
github-actions[bot] 6fbb24b32d [data] update searx.data - update_external_bangs.py (#6027) 2026-04-29 06:48:22 +02:00
github-actions[bot] 3674d915f5 [data] update searx.data - update_gsa_useragents.py (#6028) 2026-04-29 06:47:48 +02:00
github-actions[bot] d4254d5e8f [data] update searx.data - update_firefox_version.py (#6030) 2026-04-29 06:46:59 +02:00
github-actions[bot] 9a394b41ee [data] update searx.data - update_wikidata_units.py (#6029) 2026-04-29 06:46:29 +02:00
github-actions[bot] 9240b38d8a [data] update searx.data - update_currencies.py (#6031) 2026-04-29 06:29:56 +02:00
github-actions[bot] 3880960471 [data] update searx.data - update_engine_descriptions.py (#6033) 2026-04-29 06:28:55 +02:00
github-actions[bot] 494a7575d3 [data] update searx.data - update_engine_traits.py (#6032)
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2026-04-29 06:27:30 +02:00
Fabian Freund ed5955a5c7 [fix] Result.defaults_from() inverted logic (#6019)
The bug was introduced in commit 8769b7c6d (typification of result items); this
patch fixes the bug and also addresses the peculiarity that fields can be set
but contain no *usable* value:

If a field is set (exists) but contains an empty string or the value ``None``,
it is also considered *not set*. This also ensures that an integer 0 is
evaluated *as set*!

Co-Authored: Markus Heiser <markus.heiser@darmarit.de>
2026-04-28 17:42:29 +02:00
github-actions[bot] a7ac696b4a [l10n] update translations from Weblate (#6015)
54de6653b - 2026-04-15 - AndersNordh <andersnordh@noreply.codeberg.org>
e410bed58 - 2026-04-15 - AndersNordh <andersnordh@noreply.codeberg.org>

Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2026-04-24 15:08:49 +02:00
99 changed files with 10107 additions and 9218 deletions
+31 -8
View File
@@ -24,13 +24,13 @@
"mathjs": "^15.2.0",
"sharp": "~0.34.5",
"sort-package-json": "^3.6.1",
"stylelint": "^17.9.0",
"stylelint": "^17.9.1",
"stylelint-config-standard-less": "^4.1.0",
"stylelint-prettier": "^5.0.3",
"svgo": "^4.0.1",
"typescript": "~6.0.3",
"vite": "^8.0.10",
"vite-bundle-analyzer": "^1.3.7"
"vite-bundle-analyzer": "^1.3.8"
}
},
"node_modules/@babel/code-frame": {
@@ -417,6 +417,29 @@
"postcss-selector-parser": "^7.1.1"
}
},
"node_modules/@emnapi/core": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz",
"integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"@emnapi/wasi-threads": "1.2.1",
"tslib": "^2.4.0"
}
},
"node_modules/@emnapi/runtime": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz",
"integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"tslib": "^2.4.0"
}
},
"node_modules/@emnapi/wasi-threads": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz",
@@ -4036,9 +4059,9 @@
}
},
"node_modules/stylelint": {
"version": "17.9.0",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.9.0.tgz",
"integrity": "sha512-xO0jeY6z1/urFL5L/BZLmB1yYlbRiRMQnYH6ArZIDWJ+SZXGssOY7XoYb1JIv/L220+EBnwwJXJS4Mt/F96SvA==",
"version": "17.9.1",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.9.1.tgz",
"integrity": "sha512-THTmnAPJTrg/JhkTWZlSyrO+HUYMx6ELthIHeMyD2WOKqXIJUFQv2Yxn91bvUrZdbBJaW2dUuQdPST2wcQ6C3g==",
"dev": true,
"funding": [
{
@@ -4600,9 +4623,9 @@
}
},
"node_modules/vite-bundle-analyzer": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/vite-bundle-analyzer/-/vite-bundle-analyzer-1.3.7.tgz",
"integrity": "sha512-dYlW6iM0Gq7+uSEfXytDC+UjruUMgEKhXwQUbw4cJUgHA6FdEhpLgIrL5OZEyabrzVen0mZyfOSESyZ7nGyT8g==",
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/vite-bundle-analyzer/-/vite-bundle-analyzer-1.3.8.tgz",
"integrity": "sha512-IIk7WPhoYs7pyo75jwI+dFt7yykgjK7NY+dqnJtiZnyqP2k6NgPb3TY80FLFjtgnfk/o+OjI18+anKyeviCbRA==",
"dev": true,
"license": "MIT",
"bin": {
+2 -2
View File
@@ -38,12 +38,12 @@
"mathjs": "^15.2.0",
"sharp": "~0.34.5",
"sort-package-json": "^3.6.1",
"stylelint": "^17.9.0",
"stylelint": "^17.9.1",
"stylelint-config-standard-less": "^4.1.0",
"stylelint-prettier": "^5.0.3",
"svgo": "^4.0.1",
"typescript": "~6.0.3",
"vite": "^8.0.10",
"vite-bundle-analyzer": "^1.3.7"
"vite-bundle-analyzer": "^1.3.8"
}
}
+57
View File
@@ -0,0 +1,57 @@
.content {
width: 52em; /* instead of 46em */
}
p code.literal {
text-wrap: nowrap;
}
aside.sidebar {
border-color: lightsteelblue;
border-radius: 3pt;
}
p.sidebar-title, .sidebar p {
margin: 6pt;
}
.sidebar li,
.hlist li {
list-style-type: disclosure-closed;
}
.sphinxsidebar .current > a {
font-weight: bold;
}
/* admonitions with (rendered) reST markup examples (:class: rst-example)
*
* .. admonition:: title of the example
* :class: rst-example
* ....
*/
div.rst-example {
background-color: inherit;
margin: 0;
border-top: none;
border-right: 1px solid #ccc;
border-bottom: none;
border-left: none;
border-radius: none;
padding: 0;
}
div.rst-example > p.admonition-title {
font-family: Sans Serif;
font-style: italic;
font-size: 0.8em;
display: block;
border-bottom: 1px solid #ccc;
padding: 0.5em 1em;
text-align: right;
}
div.sphinx-tabs {
clear: both;
}
-151
View File
@@ -1,151 +0,0 @@
@import url("pocoo.css");
a, a.reference, a.footnote-reference {
color: #004b6b;
border-color: #004b6b;
}
a:hover {
color: #6d4100;
border-color: #6d4100;
}
p.version-warning {
background-color: #004b6b;
}
aside.sidebar {
background-color: whitesmoke;
border-color: lightsteelblue;
border-radius: 3pt;
}
div.sphinxsidebar p.caption {
display: none;
}
p.sidebar-title, .sidebar p {
margin: 6pt;
}
.sidebar li,
.hlist li {
list-style-type: disclosure-closed;
}
.sphinxsidebar .current > a {
font-weight: bold;
}
/* admonitions
*/
div.admonition, div.topic, nav.contents, div.toctree-wrapper {
background-color: #fafafa;
margin: 8px 0px;
padding: 1em;
border-radius: 3pt 0 0 3pt;
border-top: none;
border-right: none;
border-bottom: none;
border-left: 5pt solid #ccc;
list-style-type: disclosure-closed;
}
div.toctree-wrapper p.caption {
font-weight: normal;
font-size: 24px;
margin: 0 0 10px 0;
padding: 0;
line-height: 1;
display: inline;
}
p.admonition-title:after {
content: none;
}
.admonition.hint { border-color: #416dc0b0; }
.admonition.note { border-color: #6c856cb0; }
.admonition.tip { border-color: #85c5c2b0; }
.admonition.attention { border-color: #ecec97b0; }
.admonition.caution { border-color: #a6c677b0; }
.admonition.danger { border-color: #d46262b0; }
.admonition.important { border-color: #dfa3a3b0; }
.admonition.error { border-color: red; }
.admonition.warning { border-color: darkred; }
.admonition.admonition-generic-admonition-title {
border-color: #416dc0b0;
}
/* admonitions with (rendered) reST markup examples (:class: rst-example)
*
* .. admonition:: title of the example
* :class: rst-example
* ....
*/
div.rst-example {
background-color: inherit;
margin: 0;
border-top: none;
border-right: 1px solid #ccc;
border-bottom: none;
border-left: none;
border-radius: none;
padding: 0;
}
div.rst-example > p.admonition-title {
font-family: Sans Serif;
font-style: italic;
font-size: 0.8em;
display: block;
border-bottom: 1px solid #ccc;
padding: 0.5em 1em;
text-align: right;
}
/* code block in figures
*/
div.highlight pre {
text-align: left;
}
/* Table theme
*/
thead, tfoot {
background-color: #fff;
}
th:hover, td:hover {
background-color: #ffc;
}
thead th, tfoot th, tfoot td, tbody th {
background-color: #fffaef;
}
tbody tr:nth-child(odd) {
background-color: #fff;
}
tbody tr:nth-child(even) {
background-color: #fafafa;
}
caption {
font-family: Sans Serif;
padding: 0.5em;
margin: 0.5em 0 0.5em 0;
caption-side: top;
text-align: left;
}
div.sphinx-tabs {
clear: both;
}
-7
View File
@@ -1,7 +0,0 @@
[theme]
inherit = pocoo
stylesheet = searxng.css
[options]
touch_icon =
globaltoc_maxdepth = 5
-5
View File
@@ -4,11 +4,6 @@
Buildhosts
==========
.. contents::
:depth: 2
:local:
:backlinks: entry
To get best results from build, it's recommend to install additional packages on
build hosts (see :ref:`searxng.sh`).
-5
View File
@@ -61,11 +61,6 @@ section might give you some guidance.
- `Apache Fedora`_
- `Apache directives`_
.. contents::
:depth: 2
:local:
:backlinks: entry
The Apache HTTP server
======================
-6
View File
@@ -41,12 +41,6 @@ section might give you some guidance.
- `uWSGI support from nginx`_
.. contents::
:depth: 2
:local:
:backlinks: entry
The nginx HTTP server
=====================
-6
View File
@@ -4,12 +4,6 @@
Step by step installation
=========================
.. contents::
:depth: 2
:local:
:backlinks: entry
In this section we show the setup of a SearXNG instance that will be installed
by the :ref:`installation scripts`.
-6
View File
@@ -9,12 +9,6 @@ uWSGI
- `systemd.unit`_
- `uWSGI Emperor`_
.. contents::
:depth: 2
:local:
:backlinks: entry
.. _systemd.unit: https://www.freedesktop.org/software/systemd/man/systemd.unit.html
.. _One service per app in systemd:
https://uwsgi-docs.readthedocs.io/en/latest/Systemd.html#one-service-per-app-in-systemd
-6
View File
@@ -8,11 +8,6 @@ Favicons
Don't activate the favicons before reading the documentation.
.. contents::
:depth: 2
:local:
:backlinks: entry
Activating the favicons in SearXNG is very easy, but this **generates a
significantly higher load** in the client/server communication and increases
resources needed on the server.
@@ -250,4 +245,3 @@ into the *proxy*:
.. _data URL:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs
.. _FQN: https://en.wikipedia.org/wiki/Fully_qualified_name
-5
View File
@@ -8,10 +8,5 @@ Limiter
The limiter requires a :ref:`Valkey <settings valkey>` database.
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.limiter
:members:
-5
View File
@@ -12,11 +12,6 @@ file.
- :ref:`use_default_settings.yml`
- :ref:`search API`
.. contents::
:depth: 2
:local:
:backlinks: entry
.. _settings location:
settings.yml location
+13 -6
View File
@@ -102,11 +102,18 @@ The built-in plugins are all located in the namespace `searx.plugins`.
external plugins
================
SearXNG supports :ref:`external plugins <dev plugin>` / there is no need to
install one, SearXNG runs out of the box.
`Only show green hosted results`_:
SearXNG plugin to check if a domain is part of the Green WEB.
`SearXNG BM25 Reranker`_:
SearXNG plugin that reranks search results using BM25 text relevance scoring
to improve search quality.
.. _Only show green hosted results:
https://github.com/return42/tgwf-searx-plugins/
https://github.com/return42/tgwf-searx-plugins/
SearXNG supports *external plugins* / there is no need to install one, SearXNG
runs out of the box.
- `Only show green hosted results`_
- ..
.. _SearXNG BM25 Reranker:
https://github.com/Oaklight/searxng-bm25-reranker
-5
View File
@@ -9,11 +9,6 @@ SearXNG maintenance
- :ref:`toolboxing`
- :ref:`uWSGI maintenance`
.. contents::
:depth: 2
:local:
:backlinks: entry
.. _update searxng:
How to update
+41 -34
View File
@@ -1,8 +1,7 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
import sys, os
import os
from pathlib import Path
from pallets_sphinx_themes import ProjectLink
from searx import get_setting
from searx.version import VERSION_STRING, GIT_URL, GIT_BRANCH
@@ -98,7 +97,6 @@ extlinks['pull-searx'] = ('https://github.com/searx/searx/pull/%s', 'PR %s')
extlinks['origin'] = (GIT_URL + '/blob/' + GIT_BRANCH + '/%s', 'git://%s')
extlinks['patch'] = (GIT_URL + '/commit/%s', '#%s')
extlinks['docs'] = (DOCS_URL + '/%s', 'docs: %s')
extlinks['pypi'] = ('https://pypi.org/project/%s', 'PyPi: %s')
extlinks['man'] = ('https://manpages.debian.org/jump?q=%s', '%s')
#extlinks['role'] = (
# 'https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-%s', '')
@@ -117,7 +115,6 @@ extensions = [
'sphinx.ext.viewcode',
"sphinx.ext.autodoc",
"sphinx.ext.intersphinx",
"pallets_sphinx_themes",
"sphinx_issues", # https://github.com/sloria/sphinx-issues/blob/master/README.rst
"sphinx_jinja", # https://github.com/tardyp/sphinx-jinja
"sphinxcontrib.programoutput", # https://github.com/NextThought/sphinxcontrib-programoutput
@@ -158,15 +155,49 @@ issues_github_path = "searxng/searxng"
# HTML -----------------------------------------------------------------
html_theme = "furo"
html_theme_options = {
# link to project source at GitHub for editing and viewing docs code
"source_repository": "https://github.com/searxng/searxng/",
"source_branch": "master",
"source_directory": "docs/",
# Show link to repository & searx.space in footer
"footer_icons": [
{
"name": "GitHub",
"url": "https://github.com/searxng/searxng/",
"html": "&#x1F4BE;",
},
{
"name": "searx.space",
"url": "https://searx.space/",
"html": "&#x1F310;",
},
],
}
html_sidebars = {
"**": [
"sidebar/scroll-start.html",
"sidebar/brand.html",
"sidebar/search.html",
"sidebar/navigation.html",
"sidebar/ethical-ads.html",
"sidebar/scroll-end.html",
]
}
html_static_path = ['_static']
html_css_files = [
'searxng.css',
]
# https://searxng.github.io/searxng --> '/searxng/'
# https://docs.searxng.org --> '/'
notfound_urls_prefix = '/'
sys.path.append(os.path.abspath('_themes'))
sys.path.insert(0, os.path.abspath("../"))
html_theme_path = ['_themes']
html_theme = "searxng"
# sphinx.ext.imgmath setup
html_math_renderer = 'imgmath'
imgmath_image_format = 'svg'
@@ -174,34 +205,10 @@ imgmath_font_size = 14
# sphinx.ext.imgmath setup END
html_show_sphinx = False
html_theme_options = {"index_sidebar_logo": True}
html_context = {"project_links": [] }
html_context["project_links"].append(ProjectLink("Source", GIT_URL + '/tree/' + GIT_BRANCH))
if WIKI_URL:
html_context["project_links"].append(ProjectLink("Wiki", WIKI_URL))
if PUBLIC_INSTANCES:
html_context["project_links"].append(ProjectLink("Public instances", PUBLIC_INSTANCES))
if ISSUE_URL:
html_context["project_links"].append(ProjectLink("Issue Tracker", ISSUE_URL))
if PRIVACYPOLICY_URL:
html_context["project_links"].append(ProjectLink("Privacy Policy", PRIVACYPOLICY_URL))
if CONTACT_URL:
html_context["project_links"].append(ProjectLink("Contact", CONTACT_URL))
html_sidebars = {
"**": [
"globaltoc.html",
"project.html",
"relations.html",
"searchbox.html",
"sourcelink.html"
],
}
singlehtml_sidebars = {"index": ["project.html", "localtoc.html"]}
html_logo = "../client/simple/src/brand/searxng-wordmark.svg"
html_title = "SearXNG Documentation ({})".format(VERSION_STRING)
html_show_sourcelink = True
html_copy_source = True
# LaTeX ----------------------------------------------------------------
-5
View File
@@ -4,11 +4,6 @@
How to contribute
=================
.. contents::
:depth: 2
:local:
:backlinks: entry
Prime directives: Privacy, Hackability
======================================
-5
View File
@@ -4,11 +4,6 @@
Demo Offline Engine
===================
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.demo_offline
:members:
-5
View File
@@ -4,11 +4,6 @@
Demo Online Engine
==================
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.demo_online
:members:
-5
View File
@@ -4,11 +4,6 @@
Engine Overview
===============
.. contents::
:depth: 3
:local:
:backlinks: entry
.. _metasearch-engine: https://en.wikipedia.org/wiki/Metasearch_engine
.. sidebar:: Further reading ..
-6
View File
@@ -4,12 +4,6 @@
Engine Implementations
======================
.. contents::
:depth: 2
:local:
:backlinks: entry
.. toctree::
:caption: Framework Components
:maxdepth: 2
-5
View File
@@ -4,10 +4,5 @@
JSON Engine
============
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.json_engine
:members:
-5
View File
@@ -4,10 +4,5 @@
MediaWiki Engine
================
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.mediawiki
:members:
@@ -9,11 +9,6 @@ Command Line Engines
- :origin:`command.py <searx/engines/command.py>`
- :ref:`offline engines`
.. contents::
:depth: 2
:local:
:backlinks: entry
.. sidebar:: info
Initial sponsored by `Search and Discovery Fund
+7 -12
View File
@@ -6,21 +6,16 @@ NoSQL databases
.. sidebar:: further read
- `NoSQL databases <https://en.wikipedia.org/wiki/NoSQL>`_
- `NoSQL database <https://en.wikipedia.org/wiki/NoSQL>`_
- `valkey.io <https://valkey.io/>`_
- `MongoDB <https://www.mongodb.com>`_
.. contents::
:depth: 2
:local:
:backlinks: entry
.. sidebar:: info
Initial sponsored by `Search and Discovery Fund
<https://nlnet.nl/discovery>`_ of `NLnet Foundation <https://nlnet.nl/>`_.
The following `NoSQL databases`_ are supported:
The following `NoSQL database`_ are supported:
- :ref:`engine valkey_server`
- :ref:`engine mongodb`
@@ -57,7 +52,7 @@ instance. To switch into the environment (:ref:`searxng-src`) you can use
Configure the engines
=====================
`NoSQL databases`_ are used for storing arbitrary data without first defining
`NoSQL database`_ are used for storing arbitrary data without first defining
their structure.
@@ -75,13 +70,13 @@ Valkey Server
- :origin:`valkey_server.py <searx/engines/valkey_server.py>`
.. automodule:: searx.engines.valkey_server
:members:
:members:
.. _engine mongodb:
MongoDB
-------
MongoDB / PyMongo
-----------------
.. _pymongo: https://github.com/mongodb/mongo-python-driver#installation
@@ -93,4 +88,4 @@ MongoDB
.. automodule:: searx.engines.mongodb
:members:
:members:
@@ -7,11 +7,6 @@ Local Search APIs
- `Comparison to alternatives
<https://docs.meilisearch.com/learn/what_is_meilisearch/comparison_to_alternatives.html>`_
.. contents::
:depth: 1
:local:
:backlinks: entry
.. sidebar:: info
Initial sponsored by `Search and Discovery Fund
@@ -37,8 +32,8 @@ in section :ref:`private engines`.
.. _engine meilisearch:
MeiliSearch
===========
MeiliSearch Engine
==================
.. automodule:: searx.engines.meilisearch
:members:
@@ -46,17 +41,16 @@ MeiliSearch
.. _engine elasticsearch:
Elasticsearch
=============
Elasticsearch Engine
====================
.. automodule:: searx.engines.elasticsearch
:members:
.. _engine solr:
Solr
====
Solr Engine
===========
.. automodule:: searx.engines.solr
:members:
-5
View File
@@ -10,11 +10,6 @@ SQL Engines
- `PostgreSQL <https://www.postgresql.org>`_
- `MySQL <https://www.mysql.com>`_
.. contents::
:depth: 2
:local:
:backlinks: entry
.. sidebar:: info
Initial sponsored by `Search and Discovery Fund
-5
View File
@@ -4,10 +4,5 @@
Adobe Stock
===========
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.adobe_stock
:members:
-5
View File
@@ -4,10 +4,5 @@
Alpine Linux Packages
=====================
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.alpinelinux
:members:
@@ -4,10 +4,5 @@
Anna's Archive
==============
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.annas_archive
:members:
-5
View File
@@ -4,11 +4,6 @@
Arch Linux
==========
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.archlinux
:members:
-6
View File
@@ -4,12 +4,6 @@
Bing Engines
============
.. contents::
:depth: 2
:local:
:backlinks: entry
.. _bing web engine:
Bing WEB
-5
View File
@@ -4,10 +4,5 @@
Bpb
===
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.bpb
:members:
-5
View File
@@ -2,11 +2,6 @@
Brave Engines
=============
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
Brave offers two different engines for SearXNG:
1. The standard engine (``brave``) uses the web interface.
-5
View File
@@ -4,11 +4,6 @@
BT4G
====
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.bt4g
:members:
-5
View File
@@ -4,10 +4,5 @@
CORE
====
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.core
:members:
-5
View File
@@ -4,10 +4,5 @@
Dailymotion
===========
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.dailymotion
:members:
-5
View File
@@ -4,11 +4,6 @@
DuckDuckGo Engines
==================
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.duckduckgo
:members:
-6
View File
@@ -4,12 +4,6 @@
Google Engines
==============
.. contents::
:depth: 2
:local:
:backlinks: entry
.. _google API:
Google API
-5
View File
@@ -4,10 +4,5 @@
Lemmy
=====
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.lemmy
:members:
-5
View File
@@ -4,10 +4,5 @@
Library of Congress
===================
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.loc
:members:
-5
View File
@@ -4,10 +4,5 @@
Mastodon
========
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.mastodon
:members:
-5
View File
@@ -4,10 +4,5 @@
Moviepilot
==========
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.moviepilot
:members:
-5
View File
@@ -4,10 +4,5 @@
Matrix Rooms Search (MRS)
=========================
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.mrs
:members:
-6
View File
@@ -4,12 +4,6 @@
Mwmbl Engine
============
.. contents::
:depth: 2
:local:
:backlinks: entry
.. _mwmbl web engine:
Mwmbl WEB
-5
View File
@@ -4,10 +4,5 @@
Odysee
======
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.odysee
:members:
-6
View File
@@ -4,12 +4,6 @@
Peertube Engines
================
.. contents::
:depth: 2
:local:
:backlinks: entry
.. _peertube video engine:
Peertube Video
-5
View File
@@ -4,10 +4,5 @@
Piped
=====
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.piped
:members:
-5
View File
@@ -4,10 +4,5 @@
Presearch Engine
================
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.presearch
:members:
-5
View File
@@ -4,10 +4,5 @@
Qwant
=====
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.qwant
:members:
@@ -4,10 +4,5 @@
RadioBrowser
============
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.radio_browser
:members:
-5
View File
@@ -4,10 +4,5 @@
Recoll Engine
=============
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.recoll
:members:
-5
View File
@@ -4,10 +4,5 @@
Soundcloud
==========
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.soundcloud
:members:
-5
View File
@@ -4,10 +4,5 @@
Startpage Engines
=================
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.startpage
:members:
-5
View File
@@ -4,10 +4,5 @@
Tagesschau API
==============
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.tagesschau
:members:
-5
View File
@@ -4,10 +4,5 @@
Torznab WebAPI
==============
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.torznab
:members:
-5
View File
@@ -4,10 +4,5 @@
Void Linux binary packages
==========================
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.voidlinux
:members:
-5
View File
@@ -4,10 +4,5 @@
Wallhaven
=========
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.wallhaven
:members:
-6
View File
@@ -4,12 +4,6 @@
Wikimedia
=========
.. contents::
:depth: 2
:local:
:backlinks: entry
.. _wikipedia engine:
Wikipedia
-5
View File
@@ -4,10 +4,5 @@
Yacy
====
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.yacy
:members:
-5
View File
@@ -4,10 +4,5 @@
Yahoo Engine
============
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.yahoo
:members:
-5
View File
@@ -4,10 +4,5 @@
Z-Library
=========
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.zlibrary
:members:
@@ -4,11 +4,6 @@
Tineye
======
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.tineye
:members:
-5
View File
@@ -4,11 +4,6 @@
XPath Engine
============
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.engines.xpath
:members:
-5
View File
@@ -19,11 +19,6 @@ Makefiles, we recommend to read gnu-make_ introduction.
To install developer requirements follow :ref:`buildhosts`.
.. contents::
:depth: 2
:local:
:backlinks: entry
The usage is simple, just type ``make {target-name}`` to *build* a target.
Calling the ``help`` target gives a first overview (``make help``):
-6
View File
@@ -36,12 +36,6 @@ docs.live <make docs.live>` to build HTML while editing.
- SVG_, ImageMagick_
- DOT_, `Graphviz's dot`_, Graphviz_
.. contents::
:depth: 3
:local:
:backlinks: entry
Sphinx_ and reST_ have their place in the python ecosystem. Over that reST is
used in popular projects, e.g the Linux kernel documentation `[kernel doc]`_.
-5
View File
@@ -14,11 +14,6 @@ type of a result is defined by the :py:obj:`result_type.Result.template`. To
set another media-type as :ref:`template default`, the field ``template``
in the result item must be set to the desired type.
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
.. _result template macros:
-5
View File
@@ -7,11 +7,6 @@ Why use a private instance?
\.\.\.is a common question among SearXNG users. Before answering this
question, see what options a SearXNG user has.
.. contents::
:depth: 2
:local:
:backlinks: entry
Public instances are open to everyone who has access to their URL. Usually, they
are operated by unknown parties (from the users' point of view). Private
instances can be used by a select group of people, such as a SearXNG instance for a
-5
View File
@@ -4,11 +4,6 @@
Bot Detection
=============
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.botdetection
:members:
-8
View File
@@ -4,11 +4,6 @@
Favicons (source)
=================
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.favicons
:members:
@@ -43,6 +38,3 @@ Favicons Cache
.. automodule:: searx.favicons.cache
:members:
-5
View File
@@ -4,11 +4,6 @@
Locales
=======
.. contents::
:depth: 2
:local:
:backlinks: entry
.. automodule:: searx.locales
:members:
-6
View File
@@ -4,12 +4,6 @@
Search processors
=================
.. contents::
:depth: 2
:local:
:backlinks: entry
Abstract processor class
========================
-5
View File
@@ -22,11 +22,6 @@ Configured Engines
called *tabs*), engines can be queried by their name or the categories they
belong to, by using a :ref:`\!bing syntax <search-syntax>`.
.. contents::
:depth: 2
:local:
:backlinks: entry
.. jinja:: searx
{% for category, engines in categories_as_tabs.items() %}
-5
View File
@@ -2,11 +2,6 @@
User information
================
.. contents::
:depth: 3
:local:
:backlinks: entry
.. toctree::
:maxdepth: 2
-6
View File
@@ -15,12 +15,6 @@ script :origin:`utils/searxng.sh`.
- :ref:`installation nginx`
- :ref:`installation apache`
.. contents::
:depth: 2
:local:
:backlinks: entry
Install
=======
+9 -7
View File
@@ -5,22 +5,24 @@ black==25.9.0
pylint==4.0.5
splinter==0.21.0
selenium==4.43.0
Pallets-Sphinx-Themes==2.5.0
Sphinx==8.2.3
Sphinx==8.2.3;python_version <= "3.11"
Sphinx==9.1.0; python_version > "3.11"
sphinx-issues==6.0.0
sphinx-jinja==2.0.2
sphinx-tabs==3.5.0
furo==2025.12.19
sphinxcontrib-programoutput==0.19
sphinx-autobuild==2025.8.25
sphinx-notfound-page==1.1.0
myst-parser==5.0.0
linuxdoc==20240924
linuxdoc==20260504
aiounittest==1.5.0
yamllint==1.38.0
wlc==1.17.2
wlc==2.0.0
coloredlogs==15.0.1
docutils>=0.21.2
docutils>=0.21.2;python_version <= "3.11"
docutils>=0.22.4; python_version > "3.11"
parameterized==0.9.0
granian[reload]==2.7.3
basedpyright==1.39.2
granian[reload]==2.7.4
basedpyright==1.39.3
types-lxml==2026.2.16
+2 -2
View File
@@ -1,2 +1,2 @@
granian==2.7.3
granian[pname]==2.7.3
granian==2.7.4
granian[pname]==2.7.4
+3 -3
View File
@@ -1,9 +1,9 @@
certifi==2026.2.25
certifi==2026.4.22
babel==2.18.0
flask-babel==4.0.0
flask==3.1.3
jinja2==3.1.6
lxml==6.0.4
lxml==6.1.0
pygments==2.20.0
python-dateutil==2.9.0.post0
pyyaml==6.0.3
@@ -13,7 +13,7 @@ sniffio==1.3.1
valkey==6.1.1
markdown-it-py==4.0.0
msgspec==0.21.1
typer==0.24.1
typer==0.25.1
isodate==0.7.2
whitenoise==6.12.0
typing-extensions==4.15.0
File diff suppressed because it is too large Load Diff
+34 -27
View File
@@ -33,7 +33,7 @@
"pa": "ਚੈੱਕ ਕੋਰੂਨਾ",
"pl": "korona czeska",
"pt": "coroa checa",
"ro": "Coroană cehă",
"ro": "coroană cehă",
"ru": "чешская крона",
"sk": "česká koruna",
"sl": "češka krona",
@@ -1164,7 +1164,7 @@
"pa": "ਸਵਿੱਸ ਫ਼ਰਾਂਕ",
"pl": "frank szwajcarski",
"pt": "Franco suíço",
"ro": "Franc elvețian",
"ro": "franc elvețian",
"ru": "швейцарский франк",
"sk": "Švajčiarsky frank",
"sl": "švicarski frank",
@@ -1484,7 +1484,7 @@
"pa": "ਚੈੱਕ ਕੋਰੂਨਾ",
"pl": "korona czeska",
"pt": "coroa checa",
"ro": "Coroană cehă",
"ro": "coroană cehă",
"ru": "чешская крона",
"sk": "česká koruna",
"sl": "češka krona",
@@ -1807,7 +1807,7 @@
"pap": "Euro",
"pl": "euro",
"pt": "Euro",
"ro": "Euro",
"ro": "euro",
"ru": "евро",
"sk": "euro",
"sl": "evro",
@@ -1941,7 +1941,7 @@
"tr": "İngiliz sterlini",
"tt": "стерлинг фунты",
"uk": "фунт стерлінгів",
"vi": "Bảng Anh"
"vi": "bảng Anh"
},
"GEL": {
"ar": "لاري جورجي",
@@ -2627,7 +2627,7 @@
"pa": "ਆਈਸਲੈਂਡੀ ਕਰੋਨਾ",
"pl": "Korona islandzka",
"pt": "coroa islandesa",
"ro": "Coroană islandeză",
"ro": "coroană islandeză",
"ru": "исландская крона",
"sk": "Islandská koruna",
"sl": "islandska krona",
@@ -2827,7 +2827,7 @@
"pa": "ਕਿਰਗਿਜ਼ਸਤਾਨੀ ਸੋਮ",
"pl": "som",
"pt": "som",
"ro": "som kîrgîz",
"ro": "som",
"ru": "киргизский сом",
"sk": "kyrgyzský som",
"sl": "kirgiški som",
@@ -3516,6 +3516,7 @@
"en": "kyat",
"eo": "birma kjato",
"es": "Kyat birmano",
"eu": "kyat",
"fi": "Myanmarin kyat",
"fr": "Kyat",
"ga": "kyat Mhaenmar",
@@ -3576,7 +3577,7 @@
"sk": "Mongolský tugrik",
"sl": "tugrik",
"sr": "монголски тугрик",
"sv": "Mongolisk Tögrög",
"sv": "mongolisk tögrög",
"th": "ทูกรีก",
"tr": "Tögrög",
"tt": "төгрөг",
@@ -4127,7 +4128,7 @@
"oc": "Dolar neozelandés",
"pl": "dolar nowozelandzki",
"pt": "dólar neozelandês",
"ro": "Dolar neozeelandez",
"ro": "dolar neozeelandez",
"ru": "новозеландский доллар",
"sk": "Novozélandský dolár",
"sl": "novozelandski dolar",
@@ -4226,7 +4227,7 @@
"es": "sol",
"eu": "Sol",
"fi": "Perun nuevo sol",
"fr": "nouveau sol",
"fr": "sol",
"ga": "nuevo sol Pheiriú",
"gl": "Nuevo sol",
"he": "סול",
@@ -4234,7 +4235,7 @@
"hu": "perui új sol",
"id": "Nuevo Sol",
"it": "Nuevo Sol peruviano",
"ja": "ヌエボ・ソル",
"ja": "ソル",
"ko": "페루 솔",
"lt": "Naujasis solis",
"lv": "Peru sols",
@@ -4526,7 +4527,7 @@
"nl": "Qatarese rial",
"oc": "Riyal qatarita",
"pa": "ਕਤਰੀ ਰਿਆਲ",
"pl": "Rial Kataru",
"pl": "Rial katarski",
"pt": "Rial catarense",
"ru": "катарский риал",
"sk": "katarský rijál",
@@ -5571,6 +5572,7 @@
"en": "Tanzanian shilling",
"eo": "tanzania ŝilingo",
"es": "chelín tanzano",
"eu": "Txelin tanzaniar",
"fi": "Tansanian šillinki",
"fr": "shilling tanzanien",
"ga": "scilling na Tansáine",
@@ -5814,8 +5816,8 @@
"uk": "узбецький сом"
},
"VED": {
"en": "Digital bolívar",
"es": "Bolívar digital",
"en": "digital bolívar",
"es": "bolívar digital",
"fr": "bolivar numérique",
"pt": "Bolívar digital",
"ro": "Bolivar digital"
@@ -6576,7 +6578,7 @@
"Rs": "LKR",
"R₣": "RWF",
"S$": "SGD",
"S/.": "PEN",
"S/": "PEN",
"SI$": "SBD",
"SM": "TJS",
"SR": "SAR",
@@ -8731,7 +8733,6 @@
"franc djiboutià": "DJF",
"franc djiboutien": "DJF",
"franc elvețian": "CHF",
"franc elveţian": "CHF",
"franc guinea": "GNF",
"franc guinean": "GNF",
"franc guineà": "GNF",
@@ -8759,6 +8760,7 @@
"franc switze": "CHF",
"franc thụy sĩ": "CHF",
"franchi svizzeri": "CHF",
"franci elvețieni": "CHF",
"franco": [
"XPF",
"XAF",
@@ -9723,11 +9725,13 @@
"kwd": "KWD",
"kwt": "KWD",
"kyat": "MMK",
"kyat birmaniar": "MMK",
"kyat birmano": "MMK",
"kyat birmà": "MMK",
"kyat mhaenmar": "MMK",
"kyat myanma": "MMK",
"kyat myanmar": "MMK",
"kyat myanmartar": "MMK",
"kyd": "KYD",
"kyrgyz som": "KGS",
"kyrgyzský som": "KGS",
@@ -11148,6 +11152,7 @@
"pyg": "PYG",
"pумънски лей": "RON",
"pумынский лей": "RON",
"q8146": "JPY",
"qar": "QAR",
"qatar riyal": "QAR",
"qatarese rial": "QAR",
@@ -11259,7 +11264,6 @@
"rial irański": "IRR",
"rial jemeński": "YER",
"rial katarski": "QAR",
"rial kataru": "QAR",
"rial na hiaráine": "IRR",
"rial oman": "OMR",
"rial omanais": "OMR",
@@ -11832,6 +11836,7 @@
"sol peruano": "PEN",
"sol peruviano": "PEN",
"sol perú": "PEN",
"sol péruvien": "PEN",
"solomon adaları doları": "SBD",
"solomon dollar": "SBD",
"solomon islands dollar": "SBD",
@@ -11846,6 +11851,7 @@
"som de l'uzbekistan": "UZS",
"som del kirguizistan": "KGS",
"som do quirguistão": "KGS",
"som kârgâz": "KGS",
"som kirghiso": "KGS",
"som kirghiz": "KGS",
"som kirghizo": "KGS",
@@ -12154,6 +12160,7 @@
"INR",
"BDT"
],
"taka 12272": "BDT",
"taka bangladese": "BDT",
"taka bangladesh": "BDT",
"taka bangladeshi": "BDT",
@@ -12419,6 +12426,7 @@
"CZK",
"203"
],
"txelin tanzaniar": "TZS",
"tyrkisk lira": "TRY",
"tzs": "TZS",
"ṭākā": "BDT",
@@ -12520,7 +12528,6 @@
"uruguayischer peso": "UYU",
"uruguayn peso": "UYU",
"uruguayské peso": "UYU",
"uruguyansk peso": "UYU",
"urugvaja peso": "UYU",
"urugvajaus pesas": "UYU",
"urugvajski peso": "UYU",
@@ -15724,6 +15731,7 @@
"지부티프랑": "DJF",
"지브롤터 파운드": "GIP",
"짐바브웨 골드": "ZWG",
"짐바브웨 달러": "ZWL",
"짯": "MMK",
"챠트": "MMK",
"체코 코루나": [
@@ -15821,10 +15829,7 @@
"STN",
"CRC"
],
"₣": [
"XPF",
"RWF"
],
"₣": "XPF",
"₤": "GBP",
"₦": "NGN",
"₨": [
@@ -15857,6 +15862,9 @@
"⃀": "KGS",
"⃁": "SAR",
"⃂": "MVR",
"⃃": "AED",
"⃄": "OMR",
"⃅": "BYN",
"〒": "KZT",
"アイスランドクローナ": "ISK",
"アイスランド・クローナ": "ISK",
@@ -15998,6 +16006,7 @@
"ソマリア・シリング": "SOS",
"ソム": "KGS",
"ソモニ": "TJS",
"ソル": "PEN",
"ソロモン諸島ドル": "SBD",
"ソロモン諸島・ドル": "SBD",
"ダラシ": "GMD",
@@ -16189,10 +16198,8 @@
"香港ドル": "HKD",
"香港・ドル": "HKD",
"香港元": "HKD",
"﷼": [
"YER",
"IRR"
],
"﷼'": "YER"
"﷼": "IRR",
"﷼'": "YER",
"💶": "EUR"
}
}
File diff suppressed because it is too large Load Diff
+3
View File
@@ -7280,6 +7280,7 @@
"hu": "hungarian",
"hy": "armenian",
"id": "indonesian",
"ig": "igbo",
"is": "icelandic",
"it": "italian",
"ja": "japanese",
@@ -7335,6 +7336,7 @@
"ta": "tamil",
"te": "telugu",
"th": "thai",
"ti": "tigrinya",
"tk": "turkmen",
"tr": "turkish",
"tt": "tatar",
@@ -7342,6 +7344,7 @@
"ur": "urdu",
"uz": "uzbek",
"vi": "vietnamese",
"wo": "wolof",
"xh": "xhosa",
"yi": "yiddish",
"yo": "yoruba",
File diff suppressed because it is too large Load Diff
+2286 -2661
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -5,7 +5,7 @@
],
"ua": "Mozilla/5.0 ({os}; rv:{version}) Gecko/20100101 Firefox/{version}",
"versions": [
"149.0",
"148.0"
"150.0",
"149.0"
]
}
+333 -158
View File
@@ -194,6 +194,11 @@
"symbol": "cm⁻³",
"to_si_factor": 1000000.0
},
"Q102129592": {
"si_name": "Q6137407",
"symbol": "d⁻¹",
"to_si_factor": 1.15741e-05
},
"Q102130673": {
"si_name": "Q182429",
"symbol": "ym/s",
@@ -429,6 +434,11 @@
"symbol": "mtpa",
"to_si_factor": 31.709791984
},
"Q104381302": {
"si_name": "Q104381302",
"symbol": "W/m³",
"to_si_factor": 1.0
},
"Q104628312": {
"si_name": "Q25269",
"symbol": "vars",
@@ -1499,11 +1509,6 @@
"symbol": "kg m²/(s² K)",
"to_si_factor": 1.0
},
"Q106725578": {
"si_name": "Q106725578",
"symbol": "m²/(s² K)",
"to_si_factor": 1.0
},
"Q106740890": {
"si_name": "Q106740890",
"symbol": "m²/s²",
@@ -1654,11 +1659,6 @@
"symbol": "N/mm",
"to_si_factor": 1000.0
},
"Q106886424": {
"si_name": "Q215571",
"symbol": "kgf m",
"to_si_factor": 9.80665
},
"Q106886632": {
"si_name": "Q44395",
"symbol": "hbar",
@@ -1764,6 +1764,16 @@
"symbol": "kg/(m⁴ s)",
"to_si_factor": 1.0
},
"Q107059005": {
"si_name": "Q69425409",
"symbol": "A h/dm³",
"to_si_factor": 3600000.0
},
"Q107059365": {
"si_name": "Q97541209",
"symbol": "A h/kg",
"to_si_factor": 3600.0
},
"Q107095937": {
"si_name": "Q107095937",
"symbol": "kg m²/(s² mol)",
@@ -2074,6 +2084,11 @@
"symbol": "rem/s",
"to_si_factor": 0.01
},
"Q107378429": {
"si_name": "Q11547252",
"symbol": "1/in²",
"to_si_factor": 1550.0
},
"Q107378436": {
"si_name": "Q11547251",
"symbol": "Å⁻¹",
@@ -2279,6 +2294,11 @@
"symbol": "b/sr",
"to_si_factor": 1e-28
},
"Q107611142": {
"si_name": "Q98267267",
"symbol": "b/eV",
"to_si_factor": 6.24151e-10
},
"Q107611199": {
"si_name": "Q98267267",
"symbol": "cm²/erg",
@@ -2294,11 +2314,96 @@
"symbol": "cm²/(sr erg)",
"to_si_factor": 1000.0
},
"Q107821494": {
"si_name": null,
"symbol": "bit/m³",
"to_si_factor": null
},
"Q107822428": {
"si_name": null,
"symbol": "bit/m",
"to_si_factor": null
},
"Q107824325": {
"si_name": null,
"symbol": "bit/m²",
"to_si_factor": null
},
"Q107862770": {
"si_name": null,
"symbol": "Kibit/m",
"to_si_factor": null
},
"Q107862783": {
"si_name": null,
"symbol": "Kibit/m",
"to_si_factor": null
},
"Q107862850": {
"si_name": null,
"symbol": "Kibit/m³",
"to_si_factor": null
},
"Q107862870": {
"si_name": null,
"symbol": "Mibit/m",
"to_si_factor": null
},
"Q107862884": {
"si_name": null,
"symbol": "Mibit/m²",
"to_si_factor": null
},
"Q107862898": {
"si_name": null,
"symbol": "Mibit/m³",
"to_si_factor": null
},
"Q107970215": {
"si_name": null,
"symbol": "Pibit/m",
"to_si_factor": null
},
"Q107970224": {
"si_name": null,
"symbol": "Pibit/m²",
"to_si_factor": null
},
"Q107970230": {
"si_name": null,
"symbol": "Pibit/m³",
"to_si_factor": null
},
"Q107970235": {
"si_name": null,
"symbol": "Tibit/m",
"to_si_factor": null
},
"Q107970256": {
"si_name": null,
"symbol": "Tibit/m³",
"to_si_factor": null
},
"Q107970266": {
"si_name": null,
"symbol": "Tibit/m²",
"to_si_factor": null
},
"Q108270163": {
"si_name": "Q25381181",
"symbol": "t/a",
"to_si_factor": 3.169e-05
},
"Q1084321": {
"si_name": null,
"symbol": "Tb/s",
"to_si_factor": null
},
"Q108533173": {
"si_name": "Q108533173",
"symbol": "sr⁻¹",
"to_si_factor": 1.0
},
"Q1086691": {
"si_name": null,
"symbol": "fg",
@@ -2359,6 +2464,11 @@
"symbol": "e.u.",
"to_si_factor": 4.184
},
"Q109448508": {
"si_name": null,
"symbol": "man-Sv",
"to_si_factor": null
},
"Q1098949": {
"si_name": "Q21393312",
"symbol": "Cl",
@@ -2389,14 +2499,9 @@
"symbol": "nm²",
"to_si_factor": 1e-18
},
"Q110742003": {
"si_name": null,
"symbol": "dppx",
"to_si_factor": null
},
"Q110812007": {
"si_name": "Q281096",
"symbol": "nt",
"Q111494193": {
"si_name": "Q111494193",
"symbol": "J/(Hz mol)",
"to_si_factor": 1.0
},
"Q11229": {
@@ -2444,6 +2549,11 @@
"symbol": "Yb",
"to_si_factor": null
},
"Q114559346": {
"si_name": null,
"symbol": "g CO2e/kWh",
"to_si_factor": null
},
"Q114589269": {
"si_name": null,
"symbol": "Ѧ",
@@ -2564,11 +2674,21 @@
"symbol": "ʰ",
"to_si_factor": 0.2617993878
},
"Q116486875": {
"si_name": null,
"symbol": "mol(-1) s(-1)",
"to_si_factor": null
},
"Q1165639": {
"si_name": "Q89992008",
"symbol": "daraf",
"to_si_factor": 1.0
},
"Q1165725": {
"si_name": "Q25343",
"symbol": "D",
"to_si_factor": 9.869e-13
},
"Q1165799": {
"si_name": "Q11573",
"symbol": "mil",
@@ -2754,11 +2874,6 @@
"symbol": "pc",
"to_si_factor": 3.085677581491367e+16
},
"Q121960323": {
"si_name": "Q121960323",
"symbol": "m/m",
"to_si_factor": 1.0
},
"Q121965382": {
"si_name": "Q121965382",
"symbol": "mol/mol",
@@ -2979,26 +3094,6 @@
"symbol": "QC",
"to_si_factor": 1e+30
},
"Q125471199": {
"si_name": null,
"symbol": "r°C",
"to_si_factor": null
},
"Q125471200": {
"si_name": null,
"symbol": "q°C",
"to_si_factor": null
},
"Q125471246": {
"si_name": null,
"symbol": "R°C",
"to_si_factor": null
},
"Q125471247": {
"si_name": null,
"symbol": "Q°C",
"to_si_factor": null
},
"Q125471334": {
"si_name": "Q131255",
"symbol": "rF",
@@ -3179,6 +3274,11 @@
"symbol": "STf",
"to_si_factor": 8896.443230521
},
"Q131966422": {
"si_name": "Q11573",
"symbol": "Q",
"to_si_factor": 0.00025
},
"Q1322380": {
"si_name": "Q11574",
"symbol": "Ts",
@@ -3274,6 +3374,11 @@
"symbol": "kgf/cm²",
"to_si_factor": 98066.5
},
"Q135964483": {
"si_name": "Q11547252",
"symbol": "mm⁻²",
"to_si_factor": 1e-06
},
"Q136039973": {
"si_name": null,
"symbol": "FPS",
@@ -3324,6 +3429,36 @@
"symbol": "V_P",
"to_si_factor": 1.0429e+27
},
"Q1386162": {
"si_name": "Q106680668",
"symbol": "E",
"to_si_factor": 1e-09
},
"Q138847616": {
"si_name": "Q11573",
"symbol": "µm⁻¹",
"to_si_factor": 1000000.0
},
"Q138847643": {
"si_name": "Q11547251",
"symbol": "nm⁻¹",
"to_si_factor": 1000000000.0
},
"Q138847654": {
"si_name": "Q11547251",
"symbol": "pm⁻¹",
"to_si_factor": 1000000000000.0
},
"Q139054848": {
"si_name": null,
"symbol": "A·h/m²",
"to_si_factor": null
},
"Q139086088": {
"si_name": "Q69425409",
"symbol": "A h/m³",
"to_si_factor": 3600.0
},
"Q1394540": {
"si_name": null,
"symbol": "bm",
@@ -3674,6 +3809,11 @@
"symbol": "dl",
"to_si_factor": 0.0001
},
"Q18379097": {
"si_name": "Q95375885",
"symbol": "SFU",
"to_si_factor": 1e-22
},
"Q18413919": {
"si_name": "Q182429",
"symbol": "cm/s",
@@ -3709,6 +3849,11 @@
"symbol": "zs",
"to_si_factor": 1e-21
},
"Q188768": {
"si_name": null,
"symbol": "FLOPS",
"to_si_factor": null
},
"Q190095": {
"si_name": "Q190095",
"symbol": "Gy",
@@ -4124,6 +4269,11 @@
"symbol": "kgf",
"to_si_factor": 9.80665
},
"Q21719454": {
"si_name": "Q21719454",
"symbol": "m/s³",
"to_si_factor": 1.0
},
"Q217208": {
"si_name": "Q11574",
"symbol": "a",
@@ -4234,6 +4384,16 @@
"symbol": "TW",
"to_si_factor": 1000000000000.0
},
"Q23893259": {
"si_name": null,
"symbol": "1/(p y)",
"to_si_factor": null
},
"Q23893296": {
"si_name": null,
"symbol": "1/100000py",
"to_si_factor": null
},
"Q23925410": {
"si_name": "Q25517",
"symbol": "gal (UK)",
@@ -4374,6 +4534,11 @@
"symbol": "statΩ",
"to_si_factor": 898755178700.0
},
"Q25325238": {
"si_name": null,
"symbol": "bhp/cm³",
"to_si_factor": null
},
"Q253276": {
"si_name": "Q11573",
"symbol": "mi",
@@ -4719,6 +4884,11 @@
"symbol": "g",
"to_si_factor": 9.80665
},
"Q28657331": {
"si_name": null,
"symbol": "erg/(s cm²)",
"to_si_factor": null
},
"Q28683485": {
"si_name": "Q28683485",
"symbol": "C/kg",
@@ -4749,6 +4919,11 @@
"symbol": "mH",
"to_si_factor": 0.001
},
"Q29463526": {
"si_name": null,
"symbol": "hr/yr",
"to_si_factor": null
},
"Q296936": {
"si_name": "Q25269",
"symbol": "toe",
@@ -4969,6 +5144,11 @@
"symbol": "μA",
"to_si_factor": 1e-06
},
"Q3186734": {
"si_name": "Q3186734",
"symbol": "J/(m³ K)",
"to_si_factor": 1.0
},
"Q31889818": {
"si_name": "Q199",
"symbol": "ppq",
@@ -4979,6 +5159,11 @@
"symbol": "kb",
"to_si_factor": null
},
"Q3196665": {
"si_name": "Q215571",
"symbol": "kgf m",
"to_si_factor": 9.80665
},
"Q3207456": {
"si_name": "Q25236",
"symbol": "mW",
@@ -5084,11 +5269,6 @@
"symbol": "fL",
"to_si_factor": 1e-18
},
"Q3320608": {
"si_name": "Q25236",
"symbol": "kW",
"to_si_factor": 1000.0
},
"Q3331719": {
"si_name": "Q25343",
"symbol": "dma",
@@ -5219,6 +5399,11 @@
"symbol": "mA⋅h",
"to_si_factor": 3.6
},
"Q38623562": {
"si_name": "Q6137407",
"symbol": "rpm",
"to_si_factor": 0.0166667
},
"Q3867152": {
"si_name": "Q1051665",
"symbol": "ft/s²",
@@ -5389,6 +5574,11 @@
"symbol": "nhp",
"to_si_factor": null
},
"Q4346600": {
"si_name": null,
"symbol": "PPHPD",
"to_si_factor": null
},
"Q4406": {
"si_name": null,
"symbol": "$T",
@@ -5569,11 +5759,6 @@
"symbol": "Ga",
"to_si_factor": null
},
"Q5299480": {
"si_name": null,
"symbol": "DPCm",
"to_si_factor": null
},
"Q531": {
"si_name": "Q11573",
"symbol": "l.y.",
@@ -6254,6 +6439,11 @@
"symbol": "U/L",
"to_si_factor": null
},
"Q5558595": {
"si_name": null,
"symbol": "GFLOPS",
"to_si_factor": null
},
"Q55663153": {
"si_name": "Q55663153",
"symbol": "H/m",
@@ -6364,6 +6554,11 @@
"symbol": "L/kg",
"to_si_factor": 0.001
},
"Q57175652": {
"si_name": null,
"symbol": "m3/year/individual",
"to_si_factor": null
},
"Q57273614": {
"si_name": "Q182429",
"symbol": "mm/min",
@@ -6374,6 +6569,11 @@
"symbol": "d",
"to_si_factor": 86400.0
},
"Q57306331": {
"si_name": "Q86200529",
"symbol": "cm²/g",
"to_si_factor": 0.1
},
"Q577": {
"si_name": "Q11574",
"symbol": "a",
@@ -6624,6 +6824,21 @@
"symbol": "UK t",
"to_si_factor": 1016.0469088
},
"Q66778234": {
"si_name": null,
"symbol": "TFLOPS",
"to_si_factor": null
},
"Q66778809": {
"si_name": null,
"symbol": "MFLOPS",
"to_si_factor": null
},
"Q66778863": {
"si_name": null,
"symbol": "PFLOPS",
"to_si_factor": null
},
"Q67060736": {
"si_name": "Q67060736",
"symbol": "W/kg",
@@ -7014,11 +7229,6 @@
"symbol": "Mb/s",
"to_si_factor": null
},
"Q7398951": {
"si_name": null,
"symbol": "PPI",
"to_si_factor": null
},
"Q743895": {
"si_name": "Q39369",
"symbol": "bpm",
@@ -7084,6 +7294,21 @@
"symbol": "Td",
"to_si_factor": 1e-06
},
"Q78053467": {
"si_name": null,
"symbol": "kFLOPS",
"to_si_factor": null
},
"Q781545": {
"si_name": null,
"symbol": "phon",
"to_si_factor": null
},
"Q78336909": {
"si_name": "Q78336909",
"symbol": "m³/(kg s²)",
"to_si_factor": 1.0
},
"Q7854897": {
"si_name": null,
"symbol": "mya",
@@ -7209,6 +7434,11 @@
"symbol": "YiB",
"to_si_factor": null
},
"Q80026587": {
"si_name": "Q6137407",
"symbol": "km/(s Mpc)",
"to_si_factor": 3.24078e-20
},
"Q80237579": {
"si_name": "Q56023789",
"symbol": "J/nm",
@@ -7264,6 +7494,11 @@
"symbol": "B/s",
"to_si_factor": null
},
"Q82440913": {
"si_name": null,
"symbol": "L/100 km",
"to_si_factor": null
},
"Q828224": {
"si_name": "Q11573",
"symbol": "km",
@@ -7349,6 +7584,11 @@
"symbol": "thm (US)",
"to_si_factor": 105480400.0
},
"Q843877": {
"si_name": "Q25236",
"symbol": "L☉",
"to_si_factor": 3.828e+26
},
"Q844211": {
"si_name": "Q844211",
"symbol": "kg/m³",
@@ -7424,6 +7664,11 @@
"symbol": "Pa s/m³",
"to_si_factor": 1.0
},
"Q87049028": {
"si_name": "Q87049028",
"symbol": "N s/m",
"to_si_factor": 1.0
},
"Q87051580": {
"si_name": "Q87051580",
"symbol": "Pa s/m",
@@ -7564,6 +7809,11 @@
"symbol": "J/s",
"to_si_factor": 1.0
},
"Q92717607": {
"si_name": "Q92717607",
"symbol": "K/m",
"to_si_factor": 1.0
},
"Q93318": {
"si_name": "Q11573",
"symbol": "M",
@@ -7584,6 +7834,16 @@
"symbol": "gill (UK)",
"to_si_factor": 0.000142
},
"Q93868873": {
"si_name": null,
"symbol": "mpg",
"to_si_factor": null
},
"Q93871856": {
"si_name": null,
"symbol": "km/L",
"to_si_factor": null
},
"Q93947085": {
"si_name": "Q93947085",
"symbol": "K/Pa",
@@ -8899,11 +9159,6 @@
"symbol": "ET",
"to_si_factor": 1e+18
},
"Q96070276": {
"si_name": null,
"symbol": "m°C",
"to_si_factor": null
},
"Q96070318": {
"si_name": "Q177612",
"symbol": "dsr",
@@ -8959,21 +9214,6 @@
"symbol": "Gsr",
"to_si_factor": 1000000000.0
},
"Q96095941": {
"si_name": null,
"symbol": "μ°C",
"to_si_factor": null
},
"Q96095955": {
"si_name": null,
"symbol": "n°C",
"to_si_factor": null
},
"Q96095960": {
"si_name": null,
"symbol": "k°C",
"to_si_factor": null
},
"Q96106290": {
"si_name": "Q177612",
"symbol": "Tsr",
@@ -8999,41 +9239,11 @@
"symbol": "Ysr",
"to_si_factor": 1e+24
},
"Q96106346": {
"si_name": null,
"symbol": "c°C",
"to_si_factor": null
},
"Q96106360": {
"si_name": null,
"symbol": "d°C",
"to_si_factor": null
},
"Q96106368": {
"si_name": null,
"symbol": "da°C",
"to_si_factor": null
},
"Q96106385": {
"si_name": null,
"symbol": "h°C",
"to_si_factor": null
},
"Q96106393": {
"si_name": null,
"symbol": "M°C",
"to_si_factor": null
},
"Q96192470": {
"si_name": "Q96192470",
"symbol": "W/m",
"to_si_factor": 1.0
},
"Q96236286": {
"si_name": null,
"symbol": "G°C",
"to_si_factor": null
},
"Q96309077": {
"si_name": "Q96309077",
"symbol": "S m²/mol",
@@ -9044,56 +9254,6 @@
"symbol": "μas",
"to_si_factor": 4.848136811095356e-12
},
"Q97059641": {
"si_name": null,
"symbol": "p°C",
"to_si_factor": null
},
"Q97059652": {
"si_name": null,
"symbol": "T°C",
"to_si_factor": null
},
"Q97143826": {
"si_name": null,
"symbol": "P°C",
"to_si_factor": null
},
"Q97143831": {
"si_name": null,
"symbol": "y°C",
"to_si_factor": null
},
"Q97143835": {
"si_name": null,
"symbol": "f°C",
"to_si_factor": null
},
"Q97143838": {
"si_name": null,
"symbol": "Z°C",
"to_si_factor": null
},
"Q97143842": {
"si_name": null,
"symbol": "E°C",
"to_si_factor": null
},
"Q97143843": {
"si_name": null,
"symbol": "z°C",
"to_si_factor": null
},
"Q97143849": {
"si_name": null,
"symbol": "Y°C",
"to_si_factor": null
},
"Q97143851": {
"si_name": null,
"symbol": "a°C",
"to_si_factor": null
},
"Q97540991": {
"si_name": "Q97540991",
"symbol": "A m²/(J s)",
@@ -9114,6 +9274,11 @@
"symbol": "Bq/m³",
"to_si_factor": 1.0
},
"Q98103135": {
"si_name": "Q98103135",
"symbol": "Bq/m²",
"to_si_factor": 1.0
},
"Q98266832": {
"si_name": "Q98266832",
"symbol": "m²/sr",
@@ -9139,6 +9304,11 @@
"symbol": "eV/m²",
"to_si_factor": 1.60218e-19
},
"Q98635536": {
"si_name": "Q56023789",
"symbol": "eV/m",
"to_si_factor": 1.602176634e-19
},
"Q98642859": {
"si_name": "Q98643033",
"symbol": "eV m²/kg",
@@ -9169,6 +9339,11 @@
"symbol": "m⁻³ s⁻¹",
"to_si_factor": 1.0
},
"Q98974322": {
"si_name": null,
"symbol": "W yr/(m² kg)",
"to_si_factor": null
},
"Q99476928": {
"si_name": "Q12438",
"symbol": "gf",
+2 -1
View File
@@ -39,11 +39,12 @@ def response(resp):
for result in json_results:
title_parts = [title['value'] for title in result['title']]
extract_parts = [extract['value'] for extract in result.get('extract', [])]
results.append(
{
'url': result['url'],
'title': ''.join(title_parts),
'content': result['extract'][0]['value'],
'content': ''.join(extract_parts),
}
)
+4 -1
View File
@@ -345,7 +345,10 @@ def _get_news_result(result):
publishedDate = None
if result.get("date"):
publishedDate = datetime.fromtimestamp(result["date"] / 1000)
try:
publishedDate = datetime.fromtimestamp(int(result["date"]) / 1000)
except (TypeError, ValueError):
pass
thumbnailUrl = None
if result.get("thumbnailUrl"):
+488 -477
View File
File diff suppressed because it is too large Load Diff
+22 -52
View File
@@ -1,10 +1,17 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Yep (general, images, news)"""
from datetime import datetime
import typing as t
from urllib.parse import urlencode
from searx.result_types import EngineResults
from searx.utils import html_to_text
if t.TYPE_CHECKING:
from searx.extended_types import SXNG_Response
from searx.search.processors import OnlineParams
about = {
'website': 'https://yep.com/',
'official_api_documentation': 'https://docs.developer.yelp.com',
@@ -14,69 +21,32 @@ about = {
}
base_url = "https://api.yep.com"
search_type = "web" # 'web', 'images', 'news'
safesearch = True
safesearch_map = {0: 'off', 1: 'moderate', 2: 'strict'}
enable_http2 = False
results_per_page = 20
def request(query, params):
args = {
'client': 'web',
'no_correct': 'false',
'q': query,
'safeSearch': safesearch_map[params['safesearch']],
'type': search_type,
}
def request(query: str, params: 'OnlineParams') -> None:
args = {'query': query, 'safeSearch': safesearch_map[params['safesearch']], 'limit': results_per_page}
params['url'] = f"{base_url}/fs/2/search?{urlencode(args)}"
params['headers']['Referer'] = 'https://yep.com/'
params['headers']['Origin'] = 'https://yep.com'
return params
def _web_result(result):
return {
'url': result['url'],
'title': result['title'],
'content': html_to_text(result['snippet']),
}
def _images_result(result):
return {
'template': 'images.html',
'url': result['host_page'],
'title': result.get('title', ''),
'content': '',
'img_src': result['image_id'],
'thumbnail_src': result['src'],
}
def _news_result(result):
return {
'url': result['url'],
'title': result['title'],
'content': html_to_text(result['snippet']),
'publishedDate': datetime.strptime(result['first_seen'][:19], '%Y-%m-%dT%H:%M:%S'),
}
def response(resp):
results = []
def response(resp: 'SXNG_Response') -> EngineResults:
res = EngineResults()
for result in resp.json()[1]['results']:
if search_type == "web":
if result['type'] != 'Organic':
continue
results.append(_web_result(result))
elif search_type == "images":
results.append(_images_result(result))
elif search_type == "news":
results.append(_news_result(result))
else:
raise ValueError(f"Unsupported yep search type: {search_type}")
res.add(
res.types.MainResult(
url=result['url'],
title=result['title'],
content=html_to_text(result['snippet']),
)
)
return results
return res
+13 -11
View File
@@ -32,7 +32,7 @@ import msgspec
from searx import logger as log
WHITESPACE_REGEX = re.compile('( |\t|\n)+', re.M | re.U)
UNKNOWN = object()
UNSET = object()
def _normalize_url_fields(result: "Result | LegacyResult"):
@@ -326,12 +326,13 @@ class Result(msgspec.Struct, kw_only=True):
def defaults_from(self, other: "Result"):
"""Fields not set in *self* will be updated from the field values of the
*other*.
*other*. If a field is set (exists) but contains an empty string
or the value ``None``, it is also considered *not set*.
"""
for field_name in self.__struct_fields__:
self_val = getattr(self, field_name, False)
other_val = getattr(other, field_name, False)
if self_val:
self_val = getattr(self, field_name, UNSET)
other_val = getattr(other, field_name, UNSET)
if self_val is UNSET and other_val not in (UNSET, "", None):
setattr(self, field_name, other_val)
@@ -440,8 +441,6 @@ class LegacyResult(dict[str, t.Any]):
Do not use this class in your own implementations!
"""
UNSET: object = object()
# emulate field types from type class Result
url: str | None
template: str
@@ -512,7 +511,7 @@ class LegacyResult(dict[str, t.Any]):
)
def __getattr__(self, name: str, default: t.Any = UNSET) -> t.Any:
if default == self.UNSET and name not in self:
if default == UNSET and name not in self:
raise AttributeError(f"LegacyResult object has no field named: {name}")
return self[name]
@@ -563,9 +562,12 @@ class LegacyResult(dict[str, t.Any]):
self.engines.add(self.engine)
def defaults_from(self, other: "LegacyResult"):
for k, v in other.items():
if not self.get(k):
self[k] = v
# If a field is set (exists) but contains an empty string or the value
# ``None``, it is also considered *not set*.
for field_name, other_val in other.items():
self_val = self.get(field_name, UNSET)
if self_val is UNSET and other_val not in ("", UNSET):
self[field_name] = other_val
def filter_urls(self, filter_func: "Callable[[Result | LegacyResult, str, str], str | bool]"):
"""See :py:obj:`Result.filter_urls`"""
+1 -17
View File
@@ -688,22 +688,6 @@ engines:
engine: yep
shortcut: yep
categories: general
search_type: web
timeout: 15
disabled: true
- name: yep images
engine: yep
shortcut: yepi
categories: images
search_type: images
disabled: true
- name: yep news
engine: yep
shortcut: yepn
categories: news
search_type: news
disabled: true
- name: currency
@@ -1229,7 +1213,7 @@ engines:
- name: karmasearch videos
engine: karmasearch
categories: [general, web]
categories: [videos, web]
search_type: videos
shortcut: kav
+10
View File
@@ -67,3 +67,13 @@
class="checkbox-onoff"{{- ' ' -}}
{%- if checked -%} checked{%- endif -%}/>
{%- endmacro -%}
<!-- iframe that additionally sets some extra feature attrs for videos -->
{%- macro iframe(iframe_src) -%}
<iframe data-src="{{iframe_src}}" frameborder="0" allowfullscreen
{% if result.parsed_url.hostname in ("www.youtube.com", ) -%}
allow="picture-in-picture" referrerpolicy="origin"
{%- endif -%}
>
</iframe>
{%- endmacro -%}
@@ -1,4 +1,4 @@
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
{% from 'simple/macros.html' import iframe, result_header, result_sub_header, result_sub_footer, result_footer with context %}
{{ result_header(result, favicons, image_proxify) -}}
{{- result_sub_header(result) -}}
@@ -17,7 +17,7 @@
{{- result_sub_footer(result) -}}
{% if result.iframe_src -%}
<div id="result-media-{{ index }}" class="embedded-content invisible">
<iframe data-src="{{result.iframe_src}}" frameborder="0" allowfullscreen></iframe>
{{ iframe(result.iframe_src) }}
</div>
{%- endif %}
{% if result.audio_src -%}
@@ -1,4 +1,4 @@
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
{% from 'simple/macros.html' import iframe, result_header, result_sub_header, result_sub_footer, result_footer with context %}
{{ result_header(result, favicons, image_proxify) }}
{{ result_sub_header(result) }}
@@ -18,11 +18,7 @@
{{- result_sub_footer(result) -}}
{% if result.iframe_src -%}
<div id="result-video-{{ index }}" class="embedded-video invisible">
<iframe data-src="{{result.iframe_src}}" frameborder="0" allowfullscreen
{% if result.parsed_url.hostname in ("www.youtube.com", ) -%}
allow="picture-in-picture" referrerpolicy="origin">
{%- endif -%}
</iframe>
{{ iframe(result.iframe_src) }}
</div>
{%- endif %}
{{ result_footer(result) }}
Binary file not shown.
@@ -20,7 +20,7 @@ msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-03-24 18:43+0000\n"
"PO-Revision-Date: 2026-04-09 18:57+0000\n"
"PO-Revision-Date: 2026-04-16 06:57+0000\n"
"Last-Translator: AndersNordh <andersnordh@noreply.codeberg.org>\n"
"Language-Team: Danish <https://translate.codeberg.org/projects/searxng/"
"searxng/da/>\n"
@@ -29,7 +29,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.16.2\n"
"X-Generator: Weblate 5.17\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -885,7 +885,7 @@ msgstr "Indstillinger"
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Leveret af"
msgstr "Drevet af"
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"
Binary file not shown.
@@ -38,8 +38,8 @@ msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-03-24 18:43+0000\n"
"PO-Revision-Date: 2026-03-27 07:33+0000\n"
"Last-Translator: bittin <bittin@noreply.codeberg.org>\n"
"PO-Revision-Date: 2026-04-16 06:57+0000\n"
"Last-Translator: AndersNordh <andersnordh@noreply.codeberg.org>\n"
"Language-Team: Swedish <https://translate.codeberg.org/projects/searxng/"
"searxng/sv/>\n"
"Language: sv\n"
@@ -47,7 +47,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.16.2\n"
"X-Generator: Weblate 5.17\n"
"Generated-By: Babel 2.18.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -903,7 +903,7 @@ msgstr "Inställningar"
#: searx/templates/simple/base.html:68
msgid "Powered by"
msgstr "Drivet av"
msgstr "Drivs av"
#: searx/templates/simple/base.html:68
msgid "a privacy-respecting, open metasearch engine"