class DuckDuckGoSearch(SearchEngine):
    """DuckDuckGo検索"""
    
    def __init__(self, timeout: int = 30):
        super().__init__("duckduckgo", timeout)
    
    def search(self, query: str, max_results: int = 5) -> tuple[List[SearchResult], float, Optional[str]]:
        """DuckDuckGo検索を実行"""
        if DDGS is None:
            return [], 0.0, "ddgs がインストールされていません（pip install ddgs）"
        
        try:
            start_time = datetime.now()
            
            with DDGS() as ddgs:
                raw_results = list(ddgs.text(
                    query,
                    max_results=max_results,
                    region='jp-jp',
                    safesearch='off',
                    timelimit=None
                ))
            
            elapsed = (datetime.now() - start_time).total_seconds()
            
            results = []
            for item in raw_results:
                result = self._format_result(
                    title=item.get('title', 'N/A'),
                    url=item.get('href', 'N/A'),
                    description=item.get('body', 'N/A'),
                    response_time=elapsed,
                    extra_data=None
                )
                results.append(result)
            
            return results, elapsed, None
            
        except Exception as e:
            return [], 0.0, str(e)
