diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index 4b118d64b..00b5c5c9e 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -262,9 +262,10 @@ class SearchResult: title: str key: str - author: str - year: str connector: object + author: str = None + year: str = None + cover: str = None confidence: int = 1 def __repr__(self): diff --git a/bookwyrm/connectors/bookwyrm_connector.py b/bookwyrm/connectors/bookwyrm_connector.py index 742d7e858..f7869d55c 100644 --- a/bookwyrm/connectors/bookwyrm_connector.py +++ b/bookwyrm/connectors/bookwyrm_connector.py @@ -24,5 +24,4 @@ class Connector(AbstractMinimalConnector): return data def format_isbn_search_result(self, search_result): - search_result["connector"] = self - return SearchResult(**search_result) + return self.format_search_result(search_result) diff --git a/bookwyrm/connectors/openlibrary.py b/bookwyrm/connectors/openlibrary.py index c83a65d6b..8df96526f 100644 --- a/bookwyrm/connectors/openlibrary.py +++ b/bookwyrm/connectors/openlibrary.py @@ -95,10 +95,12 @@ class Connector(AbstractConnector): url = "%s%s" % (self.base_url, author_id) yield self.get_or_create_author(url) - def get_cover_url(self, cover_blob): + def get_cover_url(self, cover_blob, size='L'): """ ask openlibrary for the cover """ + if not cover_blob: + return None cover_id = cover_blob[0] - image_name = "%s-L.jpg" % cover_id + image_name = "%s-%s.jpg" % (cover_id, size) return "%s/b/id/%s" % (self.covers_url, image_name) def parse_search_data(self, data): @@ -108,12 +110,15 @@ class Connector(AbstractConnector): # build the remote id from the openlibrary key key = self.books_url + search_result["key"] author = search_result.get("author_name") or ["Unknown"] + cover_blob = search_result.get("cover_i") + cover = self.get_cover_url([cover_blob], size='M') if cover_blob else None return SearchResult( title=search_result.get("title"), key=key, author=", ".join(author), connector=self, year=search_result.get("first_publish_year"), + cover=cover, ) def parse_isbn_search_data(self, data): diff --git a/bookwyrm/connectors/self_connector.py b/bookwyrm/connectors/self_connector.py index 60acb59bd..10777b2b6 100644 --- a/bookwyrm/connectors/self_connector.py +++ b/bookwyrm/connectors/self_connector.py @@ -67,20 +67,12 @@ class Connector(AbstractConnector): if search_result.published_date else None, connector=self, + cover='%s%s' % (self.covers_url, search_result.cover), confidence=search_result.rank if hasattr(search_result, "rank") else 1, ) def format_isbn_search_result(self, search_result): - return SearchResult( - title=search_result.title, - key=search_result.remote_id, - author=search_result.author_text, - year=search_result.published_date.year - if search_result.published_date - else None, - connector=self, - confidence=search_result.rank if hasattr(search_result, "rank") else 1, - ) + return self.format_search_result(search_result) def is_work_data(self, data): pass diff --git a/bookwyrm/management/commands/initdb.py b/bookwyrm/management/commands/initdb.py index 6b3f3762e..d6101c877 100644 --- a/bookwyrm/management/commands/initdb.py +++ b/bookwyrm/management/commands/initdb.py @@ -76,7 +76,7 @@ def init_connectors(): connector_file="self_connector", base_url="https://%s" % DOMAIN, books_url="https://%s/book" % DOMAIN, - covers_url="https://%s/images/covers" % DOMAIN, + covers_url="https://%s/images/" % DOMAIN, search_url="https://%s/search?q=" % DOMAIN, isbn_search_url="https://%s/isbn/" % DOMAIN, priority=1, @@ -88,7 +88,7 @@ def init_connectors(): connector_file="bookwyrm_connector", base_url="https://bookwyrm.social", books_url="https://bookwyrm.social/book", - covers_url="https://bookwyrm.social/images/covers", + covers_url="https://bookwyrm.social/images/", search_url="https://bookwyrm.social/search?q=", isbn_search_url="https://bookwyrm.social/isbn/", priority=2, diff --git a/bookwyrm/templates/search_results.html b/bookwyrm/templates/search_results.html index 13497df83..6444cc184 100644 --- a/bookwyrm/templates/search_results.html +++ b/bookwyrm/templates/search_results.html @@ -19,7 +19,7 @@ @@ -50,12 +50,7 @@ diff --git a/bookwyrm/templates/snippets/search_result_text.html b/bookwyrm/templates/snippets/search_result_text.html index 360090509..059b8e7e8 100644 --- a/bookwyrm/templates/snippets/search_result_text.html +++ b/bookwyrm/templates/snippets/search_result_text.html @@ -1,3 +1,34 @@ {% load i18n %} -{% if link %}{{ result.title }}{% else %}{{ result.title }}{% endif %} -{% if result.author %} {% blocktrans with author=result.author %}by {{ author }}{% endblocktrans %}{% endif %}{% if result.year %} ({{ result.year }}){% endif %} +
+
+ {% if result.cover %} + + {% else %} +
+ +
+

{% trans "No cover" %}

+
+
+ {% endif %} +
+ +
+

+ + {{ result.title }} + + {% if result.author %} + {% blocktrans with author=result.author %}by {{ author }}{% endblocktrans %}{% endif %}{% if result.year %} ({{ result.year }}) + {% endif %} +

+ + {% if remote_result %} +
+ {% csrf_token %} + + +
+ {% endif %} +
+