8 Commits

Author SHA1 Message Date
searxng-bot
63989c5727 [data] update searx.data - update_ahmia_blacklist.py 2025-12-29 00:18:09 +00:00
Aadniz
fa9729226b [fix] ahmia engine: increase timeout to 20 seconds 2025-12-26 18:22:15 +01:00
Aadniz
9df177af85 [fix] ahmia engine: Remove comment for EngineCache 2025-12-26 18:22:15 +01:00
Aadniz
f45123356b [fix] ahmia engine: requires rotating tokens to work
Ahmia recently implemented a 60 minute rotating token system when searching.

This fix uses the cache and updates the tokens on every request.
2025-12-26 18:22:15 +01:00
Aadniz
8851f4d6b1 [fix] searx.network: fix string concatenation of proxy error message 2025-12-26 18:07:51 +01:00
searxng-bot
f954423101 [l10n] update translations from Weblate
3a4b5f36f - 2025-12-24 - Stzyxh <stzyxh@noreply.codeberg.org>
e72be22b9 - 2025-12-23 - gallegonovato <gallegonovato@noreply.codeberg.org>
18a59dd67 - 2025-12-22 - Outbreak2096 <outbreak2096@noreply.codeberg.org>
bf212eb3c - 2025-12-22 - Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
3525b547a - 2025-12-19 - MaiuZ <maiuz@noreply.codeberg.org>
2025-12-26 11:51:22 +01:00
dependabot[bot]
95e63ac32d [upd] web-client (simple): Bump vite in /client/simple
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 8.0.0-beta.3 to 8.0.0-beta.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/v8.0.0-beta.5/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-26 11:47:23 +01:00
dependabot[bot]
fc6e59d3ec [upd] pypi: Bump the minor group with 2 updates (#5598)
Bumps the minor group with 2 updates: [typer-slim](https://github.com/fastapi/typer) and [basedpyright](https://github.com/detachhead/basedpyright).


Updates `typer-slim` from 0.20.0 to 0.21.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.20.0...0.21.0)

Updates `basedpyright` from 1.36.1 to 1.36.2
- [Release notes](https://github.com/detachhead/basedpyright/releases)
- [Commits](https://github.com/detachhead/basedpyright/compare/v1.36.1...v1.36.2)

---
updated-dependencies:
- dependency-name: typer-slim
  dependency-version: 0.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: basedpyright
  dependency-version: 1.36.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
2025-12-26 10:03:42 +01:00
18 changed files with 491 additions and 147 deletions

View File

@@ -9,28 +9,28 @@
"version": "0.0.0",
"license": "AGPL-3.0",
"dependencies": {
"ionicons": "~8.0.13",
"ionicons": "^8.0.13",
"normalize.css": "8.0.1",
"ol": "~10.7.0",
"ol": "^10.7.0",
"swiped-events": "1.2.0"
},
"devDependencies": {
"@biomejs/biome": "2.3.10",
"@types/node": "~25.0.3",
"browserslist": "~4.28.1",
"browserslist-to-esbuild": "~2.1.1",
"edge.js": "~6.4.0",
"less": "~4.5.1",
"mathjs": "~15.1.0",
"@types/node": "^25.0.3",
"browserslist": "^4.28.1",
"browserslist-to-esbuild": "^2.1.1",
"edge.js": "^6.4.0",
"less": "^4.5.1",
"mathjs": "^15.1.0",
"sharp": "~0.34.5",
"sort-package-json": "~3.6.0",
"stylelint": "~16.26.0",
"stylelint-config-standard-less": "~3.0.1",
"stylelint-prettier": "~5.0.3",
"svgo": "~4.0.0",
"sort-package-json": "^3.6.0",
"stylelint": "^16.26.0",
"stylelint-config-standard-less": "^3.0.1",
"stylelint-prettier": "^5.0.3",
"svgo": "^4.0.0",
"typescript": "~5.9.3",
"vite": "8.0.0-beta.3",
"vite-bundle-analyzer": "~1.3.2"
"vite": "8.0.0-beta.5",
"vite-bundle-analyzer": "^1.3.2"
}
},
"node_modules/@babel/code-frame": {
@@ -280,9 +280,9 @@
}
},
"node_modules/@csstools/css-syntax-patches-for-csstree": {
"version": "1.0.21",
"resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.21.tgz",
"integrity": "sha512-plP8N8zKfEZ26figX4Nvajx8DuzfuRpLTqglQ5d0chfnt35Qt3X+m6ASZ+rG0D0kxe/upDVNwSIVJP5n4FuNfw==",
"version": "1.0.22",
"resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.22.tgz",
"integrity": "sha512-qBcx6zYlhleiFfdtzkRgwNC7VVoAwfK76Vmsw5t+PbvtdknO9StgRk7ROvq9so1iqbdW4uLIDAsXRsTfUrIoOw==",
"dev": true,
"funding": [
{
@@ -1072,9 +1072,9 @@
}
},
"node_modules/@rolldown/binding-android-arm64": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-beta.55.tgz",
"integrity": "sha512-5cPpHdO+zp+klznZnIHRO1bMHDq5hS9cqXodEKAaa/dQTPDjnE91OwAsy3o1gT2x4QaY8NzdBXAvutYdaw0WeA==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-beta.57.tgz",
"integrity": "sha512-GoOVDy8bjw9z1K30Oo803nSzXJS/vWhFijFsW3kzvZCO8IZwFnNa6pGctmbbJstKl3Fv6UBwyjJQN6msejW0IQ==",
"cpu": [
"arm64"
],
@@ -1089,9 +1089,9 @@
}
},
"node_modules/@rolldown/binding-darwin-arm64": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.55.tgz",
"integrity": "sha512-l0887CGU2SXZr0UJmeEcXSvtDCOhDTTYXuoWbhrEJ58YQhQk24EVhDhHMTyjJb1PBRniUgNc1G0T51eF8z+TWw==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.57.tgz",
"integrity": "sha512-9c4FOhRGpl+PX7zBK5p17c5efpF9aSpTPgyigv57hXf5NjQUaJOOiejPLAtFiKNBIfm5Uu6yFkvLKzOafNvlTw==",
"cpu": [
"arm64"
],
@@ -1106,9 +1106,9 @@
}
},
"node_modules/@rolldown/binding-darwin-x64": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.55.tgz",
"integrity": "sha512-d7qP2AVYzN0tYIP4vJ7nmr26xvmlwdkLD/jWIc9Z9dqh5y0UGPigO3m5eHoHq9BNazmwdD9WzDHbQZyXFZjgtA==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.57.tgz",
"integrity": "sha512-6RsB8Qy4LnGqNGJJC/8uWeLWGOvbRL/KG5aJ8XXpSEupg/KQtlBEiFaYU/Ma5Usj1s+bt3ItkqZYAI50kSplBA==",
"cpu": [
"x64"
],
@@ -1123,9 +1123,9 @@
}
},
"node_modules/@rolldown/binding-freebsd-x64": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.55.tgz",
"integrity": "sha512-j311E4NOB0VMmXHoDDZhrWidUf7L/Sa6bu/+i2cskvHKU40zcUNPSYeD2YiO2MX+hhDFa5bJwhliYfs+bTrSZw==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.57.tgz",
"integrity": "sha512-uA9kG7+MYkHTbqwv67Tx+5GV5YcKd33HCJIi0311iYBd25yuwyIqvJfBdt1VVB8tdOlyTb9cPAgfCki8nhwTQg==",
"cpu": [
"x64"
],
@@ -1140,9 +1140,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm-gnueabihf": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.55.tgz",
"integrity": "sha512-lAsaYWhfNTW2A/9O7zCpb5eIJBrFeNEatOS/DDOZ5V/95NHy50g4b/5ViCqchfyFqRb7MKUR18/+xWkIcDkeIw==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.57.tgz",
"integrity": "sha512-3KkS0cHsllT2T+Te+VZMKHNw6FPQihYsQh+8J4jkzwgvAQpbsbXmrqhkw3YU/QGRrD8qgcOvBr6z5y6Jid+rmw==",
"cpu": [
"arm"
],
@@ -1157,9 +1157,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm64-gnu": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.55.tgz",
"integrity": "sha512-2x6ffiVLZrQv7Xii9+JdtyT1U3bQhKj59K3eRnYlrXsKyjkjfmiDUVx2n+zSyijisUqD62fcegmx2oLLfeTkCA==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.57.tgz",
"integrity": "sha512-A3/wu1RgsHhqP3rVH2+sM81bpk+Qd2XaHTl8LtX5/1LNR7QVBFBCpAoiXwjTdGnI5cMdBVi7Z1pi52euW760Fw==",
"cpu": [
"arm64"
],
@@ -1174,9 +1174,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm64-musl": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.55.tgz",
"integrity": "sha512-QbNncvqAXziya5wleI+OJvmceEE15vE4yn4qfbI/hwT/+8ZcqxyfRZOOh62KjisXxp4D0h3JZspycXYejxAU3w==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.57.tgz",
"integrity": "sha512-d0kIVezTQtazpyWjiJIn5to8JlwfKITDqwsFv0Xc6s31N16CD2PC/Pl2OtKgS7n8WLOJbfqgIp5ixYzTAxCqMg==",
"cpu": [
"arm64"
],
@@ -1191,9 +1191,9 @@
}
},
"node_modules/@rolldown/binding-linux-x64-gnu": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.55.tgz",
"integrity": "sha512-YZCTZZM+rujxwVc6A+QZaNMJXVtmabmFYLG2VGQTKaBfYGvBKUgtbMEttnp/oZ88BMi2DzadBVhOmfQV8SuHhw==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.57.tgz",
"integrity": "sha512-E199LPijo98yrLjPCmETx8EF43sZf9t3guSrLee/ej1rCCc3zDVTR4xFfN9BRAapGVl7/8hYqbbiQPTkv73kUg==",
"cpu": [
"x64"
],
@@ -1208,9 +1208,9 @@
}
},
"node_modules/@rolldown/binding-linux-x64-musl": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.55.tgz",
"integrity": "sha512-28q9OQ/DDpFh2keS4BVAlc3N65/wiqKbk5K1pgLdu/uWbKa8hgUJofhXxqO+a+Ya2HVTUuYHneWsI2u+eu3N5Q==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.57.tgz",
"integrity": "sha512-++EQDpk/UJ33kY/BNsh7A7/P1sr/jbMuQ8cE554ZIy+tCUWCivo9zfyjDUoiMdnxqX6HLJEqqGnbGQOvzm2OMQ==",
"cpu": [
"x64"
],
@@ -1225,9 +1225,9 @@
}
},
"node_modules/@rolldown/binding-openharmony-arm64": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-beta.55.tgz",
"integrity": "sha512-LiCA4BjCnm49B+j1lFzUtlC+4ZphBv0d0g5VqrEJua/uyv9Ey1v9tiaMql1C8c0TVSNDUmrkfHQ71vuQC7YfpQ==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-beta.57.tgz",
"integrity": "sha512-voDEBcNqxbUv/GeXKFtxXVWA+H45P/8Dec4Ii/SbyJyGvCqV1j+nNHfnFUIiRQ2Q40DwPe/djvgYBs9PpETiMA==",
"cpu": [
"arm64"
],
@@ -1242,9 +1242,9 @@
}
},
"node_modules/@rolldown/binding-wasm32-wasi": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.55.tgz",
"integrity": "sha512-nZ76tY7T0Oe8vamz5Cv5CBJvrqeQxwj1WaJ2GxX8Msqs0zsQMMcvoyxOf0glnJlxxgKjtoBxAOxaAU8ERbW6Tg==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.57.tgz",
"integrity": "sha512-bRhcF7NLlCnpkzLVlVhrDEd0KH22VbTPkPTbMjlYvqhSmarxNIq5vtlQS8qmV7LkPKHrNLWyJW/V/sOyFba26Q==",
"cpu": [
"wasm32"
],
@@ -1259,9 +1259,9 @@
}
},
"node_modules/@rolldown/binding-win32-arm64-msvc": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.55.tgz",
"integrity": "sha512-TFVVfLfhL1G+pWspYAgPK/FSqjiBtRKYX9hixfs508QVEZPQlubYAepHPA7kEa6lZXYj5ntzF87KC6RNhxo+ew==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.57.tgz",
"integrity": "sha512-rnDVGRks2FQ2hgJ2g15pHtfxqkGFGjJQUDWzYznEkE8Ra2+Vag9OffxdbJMZqBWXHVM0iS4dv8qSiEn7bO+n1Q==",
"cpu": [
"arm64"
],
@@ -1276,9 +1276,9 @@
}
},
"node_modules/@rolldown/binding-win32-x64-msvc": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.55.tgz",
"integrity": "sha512-j1WBlk0p+ISgLzMIgl0xHp1aBGXenoK2+qWYc/wil2Vse7kVOdFq9aeQ8ahK6/oxX2teQ5+eDvgjdywqTL+daA==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.57.tgz",
"integrity": "sha512-OqIUyNid1M4xTj6VRXp/Lht/qIP8fo25QyAZlCP+p6D2ATCEhyW4ZIFLnC9zAGN/HMbXoCzvwfa8Jjg/8J4YEg==",
"cpu": [
"x64"
],
@@ -1293,9 +1293,9 @@
}
},
"node_modules/@rolldown/pluginutils": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.55.tgz",
"integrity": "sha512-vajw/B3qoi7aYnnD4BQ4VoCcXQWnF0roSwE2iynbNxgW4l9mFwtLmLmUhpDdcTBfKyZm1p/T0D13qG94XBLohA==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.57.tgz",
"integrity": "sha512-aQNelgx14tGA+n2tNSa9x6/jeoCL9fkDeCei7nOKnHx0fEFRRMu5ReiITo+zZD5TzWDGGRjbSYCs93IfRIyTuQ==",
"dev": true,
"license": "MIT"
},
@@ -1404,9 +1404,9 @@
]
},
"node_modules/@stencil/core": {
"version": "4.39.0",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.39.0.tgz",
"integrity": "sha512-wLASFh5wecnbxY+9pEPd6bl7AZJksLmuiBd0ShvkJ0v/N1nL4HNSw/jq2+TzgFE1+XqCUhKPDeVXFpZf1uuRDw==",
"version": "4.40.1",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.40.1.tgz",
"integrity": "sha512-cTHBvYFLf4h61TVHLibZoJcomYAoC+TNW3oi1VHcZMpWQyp/h/pHG1XQeEpzuSscQc/SJJwOYb5IvQ8vVeeCNg==",
"license": "MIT",
"bin": {
"stencil": "bin/stencil"
@@ -2247,9 +2247,9 @@
}
},
"node_modules/fastq": {
"version": "1.19.1",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
"integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
"version": "1.20.1",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
"integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -3648,14 +3648,14 @@
}
},
"node_modules/rolldown": {
"version": "1.0.0-beta.55",
"resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-beta.55.tgz",
"integrity": "sha512-r8Ws43aYCnfO07ao0SvQRz4TBAtZJjGWNvScRBOHuiNHvjfECOJBIqJv0nUkL1GYcltjvvHswRilDF1ocsC0+g==",
"version": "1.0.0-beta.57",
"resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-beta.57.tgz",
"integrity": "sha512-lMMxcNN71GMsSko8RyeTaFoATHkCh4IWU7pYF73ziMYjhHZWfVesC6GQ+iaJCvZmVjvgSks9Ks1aaqEkBd8udg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@oxc-project/types": "=0.103.0",
"@rolldown/pluginutils": "1.0.0-beta.55"
"@rolldown/pluginutils": "1.0.0-beta.57"
},
"bin": {
"rolldown": "bin/cli.mjs"
@@ -3664,19 +3664,19 @@
"node": "^20.19.0 || >=22.12.0"
},
"optionalDependencies": {
"@rolldown/binding-android-arm64": "1.0.0-beta.55",
"@rolldown/binding-darwin-arm64": "1.0.0-beta.55",
"@rolldown/binding-darwin-x64": "1.0.0-beta.55",
"@rolldown/binding-freebsd-x64": "1.0.0-beta.55",
"@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.55",
"@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.55",
"@rolldown/binding-linux-arm64-musl": "1.0.0-beta.55",
"@rolldown/binding-linux-x64-gnu": "1.0.0-beta.55",
"@rolldown/binding-linux-x64-musl": "1.0.0-beta.55",
"@rolldown/binding-openharmony-arm64": "1.0.0-beta.55",
"@rolldown/binding-wasm32-wasi": "1.0.0-beta.55",
"@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.55",
"@rolldown/binding-win32-x64-msvc": "1.0.0-beta.55"
"@rolldown/binding-android-arm64": "1.0.0-beta.57",
"@rolldown/binding-darwin-arm64": "1.0.0-beta.57",
"@rolldown/binding-darwin-x64": "1.0.0-beta.57",
"@rolldown/binding-freebsd-x64": "1.0.0-beta.57",
"@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.57",
"@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.57",
"@rolldown/binding-linux-arm64-musl": "1.0.0-beta.57",
"@rolldown/binding-linux-x64-gnu": "1.0.0-beta.57",
"@rolldown/binding-linux-x64-musl": "1.0.0-beta.57",
"@rolldown/binding-openharmony-arm64": "1.0.0-beta.57",
"@rolldown/binding-wasm32-wasi": "1.0.0-beta.57",
"@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.57",
"@rolldown/binding-win32-x64-msvc": "1.0.0-beta.57"
}
},
"node_modules/run-parallel": {
@@ -4361,9 +4361,9 @@
"license": "MIT"
},
"node_modules/vite": {
"version": "8.0.0-beta.3",
"resolved": "https://registry.npmjs.org/vite/-/vite-8.0.0-beta.3.tgz",
"integrity": "sha512-hsc59mETwVSFQj8KYpmLGwGDKoFYrQLolt2TZUy74Y0bkyF9veYolNgJH+R6loC0Ki35wEblXSMTJ6nfhDqkiQ==",
"version": "8.0.0-beta.5",
"resolved": "https://registry.npmjs.org/vite/-/vite-8.0.0-beta.5.tgz",
"integrity": "sha512-wgvJ+rdGKggZ1m0KnSYF4mEdEEaAAUWKiHe9IDl8oagjUkyrD2CdgSoxiJdpLNNzCKIZdHsAi2xMRRwrCEd4AQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4372,7 +4372,7 @@
"lightningcss": "^1.30.2",
"picomatch": "^4.0.3",
"postcss": "^8.5.6",
"rolldown": "1.0.0-beta.55",
"rolldown": "1.0.0-beta.57",
"tinyglobby": "^0.2.15"
},
"bin": {

View File

@@ -23,27 +23,27 @@
"not dead"
],
"dependencies": {
"ionicons": "~8.0.13",
"ionicons": "^8.0.13",
"normalize.css": "8.0.1",
"ol": "~10.7.0",
"ol": "^10.7.0",
"swiped-events": "1.2.0"
},
"devDependencies": {
"@biomejs/biome": "2.3.10",
"@types/node": "~25.0.3",
"browserslist": "~4.28.1",
"browserslist-to-esbuild": "~2.1.1",
"edge.js": "~6.4.0",
"less": "~4.5.1",
"mathjs": "~15.1.0",
"@types/node": "^25.0.3",
"browserslist": "^4.28.1",
"browserslist-to-esbuild": "^2.1.1",
"edge.js": "^6.4.0",
"less": "^4.5.1",
"mathjs": "^15.1.0",
"sharp": "~0.34.5",
"sort-package-json": "~3.6.0",
"stylelint": "~16.26.0",
"stylelint-config-standard-less": "~3.0.1",
"stylelint-prettier": "~5.0.3",
"svgo": "~4.0.0",
"sort-package-json": "^3.6.0",
"stylelint": "^16.26.0",
"stylelint-config-standard-less": "^3.0.1",
"stylelint-prettier": "^5.0.3",
"svgo": "^4.0.0",
"typescript": "~5.9.3",
"vite": "8.0.0-beta.3",
"vite-bundle-analyzer": "~1.3.2"
"vite": "8.0.0-beta.5",
"vite-bundle-analyzer": "^1.3.2"
}
}

