Merge branch 'main' into fixes-search-display
This commit is contained in:
@ -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():
|
||||
|
Reference in New Issue
Block a user