|
from duckduckgo_search import DDGS |
|
from serp.base import SERPBackendBase, SerpResultItem |
|
|
|
|
|
class DuckDuckGoSerpBackend(SERPBackendBase): |
|
|
|
def __init__(self): |
|
self.ddg = DDGS() |
|
super().__init__() |
|
|
|
@property |
|
def name(self): |
|
return "duckduckgo" |
|
|
|
async def query(self, query, client) -> list[SerpResultItem]: |
|
results = [] |
|
|
|
for result in self.ddg.text(query.query, max_results=query.n_results): |
|
results.append(SerpResultItem( |
|
title=result["title"], |
|
body=result["body"], |
|
href=result["href"], |
|
content_slug=None)) |
|
|
|
return results |
|
|
|
@property |
|
def category(self): |
|
return "general" |
|
|