Get inventaire entity descriptions

This commit is contained in:
Mouse Reeve 2021-04-29 10:30:38 -07:00
parent cfd2c05ae2
commit ca86af22ce
2 changed files with 19 additions and 3 deletions

View file

@ -23,6 +23,7 @@ class Connector(AbstractConnector):
Mapping("title", remote_field="wdt:P1476", formatter=get_first), Mapping("title", remote_field="wdt:P1476", formatter=get_first),
Mapping("subtitle", remote_field="wdt:P1680", formatter=get_first), Mapping("subtitle", remote_field="wdt:P1680", formatter=get_first),
Mapping("inventaireId", remote_field="uri"), Mapping("inventaireId", remote_field="uri"),
Mapping("description", remote_field="sitelinks", formatter=self.get_description),
Mapping("cover", remote_field="image", formatter=self.get_cover_url), Mapping("cover", remote_field="image", formatter=self.get_cover_url),
Mapping("isbn13", remote_field="wdt:P212", formatter=get_first), Mapping("isbn13", remote_field="wdt:P212", formatter=get_first),
Mapping("isbn10", remote_field="wdt:P957", formatter=get_first), Mapping("isbn10", remote_field="wdt:P957", formatter=get_first),
@ -44,6 +45,7 @@ class Connector(AbstractConnector):
self.author_mappings = [ self.author_mappings = [
Mapping("id", remote_field="uri", formatter=self.get_remote_id), Mapping("id", remote_field="uri", formatter=self.get_remote_id),
Mapping("name", remote_field="labels", formatter=get_language_code), Mapping("name", remote_field="labels", formatter=get_language_code),
Mapping("bio", remote_field="sitelinks", formatter=self.get_description),
Mapping("goodreadsKey", remote_field="wdt:P2963", formatter=get_first), Mapping("goodreadsKey", remote_field="wdt:P2963", formatter=get_first),
Mapping("isni", remote_field="wdt:P213", formatter=get_first), Mapping("isni", remote_field="wdt:P213", formatter=get_first),
Mapping("viafId", remote_field="wdt:P214", formatter=get_first), Mapping("viafId", remote_field="wdt:P214", formatter=get_first),
@ -82,7 +84,7 @@ class Connector(AbstractConnector):
return SearchResult( return SearchResult(
title=search_result.get("label"), title=search_result.get("label"),
key=self.get_remote_id(search_result.get("uri")), key=self.get_remote_id(search_result.get("uri")),
view_link="{:s}{:s}".format(self.base_url, search_result.get("uri")), view_link="{:s}/entity/{:s}".format(self.base_url, search_result.get("uri")),
cover=cover, cover=cover,
connector=self, connector=self,
) )
@ -102,7 +104,7 @@ class Connector(AbstractConnector):
return SearchResult( return SearchResult(
title=title[0], title=title[0],
key=self.get_remote_id(search_result.get("uri")), key=self.get_remote_id(search_result.get("uri")),
view_link="{:s}{:s}".format(self.base_url, search_result.get("uri")), view_link="{:s}/entity/{:s}".format(self.base_url, search_result.get("uri")),
cover=self.get_cover_url(search_result.get("image")), cover=self.get_cover_url(search_result.get("image")),
connector=self, connector=self,
) )
@ -184,6 +186,20 @@ class Connector(AbstractConnector):
results.append(get_language_code(data.get("labels"))) results.append(get_language_code(data.get("labels")))
return results return results
def get_description(self, links):
""" grab an extracted except from wikipedia """
link = links.get("enwiki")
if not link:
return ""
url = "{:s}/api/data?action=wp-extract&lang=en&title={:s}".format(
self.base_url, link
)
try:
data = get_data(url)
except ConnectorException:
return ""
return data.get("extract")
def get_language_code(options, code="en"): def get_language_code(options, code="en"):
"""when there are a bunch of translation but we need a single field""" """when there are a bunch of translation but we need a single field"""

View file

@ -98,7 +98,7 @@ def init_connectors():
identifier="inventaire.io", identifier="inventaire.io",
name="Inventaire", name="Inventaire",
connector_file="inventaire", connector_file="inventaire",
base_url="https://inventaire.io/entity/", base_url="https://inventaire.io",
books_url="https://inventaire.io/api/entities", books_url="https://inventaire.io/api/entities",
covers_url="https://inventaire.io", covers_url="https://inventaire.io",
search_url="https://inventaire.io/api/search?types=works&types=works&search=", search_url="https://inventaire.io/api/search?types=works&types=works&search=",