Fix search provider
This commit is contained in:
parent
f2cc66d414
commit
e3714e9b6a
|
@ -147,25 +147,36 @@ router.post('/searxng', jsonParser, async (request, response) => {
|
||||||
|
|
||||||
console.log('SearXNG query', baseUrl, query);
|
console.log('SearXNG query', baseUrl, query);
|
||||||
|
|
||||||
const url = new URL(baseUrl);
|
const mainPageUrl = new URL(baseUrl);
|
||||||
const params = new URLSearchParams();
|
const mainPageRequest = await fetch(mainPageUrl, { headers: visitHeaders });
|
||||||
params.append('q', query);
|
|
||||||
params.append('format', 'html');
|
|
||||||
url.pathname = '/search';
|
|
||||||
url.search = params.toString();
|
|
||||||
|
|
||||||
const result = await fetch(url, {
|
if (!mainPageRequest.ok) {
|
||||||
method: 'POST',
|
console.log('SearXNG request failed', mainPageRequest.statusText);
|
||||||
headers: visitHeaders,
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!result.ok) {
|
|
||||||
const text = await result.text();
|
|
||||||
console.log('SearXNG request failed', result.statusText, text);
|
|
||||||
return response.sendStatus(500);
|
return response.sendStatus(500);
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = await result.text();
|
const mainPageText = await mainPageRequest.text();
|
||||||
|
const clientHref = mainPageText.match(/href="(\/client.+\.css)"/)?.[1];
|
||||||
|
|
||||||
|
if (clientHref) {
|
||||||
|
const clientUrl = new URL(clientHref, baseUrl);
|
||||||
|
await fetch(clientUrl, { headers: visitHeaders });
|
||||||
|
}
|
||||||
|
|
||||||
|
const searchUrl = new URL('/search', baseUrl);
|
||||||
|
const searchParams = new URLSearchParams();
|
||||||
|
searchParams.append('q', query);
|
||||||
|
searchUrl.search = searchParams.toString();
|
||||||
|
|
||||||
|
const searchResult = await fetch(searchUrl, { headers: visitHeaders });
|
||||||
|
|
||||||
|
if (!searchResult.ok) {
|
||||||
|
const text = await searchResult.text();
|
||||||
|
console.log('SearXNG request failed', searchResult.statusText, text);
|
||||||
|
return response.sendStatus(500);
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = await searchResult.text();
|
||||||
return response.send(data);
|
return response.send(data);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log('SearXNG request failed', error);
|
console.log('SearXNG request failed', error);
|
||||||
|
|
Loading…
Reference in New Issue