|
from typing import List |
|
from duckduckgo_search import DDGS |
|
import re |
|
|
|
|
|
def tighten(q: str) -> str: |
|
quoted = re.findall(r'"([^"]+)"', q) |
|
caps = re.findall(r'\b([A-Z0-9][\w-]{2,})', q) |
|
short = " ".join(quoted + caps) |
|
return short or q |
|
|
|
|
|
def simple_search(query: str, max_results: int = 5) -> List[str]: |
|
""" |
|
Perform a DuckDuckGo search and return 'title β url' snippets. |
|
""" |
|
query = tighten(query) |
|
with DDGS() as ddgs: |
|
raw = list(ddgs.text(query, max_results=max_results)) |
|
out = [] |
|
for r in raw: |
|
try: |
|
title = r.get("title", "") |
|
link = r.get("href") or r.get("link", "") |
|
out.append(f"{title} β {link}") |
|
except Exception: |
|
pass |
|
return out |
|
|