Fix:Audible book match not falling back to search after failed ASIN #3314

This commit is contained in:
advplyr 2024-08-20 17:04:48 -05:00
parent 7a7a779824
commit 149bb3e5b2

View File

@ -87,10 +87,10 @@ class Audible {
* @param {string} asin * @param {string} asin
* @param {string} region * @param {string} region
* @param {number} [timeout] response timeout in ms * @param {number} [timeout] response timeout in ms
* @returns {Promise<Object[]>} * @returns {Promise<Object>}
*/ */
asinSearch(asin, region, timeout = this.#responseTimeout) { asinSearch(asin, region, timeout = this.#responseTimeout) {
if (!asin) return [] if (!asin) return null
if (!timeout || isNaN(timeout)) timeout = this.#responseTimeout if (!timeout || isNaN(timeout)) timeout = this.#responseTimeout
asin = encodeURIComponent(asin.toUpperCase()) asin = encodeURIComponent(asin.toUpperCase())
@ -102,12 +102,12 @@ class Audible {
timeout timeout
}) })
.then((res) => { .then((res) => {
if (!res || !res.data || !res.data.asin) return null if (!res?.data?.asin) return null
return res.data return res.data
}) })
.catch((error) => { .catch((error) => {
Logger.error('[Audible] ASIN search error', error) Logger.error('[Audible] ASIN search error', error)
return [] return null
}) })
} }
@ -127,16 +127,18 @@ class Audible {
} }
if (!timeout || isNaN(timeout)) timeout = this.#responseTimeout if (!timeout || isNaN(timeout)) timeout = this.#responseTimeout
let items let items = []
if (asin && isValidASIN(asin.toUpperCase())) { if (asin && isValidASIN(asin.toUpperCase())) {
items = [await this.asinSearch(asin, region, timeout)] const item = await this.asinSearch(asin, region, timeout)
if (item) items.push(item)
} }
if (!items && isValidASIN(title.toUpperCase())) { if (!items.length && isValidASIN(title.toUpperCase())) {
items = [await this.asinSearch(title, region, timeout)] const item = await this.asinSearch(title, region, timeout)
if (item) items.push(item)
} }
if (!items) { if (!items.length) {
const queryObj = { const queryObj = {
num_results: '10', num_results: '10',
products_sort_by: 'Relevance', products_sort_by: 'Relevance',
@ -160,7 +162,7 @@ class Audible {
return [] return []
}) })
} }
return items?.map((item) => this.cleanResult(item)) || [] return items.filter(Boolean).map((item) => this.cleanResult(item)) || []
} }
} }