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