Spaces:
Running
Running
from typing import List, Union | |
from dataclasses import dataclass | |
import wikipedia | |
from wikipedia import set_lang | |
from graphgen.utils import detect_main_language, logger | |
class WikiSearch: | |
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 | |