31 lines
790 B
Python
31 lines
790 B
Python
import os
|
|
from googlesearch import search
|
|
|
|
from . import SearchEngine, SearchResult
|
|
|
|
from typing import List
|
|
|
|
|
|
class Google(SearchEngine):
|
|
def __init__(self) -> None:
|
|
super().__init__()
|
|
self.proxy = os.environ.get("https_proxy")
|
|
|
|
async def search(self, query: str, num_results: int) -> List[SearchResult]:
|
|
results = []
|
|
try:
|
|
ls = search(
|
|
query,
|
|
advanced=True,
|
|
num_results=num_results,
|
|
timeout=3,
|
|
proxy=self.proxy,
|
|
)
|
|
for i in ls:
|
|
results.append(
|
|
SearchResult(title=i.title, url=i.url, snippet=i.description)
|
|
)
|
|
except Exception as e:
|
|
raise e
|
|
return results
|