Merge branch 'main' into fixes-search-display

This commit is contained in:
Mouse Reeve
2021-05-10 13:29:39 -07:00
committed by GitHub
2 changed files with 65 additions and 20 deletions

View File

@ -19,7 +19,7 @@ class ConnectorException(HTTPError):
"""when the connector can't do what was asked"""
def search(query, min_confidence=0.1):
def search(query, min_confidence=0.1, return_first=False):
"""find books based on arbitary keywords"""
if not query:
return []
@ -31,18 +31,15 @@ def search(query, min_confidence=0.1):
for connector in get_connectors():
result_set = None
if maybe_isbn:
if maybe_isbn and connector.isbn_search_url and connector.isbn_search_url == "":
# Search on ISBN
if not connector.isbn_search_url or connector.isbn_search_url == "":
result_set = []
else:
try:
result_set = connector.isbn_search(isbn)
except Exception as e: # pylint: disable=broad-except
logger.exception(e)
continue
try:
result_set = connector.isbn_search(isbn)
except Exception as e: # pylint: disable=broad-except
logger.exception(e)
# if this fails, we can still try regular search
# if no isbn search or results, we fallback to generic search
# if no isbn search results, we fallback to generic search
if not result_set:
try:
result_set = connector.search(query, min_confidence=min_confidence)
@ -51,6 +48,10 @@ def search(query, min_confidence=0.1):
logger.exception(e)
continue
if return_first and result_set:
# if we found anything, return it
return result_set[0]
if result_set or connector.local:
results.append(
{
@ -59,6 +60,9 @@ def search(query, min_confidence=0.1):
}
)
if return_first:
return None
return results
@ -78,11 +82,7 @@ def isbn_local_search(query, raw=False):
def first_search_result(query, min_confidence=0.1):
"""search until you find a result that fits"""
for connector in get_connectors():
result = connector.search(query, min_confidence=min_confidence)
if result:
return result[0]
return None
return search(query, min_confidence=min_confidence, return_first=True) or None
def get_connectors():