mirror of
https://github.com/ItzCrazyKns/Perplexica.git
synced 2025-05-01 08:42:38 +00:00
62 lines
1.3 KiB
TypeScript
62 lines
1.3 KiB
TypeScript
import { searchSearxng } from '../../../lib/searchEngines/searxng';
|
|
|
|
const articleWebsites = [
|
|
'yahoo.com',
|
|
'www.exchangewire.com',
|
|
'businessinsider.com',
|
|
/* 'wired.com',
|
|
'mashable.com',
|
|
'theverge.com',
|
|
'gizmodo.com',
|
|
'cnet.com',
|
|
'venturebeat.com', */
|
|
];
|
|
|
|
const topics = ['AI', 'tech']; /* TODO: Add UI to customize this */
|
|
|
|
export const GET = async (req: Request) => {
|
|
try {
|
|
const data = (
|
|
await Promise.all([
|
|
...new Array(articleWebsites.length * topics.length)
|
|
.fill(0)
|
|
.map(async (_, i) => {
|
|
return (
|
|
await searchSearxng(
|
|
`site:${articleWebsites[i % articleWebsites.length]} ${
|
|
topics[i % topics.length]
|
|
}`,
|
|
{
|
|
engines: ['bing news'],
|
|
pageno: 1,
|
|
},
|
|
)
|
|
).results;
|
|
}),
|
|
])
|
|
)
|
|
.map((result) => result)
|
|
.flat()
|
|
.sort(() => Math.random() - 0.5);
|
|
|
|
return Response.json(
|
|
{
|
|
blogs: data,
|
|
},
|
|
{
|
|
status: 200,
|
|
},
|
|
);
|
|
} catch (err) {
|
|
console.error(`An error occurred in discover route: ${err}`);
|
|
return Response.json(
|
|
{
|
|
message: 'An error has occurred',
|
|
},
|
|
{
|
|
status: 500,
|
|
},
|
|
);
|
|
}
|
|
};
|