Added support for yahoo, bing, yandex, ecosia #199

This commit is contained in:
ManeraKai 2022-04-18 11:32:20 +03:00
parent b657b1ae2b
commit 8b88d53dee
No known key found for this signature in database
GPG Key ID: 5ABC31FFD562E337
4 changed files with 46 additions and 27 deletions

View File

@ -19,6 +19,7 @@ body.option(dir="auto")
option(value="searxng") SearXNG
option(value="whoogle") Whoogle
option(value="startpage") Startpage
option(value="ecosia") Ecosia
#searx-whoogle

View File

@ -4,8 +4,13 @@ import commonHelper from './common.js'
const targets = [
/^https?:\/{2}(www\.|search\.|)google(\.[a-z]{2,3}){1,2}(\/search(\?.*|$)|\/$)/,
/^https?:\/{2}libredirect\.invalid/
// /^https?:\/{2}yandex\.com(\...|)(\/search\/..*|\/$)/,
/^https?:\/{2}(www\.|)bing\.com/,
/^https?:\/{2}search\.yahoo(\.[a-z]{2,3}){1,2}/,
/^https?:\/{2}yandex(\.[a-z]{2,3}){1,2}/,
/^https?:\/{2}libredirect\.invalid/,
];
let redirects = {
"searx": {
@ -25,7 +30,9 @@ let redirects = {
},
"startpage": {
"normal": "https://www.startpage.com",
"tor": null
},
"ecosia": {
"normal": "https://www.ecosia.org",
}
};
const getRedirects = () => redirects;
@ -398,8 +405,7 @@ function redirect(url) {
if (!targets.some(rx => rx.test(url.href))) return;
if (url.searchParams.has('tbm')) return;
if (!url.searchParams.has('q') && url.pathname != '/') return;
if (url.hostname.includes('google') && !url.searchParams.has('q') && url.pathname != '/') return;
let randomInstance;
let path;
if (frontend == 'searx') {
@ -433,10 +439,21 @@ function redirect(url) {
randomInstance = redirects.startpage.normal;
path = "/do/search";
}
if (!url.searchParams.has('q')) path = '/';
else if (frontend == 'ecosia') {
randomInstance = redirects.ecosia.normal;
path = '/search';
}
if (
((url.hostname.includes('google') || url.hostname.includes('bing')) && !url.searchParams.has('q')) ||
(url.hostname.includes('yahoo') && !url.searchParams.has('p')) ||
(url.hostname.includes('yandex') && !url.searchParams.has('text'))
) path = '/';
let searchQuery = "";
if (url.searchParams.has('q')) searchQuery = `?q=${url.searchParams.get('q')}`;
if ((url.hostname.includes('google') || url.hostname.includes('bing') || url.hostname.includes('libredirect.invalid')) && url.searchParams.has('q')) searchQuery = `?q=${url.searchParams.get('q')}`;
if (url.hostname.includes('yahoo') && url.searchParams.has('p')) searchQuery = `?q=${url.searchParams.get('p')}`;
if (url.hostname.includes('yandex') && url.searchParams.has('text')) searchQuery = `?q=${url.searchParams.get('text')}`;
return `${randomInstance}${path}${searchQuery}`;
}
@ -500,7 +517,7 @@ function switchInstance(url) {
}
async function init() {
return new Promise((resolve) => {
return new Promise(resolve => {
fetch('/instances/data.json').then(response => response.text()).then(data => {
let dataJson = JSON.parse(data);
browser.storage.local.get(

View File

@ -69,6 +69,7 @@
<option value="searxng">SearXNG</option>
<option value="whoogle">Whoogle</option>
<option value="startpage">Startpage</option>
<option value="ecosia">Ecosia</option>
</select>
</div>
<div id="searx-whoogle">

View File

@ -34,7 +34,7 @@ function changeFrontendsSettings(frontend) {
whoogleDivElement.style.display = 'block';
SearxWhoogleElement.style.display = 'block';
}
else if (frontend == 'startpage') {
else if (frontend == 'startpage' || frontend == 'ecosia') {
frontendElement.innerHTML = `Frontend: <span style="color:red;">This is a centralized service</span>`;
searxDivElement.style.display = 'none';
searxngDivElement.style.display = 'none';