diff --git a/client/components/modals/item/tabs/Cover.vue b/client/components/modals/item/tabs/Cover.vue index 41cac4bc3..4b47a0903 100644 --- a/client/components/modals/item/tabs/Cover.vue +++ b/client/components/modals/item/tabs/Cover.vue @@ -134,7 +134,7 @@ export default { }, providers() { if (this.isPodcast) return this.$store.state.scanners.podcastProviders - return [{ text: 'All', value: 'all' }, ...this.$store.state.scanners.providers, ...this.$store.state.scanners.coverOnlyProviders] + return [{ text: 'Best', value: 'best' }, ...this.$store.state.scanners.providers, ...this.$store.state.scanners.coverOnlyProviders, { text: 'All', value: 'all' }] }, searchTitleLabel() { if (this.provider.startsWith('audible')) return this.$strings.LabelSearchTitleOrASIN @@ -243,7 +243,19 @@ export default { this.searchTitle = this.mediaMetadata.title || '' this.searchAuthor = this.mediaMetadata.authorName || '' if (this.isPodcast) this.provider = 'itunes' - else this.provider = localStorage.getItem('book-cover-provider') || localStorage.getItem('book-provider') || 'google' + else { + // Migrate from 'all' to 'best' (only once) + const migrationKey = 'book-cover-provider-migrated' + const currentProvider = localStorage.getItem('book-cover-provider') || localStorage.getItem('book-provider') || 'google' + + if (!localStorage.getItem(migrationKey) && currentProvider === 'all') { + localStorage.setItem('book-cover-provider', 'best') + localStorage.setItem(migrationKey, 'true') + this.provider = 'best' + } else { + this.provider = currentProvider + } + } }, removeCover() { if (!this.coverPath) { diff --git a/server/finders/BookFinder.js b/server/finders/BookFinder.js index 6b8427c05..a6a6b07e6 100644 --- a/server/finders/BookFinder.js +++ b/server/finders/BookFinder.js @@ -608,6 +608,14 @@ class BookFinder { Logger.debug(`[BookFinder] Found ${providerResults.length} covers from ${providerString}`) searchResults.push(...providerResults) } + } else if (provider === 'best') { + // Best providers: google, fantlab, and audible.com + const bestProviders = ['google', 'fantlab', 'audible'] + for (const providerString of bestProviders) { + const providerResults = await this.search(null, providerString, title, author, options) + Logger.debug(`[BookFinder] Found ${providerResults.length} covers from ${providerString}`) + searchResults.push(...providerResults) + } } else { searchResults = await this.search(null, provider, title, author, options) } diff --git a/server/managers/CoverSearchManager.js b/server/managers/CoverSearchManager.js index 1ad7ddb8e..ddcaa23db 100644 --- a/server/managers/CoverSearchManager.js +++ b/server/managers/CoverSearchManager.js @@ -119,6 +119,9 @@ class CoverSearchManager { if (provider === 'all') { providers = [...BookFinder.providers] + } else if (provider === 'best') { + // Best providers: google, fantlab, and audible.com + providers = ['google', 'fantlab', 'audible'] } else { providers = [provider] }