From d6c5b6e8c65191a49c62fb15bcf7431895a8f693 Mon Sep 17 00:00:00 2001 From: Selfhost Alt Date: Sat, 16 Apr 2022 10:40:10 -0700 Subject: [PATCH 1/3] Implement a stricter check for possible ASIN values in titles --- server/providers/Audible.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/providers/Audible.js b/server/providers/Audible.js index b3779f49..cd4afff3 100644 --- a/server/providers/Audible.js +++ b/server/providers/Audible.js @@ -37,7 +37,7 @@ class Audible { } isProbablyAsin(title) { - return /[0-9A-Z]{10}/.test(title) + return /^[0-9A-Z]{10}$/.test(title) } asinSearch(asin) { From cdcfd01da2cdf656c366b2690b14ff95d5df0a44 Mon Sep 17 00:00:00 2001 From: Selfhost Alt Date: Sat, 16 Apr 2022 11:55:58 -0700 Subject: [PATCH 2/3] Only consider an Audible ASIN query successful if the response contains an author --- server/providers/Audible.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/providers/Audible.js b/server/providers/Audible.js index cd4afff3..47ba06a0 100644 --- a/server/providers/Audible.js +++ b/server/providers/Audible.js @@ -50,7 +50,7 @@ class Audible { var url = `https://api.audible.com/1.0/catalog/products/${asin}?${queryString}` Logger.debug(`[Audible] ASIN url: ${url}`) return axios.get(url).then((res) => { - if (!res || !res.data || !res.data.product) return [] + if (!res || !res.data || !res.data.product || !res.data.product.authors) return [] return [res.data.product] }).catch(error => { Logger.error('[Audible] search error', error) From 2fc60e4e9ca00b4d983ec6b3a2240513dfcfc4e5 Mon Sep 17 00:00:00 2001 From: Selfhost Alt Date: Sat, 16 Apr 2022 14:57:36 -0700 Subject: [PATCH 3/3] Handle an undefined publisher_summary when querying Audible --- server/providers/Audible.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/providers/Audible.js b/server/providers/Audible.js index 47ba06a0..c6d6836e 100644 --- a/server/providers/Audible.js +++ b/server/providers/Audible.js @@ -17,7 +17,7 @@ class Audible { narrator: narrators ? narrators.map(({ name }) => name).join(', ') : null, publisher: publisher_name, publishedYear: release_date ? release_date.split('-')[0] : null, - description: stripHtml(publisher_summary).result, + description: publisher_summary ? stripHtml(publisher_summary).result : null, cover: this.getBestImageLink(product_images), asin, series: primarySeries ? primarySeries.title : null,