|
12 | 12 | const MIN_MONTH_UPTIME = 95; |
13 | 13 | const FALLBACKS = ['searx.bndkt.io', 'paulgo.io', 'search.im-in.space', 'search.ononoki.org', 'search.undertale.uk', 'searx.oloke.xyz', 'searxng.biz']; |
14 | 14 |
|
| 15 | +const params = new URLSearchParams(window.location.search); |
| 16 | + |
15 | 17 | const loadInstances = async () => { |
| 18 | + const fallbacks = FALLBACKS.map(i => `https://${i}/`); |
| 19 | + if (params.get('fast') === 1) return fallbacks; |
| 20 | + |
16 | 21 | const response = await fetch('https://searx.space/data/instances.json'); |
17 | 22 | if (!response.ok) { |
18 | 23 | console.log('fallback'); |
19 | | - return FALLBACKS.map(i => `https://${i}/`); |
| 24 | + return fallbacks; |
20 | 25 | } |
21 | 26 |
|
22 | 27 | const instances = (await response.json()).instances; |
|
57 | 62 | }; |
58 | 63 |
|
59 | 64 | const redirect = (url, query) => { |
60 | | - url.searchParams.set('q', query); |
61 | | - url.searchParams.set('language', params.get('language') || detectLang(query)); |
| 65 | + params |
| 66 | + .entries() |
| 67 | + .filter(([k, _]) => k !== 'fast') |
| 68 | + .forEach(([k, v]) => url.searchParams.set(k, v)); |
62 | 69 | console.log(url); |
63 | 70 | window.location.replace(url.toString()); |
64 | 71 | }; |
65 | 72 |
|
66 | | -const params = new URLSearchParams(window.location.search); |
67 | | -const query = params.get('q'); |
68 | | - |
69 | 73 | const pick = xs => xs[Math.floor(Math.random() * xs.length)]; |
70 | 74 | const targetUrl = new URL(pick(await loadInstances())); |
71 | 75 | targetUrl.pathname = '/search'; |
72 | 76 | targetUrl.searchParams.set('safesearch', params.get('safesearch') || '0'); |
73 | 77 |
|
| 78 | +const query = params.get('q'); |
74 | 79 | if (query) { |
75 | 80 | redirect(targetUrl, query); |
76 | 81 | } else { |
|
0 commit comments