mirror of
				https://github.com/ItzCrazyKns/Perplexica.git
				synced 2025-10-31 19:38:13 +00:00 
			
		
		
		
	feat(routes): add discover route
This commit is contained in:
		
							
								
								
									
										61
									
								
								ui/app/api/discover/route.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								ui/app/api/discover/route.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | ||||
| import { searchSearxng } from '@/lib/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 ocurred in discover route: ${err}`); | ||||
|     return Response.json( | ||||
|       { | ||||
|         message: 'An error has occurred', | ||||
|       }, | ||||
|       { | ||||
|         status: 500, | ||||
|       }, | ||||
|     ); | ||||
|   } | ||||
| }; | ||||
| @@ -19,7 +19,7 @@ const Page = () => { | ||||
|   useEffect(() => { | ||||
|     const fetchData = async () => { | ||||
|       try { | ||||
|         const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/discover`, { | ||||
|         const res = await fetch(`/api/discover`, { | ||||
|           method: 'GET', | ||||
|           headers: { | ||||
|             'Content-Type': 'application/json', | ||||
|   | ||||
		Reference in New Issue
	
	Block a user