View File

@@ -24,5 +24,5 @@ coloredlogs==15.0.1
docutils>=0.21.2
parameterized==0.9.0
granian[reload]==2.6.0
basedpyright==1.36.1
basedpyright==1.36.2
types-lxml==2025.11.25

View File

@@ -15,7 +15,7 @@ markdown-it-py==3.0.0
fasttext-predict==0.9.2.4
tomli==2.3.0; python_version < '3.11'
msgspec==0.20.0
typer-slim==0.20.0
typer-slim==0.21.0
isodate==0.7.2
whitenoise==6.11.0
typing-extensions==4.15.0

File diff suppressed because it is too large Load Diff

View File

@@ -3,9 +3,14 @@
Ahmia (Onions)
"""
import typing as t
from urllib.parse import urlencode, urlparse, parse_qs
from lxml.html import fromstring
from searx.utils import gen_useragent, ElementType
from searx.engines.xpath import extract_url, extract_text, eval_xpath_list, eval_xpath
from searx.network import get
from searx.enginelib import EngineCache
# about
about = {
@@ -23,6 +28,7 @@ paging = True
page_size = 10
# search url
base_url = 'http://juhanurmihxlp77nkq76byazcldy2hlmovfu2epvl5ankdibsot4csyd.onion'
search_url = 'http://juhanurmihxlp77nkq76byazcldy2hlmovfu2epvl5ankdibsot4csyd.onion/search/?{query}'
time_range_support = True
time_range_dict = {'day': 1, 'week': 7, 'month': 30}
@@ -34,10 +40,42 @@ title_xpath = './h4/a[1]'
content_xpath = './/p[1]'
correction_xpath = '//*[@id="didYouMean"]//a'
number_of_results_xpath = '//*[@id="totalResults"]'
name_token_xpath = '//form[@id="searchForm"]/input[@type="hidden"]/@name'
value_token_xpath = '//form[@id="searchForm"]/input[@type="hidden"]/@value'
CACHE: EngineCache
def setup(engine_settings: dict[str, t.Any]) -> bool:
global CACHE # pylint: disable=global-statement
CACHE = EngineCache(engine_settings["name"])
return True
def _get_tokens(dom: ElementType | None = None) -> str:
"""
The tokens are hidden in a hidden input field.
They update every minute, but allow up to 1 hour old tokens to be used.
To spend the least amount of requests, it is best to always get the newest
tokens from each request. In worst case if it has expired, it would
need to do a total of 2 requests (over tor, might be ridiculously slow).
"""
if dom is None:
resp = get(base_url, headers={'User-Agent': gen_useragent()})
dom = fromstring(resp.text)
name_token = extract_text(dom.xpath(name_token_xpath))
value_token = extract_text(dom.xpath(value_token_xpath))
return f"{name_token}:{value_token}"
def request(query, params):
params['url'] = search_url.format(query=urlencode({'q': query}))
token_str: str | None = CACHE.get('ahmia-tokens')
if not token_str:
token_str = _get_tokens()
CACHE.set('ahmia-tokens', token_str, expire=60 * 60)
name_token, value_token = token_str.split(":")
params['url'] = search_url.format(query=urlencode({'q': query, name_token: value_token}))
if params['time_range'] in time_range_dict:
params['url'] += '&' + urlencode({'d': time_range_dict[params['time_range']]})
@@ -77,4 +115,8 @@ def response(resp):
except: # pylint: disable=bare-except
pass
# Update the tokens to the newest ones
token_str = _get_tokens(dom)
CACHE.set('ahmia-tokens', token_str, expire=60 * 60)
return results

View File

@@ -106,9 +106,9 @@ class AsyncProxyTransportFixed(AsyncProxyTransport):
except ProxyConnectionError as e:
raise httpx.ProxyError("ProxyConnectionError: " + str(e.strerror), request=request) from e
except ProxyTimeoutError as e:
raise httpx.ProxyError("ProxyTimeoutError: " + e.args[0], request=request) from e
raise httpx.ProxyError("ProxyTimeoutError: " + str(e.args[0]), request=request) from e
except ProxyError as e:
raise httpx.ProxyError("ProxyError: " + e.args[0], request=request) from e
raise httpx.ProxyError("ProxyError: " + str(e.args[0]), request=request) from e
def get_transport_for_socks_proxy(

View File

@@ -433,6 +433,9 @@ engines:
# Requires Tor
- name: ahmia
engine: ahmia
# Might do up to two requests to perform a search.
# Since Tor is already slow by nature, the timeout is set very high.
timeout: 20.0
categories: onions
enable_http: true
shortcut: ah

View File

@@ -27,20 +27,22 @@
# return42 <return42@noreply.codeberg.org>, 2025.
# SecularSteve <secularsteve@noreply.codeberg.org>, 2025.
# pikzim <pikzim@noreply.codeberg.org>, 2025.
# Stzyxh <stzyxh@noreply.codeberg.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-12-05 10:19+0000\n"
"PO-Revision-Date: 2025-10-22 02:09+0000\n"
"Last-Translator: return42 <return42@noreply.codeberg.org>\n"
"PO-Revision-Date: 2025-12-25 09:21+0000\n"
"Last-Translator: Stzyxh <stzyxh@noreply.codeberg.org>\n"
"Language-Team: German <https://translate.codeberg.org/projects/searxng/"
"searxng/de/>\n"
"Language: de\n"
"Language-Team: German "
"<https://translate.codeberg.org/projects/searxng/searxng/de/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"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.15.1\n"
"Generated-By: Babel 2.17.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -737,11 +739,11 @@ msgstr "Filtern der Onion Links, die in der schwarzen Liste von Ahmia erscheinen
#: searx/plugins/calculator.py:25
msgid "Calculator"
msgstr ""
msgstr "Rechner"
#: searx/plugins/calculator.py:26
msgid "Parses and solves mathematical expressions."
msgstr ""
msgstr "Analysiert und löst mathematische Ausdrücke."
#: searx/plugins/hash_plugin.py:33
msgid "Hash plugin"
@@ -778,6 +780,8 @@ msgid ""
"Automatically loads the next page when scrolling to bottom of the current"
" page"
msgstr ""
"Lädt automatisch die nächste Seite, wenn zum Ende der aktuellen Seite "
"gescrollt wird."
#: searx/plugins/oa_doi_rewrite.py:54
msgid "Open Access DOI rewrite"
@@ -2456,4 +2460,3 @@ msgstr "Video verstecken"
#~ "Automatisches Laden der nächsten Seite "
#~ "beim Scrollen zum Ende der aktuellen "
#~ "Seite"

View File

@@ -47,20 +47,22 @@
# realkendrick_fr <realkendrick_fr@noreply.codeberg.org>, 2025.
# Carlos Solís <csolisr@azkware.net>, 2025.
# jperegrinm <jperegrinm@noreply.codeberg.org>, 2025.
# gallegonovato <gallegonovato@noreply.codeberg.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-12-05 10:19+0000\n"
"PO-Revision-Date: 2025-10-22 02:09+0000\n"
"Last-Translator: jperegrinm <jperegrinm@noreply.codeberg.org>\n"
"PO-Revision-Date: 2025-12-24 08:54+0000\n"
"Last-Translator: gallegonovato <gallegonovato@noreply.codeberg.org>\n"
"Language-Team: Spanish <https://translate.codeberg.org/projects/searxng/"
"searxng/es/>\n"
"Language: es\n"
"Language-Team: Spanish "
"<https://translate.codeberg.org/projects/searxng/searxng/es/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"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.15.1\n"
"Generated-By: Babel 2.17.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -756,11 +758,11 @@ msgstr "Filtrar resultados de onion que aparezcan en la lista negra de Ahmia."
#: searx/plugins/calculator.py:25
msgid "Calculator"
msgstr ""
msgstr "Calculadora"
#: searx/plugins/calculator.py:26
msgid "Parses and solves mathematical expressions."
msgstr ""
msgstr "Analiza y resuelve expresiones matemáticas."
#: searx/plugins/hash_plugin.py:33
msgid "Hash plugin"
@@ -797,6 +799,8 @@ msgid ""
"Automatically loads the next page when scrolling to bottom of the current"
" page"
msgstr ""
"Carga automáticamente la siguiente página al desplazarse a la parte inferior "
"de la página actual"
#: searx/plugins/oa_doi_rewrite.py:54
msgid "Open Access DOI rewrite"
@@ -2457,4 +2461,3 @@ msgstr "ocultar video"
#~ "Cargar automáticamente la siguiente página "
#~ "cuando llegues al final de la "
#~ "página actual"

View File

@@ -22,7 +22,7 @@ msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-12-05 10:19+0000\n"
"PO-Revision-Date: 2025-12-10 16:10+0000\n"
"PO-Revision-Date: 2025-12-23 13:21+0000\n"
"Last-Translator: Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>\n"
"Language-Team: Estonian <https://translate.codeberg.org/projects/searxng/"
"searxng/et/>\n"
@@ -31,7 +31,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.14.3\n"
"X-Generator: Weblate 5.15.1\n"
"Generated-By: Babel 2.17.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -1279,23 +1279,23 @@ msgstr "Ajavahemik"
#: searx/templates/simple/filters/time_range.html:3
msgid "Anytime"
msgstr "Igal ajal"
msgstr "Millal iganes"
#: searx/templates/simple/filters/time_range.html:6
msgid "Last day"
msgstr "Viimane päev"
msgstr "Viimase päeva jooksul"
#: searx/templates/simple/filters/time_range.html:9
msgid "Last week"
msgstr "Viimane nädal"
msgstr "Eelmisel nädalal"
#: searx/templates/simple/filters/time_range.html:12
msgid "Last month"
msgstr "Viimane kuu"
msgstr "Eelmisel kuul"
#: searx/templates/simple/filters/time_range.html:15
msgid "Last year"
msgstr "Viimane aasta"
msgstr "Eelmisel aastal"
#: searx/templates/simple/messages/no_cookies.html:3
msgid "Information!"

View File

@@ -43,20 +43,22 @@
# return42 <return42@noreply.codeberg.org>, 2025.
# LinuxWizard <linuxwizard@noreply.codeberg.org>, 2025.
# langckx <langckx@noreply.codeberg.org>, 2025.
# MaiuZ <maiuz@noreply.codeberg.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-12-05 10:19+0000\n"
"PO-Revision-Date: 2025-10-27 14:09+0000\n"
"Last-Translator: langckx <langckx@noreply.codeberg.org>\n"
"PO-Revision-Date: 2025-12-20 11:21+0000\n"
"Last-Translator: MaiuZ <maiuz@noreply.codeberg.org>\n"
"Language-Team: Italian <https://translate.codeberg.org/projects/searxng/"
"searxng/it/>\n"
"Language: it\n"
"Language-Team: Italian "
"<https://translate.codeberg.org/projects/searxng/searxng/it/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"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.15.1\n"
"Generated-By: Babel 2.17.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -753,11 +755,11 @@ msgstr "Escludi i risultati onion che appaiono nella blacklist Ahmia."
#: searx/plugins/calculator.py:25
msgid "Calculator"
msgstr ""
msgstr "Calcolatrice"
#: searx/plugins/calculator.py:26
msgid "Parses and solves mathematical expressions."
msgstr ""
msgstr "Analizza e risolve espressioni matematiche."
#: searx/plugins/hash_plugin.py:33
msgid "Hash plugin"
@@ -792,6 +794,8 @@ msgid ""
"Automatically loads the next page when scrolling to bottom of the current"
" page"
msgstr ""
"Carica automaticamente la pagina successiva quando si scorre fino alla fine "
"della pagina corrente"
#: searx/plugins/oa_doi_rewrite.py:54
msgid "Open Access DOI rewrite"
@@ -2450,4 +2454,3 @@ msgstr "nascondi video"
#~ "Carica automaticamente la prossima pagina "
#~ "quando scorri alla fine della pagina "
#~ "corrente"

View File

@@ -54,7 +54,7 @@ msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-12-05 10:19+0000\n"
"PO-Revision-Date: 2025-12-06 09:07+0000\n"
"PO-Revision-Date: 2025-12-23 13:21+0000\n"
"Last-Translator: Outbreak2096 <outbreak2096@noreply.codeberg.org>\n"
"Language-Team: Chinese (Simplified Han script) <https://"
"translate.codeberg.org/projects/searxng/searxng/zh_Hans/>\n"
@@ -63,7 +63,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.14.3\n"
"X-Generator: Weblate 5.15.1\n"
"Generated-By: Babel 2.17.0\n"
#. CONSTANT_NAMES['NO_SUBGROUPING']
@@ -1291,19 +1291,19 @@ msgstr "不限时间"
#: searx/templates/simple/filters/time_range.html:6
msgid "Last day"
msgstr "一天内"
msgstr "过去一天内"
#: searx/templates/simple/filters/time_range.html:9
msgid "Last week"
msgstr "一周内"
msgstr "过去一周内"
#: searx/templates/simple/filters/time_range.html:12
msgid "Last month"
msgstr "月内"
msgstr "过去一个月内"
#: searx/templates/simple/filters/time_range.html:15
msgid "Last year"
msgstr "一年内"
msgstr "过去一年内"
#: searx/templates/simple/messages/no_cookies.html:3
msgid "Information!"