移动播客搜索地区配置到媒体库配置

This commit is contained in:
mozhu 2024-01-05 14:45:35 +08:00
parent 1be34564f2
commit fea78898a5
7 changed files with 25 additions and 15 deletions

View File

@ -49,6 +49,9 @@
</ui-tooltip>
</div>
</div>
<div v-if="isPodcastLibrary" class="py-3">
<ui-dropdown :label="$strings.LabelPodcastSearchRegion" v-model="podcastSearchRegion" :items="$podcastSearchRegionOptions" small class="max-w-52" @input="formUpdated" />
</div>
</div>
</template>
@ -69,7 +72,8 @@ export default {
skipMatchingMediaWithAsin: false,
skipMatchingMediaWithIsbn: false,
audiobooksOnly: false,
hideSingleBookSeries: false
hideSingleBookSeries: false,
podcastSearchRegion: 'us'
}
},
computed: {
@ -85,6 +89,9 @@ export default {
isBookLibrary() {
return this.mediaType === 'book'
},
isPodcastLibrary() {
return this.mediaType === 'podcast'
},
providers() {
if (this.mediaType === 'podcast') return this.$store.state.scanners.podcastProviders
return this.$store.state.scanners.providers
@ -99,7 +106,8 @@ export default {
skipMatchingMediaWithAsin: !!this.skipMatchingMediaWithAsin,
skipMatchingMediaWithIsbn: !!this.skipMatchingMediaWithIsbn,
audiobooksOnly: !!this.audiobooksOnly,
hideSingleBookSeries: !!this.hideSingleBookSeries
hideSingleBookSeries: !!this.hideSingleBookSeries,
podcastSearchRegion: this.podcastSearchRegion
}
}
},
@ -112,7 +120,8 @@ export default {
this.skipMatchingMediaWithAsin = !!this.librarySettings.skipMatchingMediaWithAsin
this.skipMatchingMediaWithIsbn = !!this.librarySettings.skipMatchingMediaWithIsbn
this.audiobooksOnly = !!this.librarySettings.audiobooksOnly
this.hideSingleBookSeries = !!this.librarySettings.hideSingleBookSeries
this.hideSingleBookSeries = !!this.librarySettings.hideSingleBookSeries,
this.podcastSearchRegion = this.librarySettings.podcastSearchRegion
}
},
mounted() {

View File

@ -135,10 +135,6 @@
<ui-dropdown :label="$strings.LabelLanguageDefaultServer" ref="langDropdown" v-model="newServerSettings.language" :items="$languageCodeOptions" small class="max-w-52" @input="updateServerLanguage" />
</div>
<div class="py-2">
<ui-dropdown :label="$strings.LabelPodcastSearchRegion" v-model="newServerSettings.podcastSearchRegion" :items="$podcastSearchRegionOptions" small class="max-w-52" @input="(val) => updateSettingsKey('podcastSearchRegion', val)" />
</div>
<!-- old experimental features -->
<!-- <div class="pt-4">
<h2 class="font-semibold">{{ $strings.HeaderSettingsExperimental }}</h2>

View File

@ -86,6 +86,9 @@ export default {
},
streamLibraryItem() {
return this.$store.state.streamLibraryItem
},
librarySetting() {
return this.$store.getters['libraries/getCurrentLibrarySettings']
}
},
methods: {
@ -151,7 +154,7 @@ export default {
async submitSearch(term) {
this.processing = true
this.termSearched = ''
let results = await this.$axios.$get(`/api/search/podcast?term=${encodeURIComponent(term)}`).catch((error) => {
let results = await this.$axios.$get(`/api/search/podcast?term=${encodeURIComponent(term)}&country=${encodeURIComponent(this.librarySetting?.podcastSearchRegion)}`).catch((error) => {
console.error('Search request failed', error)
return []
})

View File

@ -43,12 +43,15 @@ class SearchController {
*/
async findPodcasts(req, res) {
const term = req.query.term
const country = req.query.country
if (!term) {
Logger.error('[SearchController] Invalid request query param "term" is required')
return res.status(400).send('Invalid request query param "term" is required')
}
const results = await PodcastFinder.search(term)
const results = await PodcastFinder.search(term, {
country: country
})
res.json(results)
}

View File

@ -10,6 +10,7 @@ class LibrarySettings {
this.audiobooksOnly = false
this.hideSingleBookSeries = false // Do not show series that only have 1 book
this.metadataPrecedence = ['folderStructure', 'audioMetatags', 'nfoFile', 'txtFiles', 'opfFile', 'absMetadata']
this.podcastSearchRegion = 'us'
if (settings) {
this.construct(settings)
@ -30,6 +31,7 @@ class LibrarySettings {
// Added in v2.4.5
this.metadataPrecedence = ['folderStructure', 'audioMetatags', 'nfoFile', 'txtFiles', 'opfFile', 'absMetadata']
}
this.podcastSearchRegion = settings.podcastSearchRegion || 'us'
}
toJSON() {
@ -41,7 +43,8 @@ class LibrarySettings {
autoScanCronExpression: this.autoScanCronExpression,
audiobooksOnly: this.audiobooksOnly,
hideSingleBookSeries: this.hideSingleBookSeries,
metadataPrecedence: [...this.metadataPrecedence]
metadataPrecedence: [...this.metadataPrecedence],
podcastSearchRegion: this.podcastSearchRegion
}
}

View File

@ -48,7 +48,6 @@ class ServerSettings {
this.dateFormat = 'MM/dd/yyyy'
this.timeFormat = 'HH:mm'
this.language = 'en-us'
this.podcastSearchRegion = 'us'
this.logLevel = Logger.logLevel
@ -110,7 +109,6 @@ class ServerSettings {
this.dateFormat = settings.dateFormat || 'MM/dd/yyyy'
this.timeFormat = settings.timeFormat || 'HH:mm'
this.language = settings.language || 'en-us'
this.podcastSearchRegion = settings.podcastSearchRegion || 'us'
this.logLevel = settings.logLevel || Logger.logLevel
this.version = settings.version || null
this.buildNumber = settings.buildNumber || 0 // Added v2.4.5
@ -200,7 +198,6 @@ class ServerSettings {
dateFormat: this.dateFormat,
timeFormat: this.timeFormat,
language: this.language,
podcastSearchRegion: this.podcastSearchRegion,
logLevel: this.logLevel,
version: this.version,
buildNumber: this.buildNumber,

View File

@ -1,7 +1,6 @@
const axios = require('axios')
const Logger = require('../Logger')
const htmlSanitizer = require('../utils/htmlSanitizer')
const Database = require('../Database')
class iTunes {
constructor() { }
@ -18,7 +17,7 @@ class iTunes {
entity: options.entity,
lang: options.lang,
limit: options.limit,
country: options.country ? options.country : Database.serverSettings.podcastSearchRegion
country: options.country
}
return axios.get('https://itunes.apple.com/search', { params: query }).then((response) => {
return response.data.results || []