Spaces:
Runtime error
Runtime error
| import requests | |
| class WikiDBAPI: | |
| def __init__(self, api_endpoint): | |
| """Initialize the database with API endpoint URL""" | |
| self.api_endpoint = api_endpoint.rstrip('/') | |
| # Verify connection and get initial article count | |
| self._article_count = self._get_article_count() | |
| print(f"Connected to Wiki API at {api_endpoint} with {self._article_count} articles") | |
| def __del__(self): | |
| """Clean up resources when object is destroyed""" | |
| # No persistent connection to close in the API version | |
| pass | |
| def _get_article_count(self): | |
| """Get the number of articles via API""" | |
| response = requests.get(f"{self.api_endpoint}/article_count") | |
| response.raise_for_status() | |
| return response.json()["count"] | |
| def get_article_count(self): | |
| """Return the number of articles""" | |
| return self._article_count | |
| def get_all_article_titles(self): | |
| """Return a list of all article titles""" | |
| response = requests.get(f"{self.api_endpoint}/article_titles") | |
| response.raise_for_status() | |
| return response.json()["titles"] | |
| def get_article(self, title): | |
| """Get article data by title""" | |
| response = requests.get(f"{self.api_endpoint}/article", params={"title": title}) | |
| if response.status_code == 404: | |
| return {} | |
| response.raise_for_status() | |
| return response.json() | |
| def article_exists(self, title): | |
| """Check if an article exists""" | |
| response = requests.get(f"{self.api_endpoint}/article_exists", params={"title": title}) | |
| response.raise_for_status() | |
| return response.json()["exists"] | |
| def get_article_text(self, title): | |
| """Get the text of an article""" | |
| response = requests.get(f"{self.api_endpoint}/article_text", params={"title": title}) | |
| if response.status_code == 404: | |
| return '' | |
| response.raise_for_status() | |
| return response.json()["text"] | |
| def get_article_links(self, title): | |
| """Get the links of an article""" | |
| response = requests.get(f"{self.api_endpoint}/article_links", params={"title": title}) | |
| if response.status_code == 404: | |
| return [] | |
| response.raise_for_status() | |
| return response.json()["links"] | |