Added support for yahoo, bing, yandex, ecosia #199
This commit is contained in:
parent
b657b1ae2b
commit
8b88d53dee
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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';
|
||||
|
|
Loading…
Reference in New Issue