GraphGen / graphgen /models /search /wiki_search.py
chenzihong-gavin
init
acd7cf4
from typing import List, Union
from dataclasses import dataclass
import wikipedia
from wikipedia import set_lang
from graphgen.utils import detect_main_language, logger
@dataclass
class WikiSearch:
@staticmethod
def set_language(language: str):
assert language in ["en", "zh"], "Only support English and Chinese"
set_lang(language)
async def search(self, query: str) -> Union[List[str], None]:
self.set_language(detect_main_language(query))
return wikipedia.search(query)
async def summary(self, query: str) -> Union[str, None]:
self.set_language(detect_main_language(query))
try:
result = wikipedia.summary(query, auto_suggest=False, redirect=False)
except wikipedia.exceptions.DisambiguationError as e:
logger.error("DisambiguationError: %s", e)
result = None
return result
async def page(self, query: str) -> Union[str, None]:
self.set_language(detect_main_language(query))
try:
result = wikipedia.page(query, auto_suggest=False, redirect=False).content
except wikipedia.exceptions.DisambiguationError as e:
logger.error("DisambiguationError: %s", e)
result = None
return result