diff --git a/CHANGELOG b/CHANGELOG index 6faa5d267cf4094c9220a2bc20e8c816f1d9e79c..87c584200cd5fc3dfc50c8468ceaa4ddf2cf24d9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,8 @@ Changelog 0.2.5 (unreleased) ------------------ +- Import: can now specify search template when querying import sources (#45) + 0.2.4 (2017-12-14) ------------------ diff --git a/front/src/components/library/import/ArtistImport.vue b/front/src/components/library/import/ArtistImport.vue index 4f049f52ea2f40829c4bcb5ce6d7bc87c53226d9..870a886e1835c0d811890c9fa4e911b4f74a57a4 100644 --- a/front/src/components/library/import/ArtistImport.vue +++ b/front/src/components/library/import/ArtistImport.vue @@ -12,6 +12,10 @@ <label>{{ t }}</label> </div> </div> + <div class="field"> + <label>Query template</label> + <input v-model="customQueryTemplate" /> + </div> </div> </form> <template @@ -22,6 +26,7 @@ :backends="backends" :defaultEnabled="false" :default-backend-id="defaultBackendId" + :query-template="customQueryTemplate" @import-data-changed="recordReleaseData" @enabled="recordReleaseEnabled" ></release-import> diff --git a/front/src/components/library/import/ImportMixin.vue b/front/src/components/library/import/ImportMixin.vue index f3fc6fca6a163a1f99e0387cbf75300b6bc084a8..475241f3d5b24415a6c5cecf11c59f597142d1b4 100644 --- a/front/src/components/library/import/ImportMixin.vue +++ b/front/src/components/library/import/ImportMixin.vue @@ -13,10 +13,12 @@ export default { metadata: {type: Object, required: true}, defaultEnabled: {type: Boolean, default: true}, backends: {type: Array}, - defaultBackendId: {type: String} + defaultBackendId: {type: String}, + queryTemplate: {type: String, default: '$artist $title'} }, data () { return { + customQueryTemplate: this.queryTemplate, currentBackendId: this.defaultBackendId, isImporting: false, enabled: this.defaultEnabled @@ -56,6 +58,9 @@ export default { return this.backends.filter(b => { return b.id === self.currentBackendId })[0] + }, + realQueryTemplate () { + } }, watch: { @@ -70,6 +75,14 @@ export default { }, enabled (newValue) { this.$emit('enabled', this.importData, newValue) + }, + queryTemplate (newValue, oldValue) { + // we inherit from the prop template unless the component changed + // the value + if (oldValue === this.customQueryTemplate) { + // no changed from prop, we keep the sync + this.customQueryTemplate = newValue + } } } } diff --git a/front/src/components/library/import/ReleaseImport.vue b/front/src/components/library/import/ReleaseImport.vue index 9f8c1d347a326b96470423679bdedfa50fe08b0c..51d5a2fead24a91a50eb2f31f931e93f91fe01e3 100644 --- a/front/src/components/library/import/ReleaseImport.vue +++ b/front/src/components/library/import/ReleaseImport.vue @@ -20,6 +20,7 @@ :release-metadata="metadata" :backends="backends" :default-backend-id="defaultBackendId" + :query-template="customQueryTemplate" @import-data-changed="recordTrackData" @enabled="recordTrackEnabled" ></track-import> diff --git a/front/src/components/library/import/TrackImport.vue b/front/src/components/library/import/TrackImport.vue index 3081091c59d6f7da5d88b06cf0fb933650f70e7c..2275bcf34e6b9f3cf80e22a478d72f79a3e14dae 100644 --- a/front/src/components/library/import/TrackImport.vue +++ b/front/src/components/library/import/TrackImport.vue @@ -92,13 +92,7 @@ export default Vue.extend({ releaseMetadata: {type: Object, required: true} }, data () { - let queryParts = [ - this.releaseMetadata['artist-credit'][0]['artist']['name'], - this.releaseMetadata['title'], - this.metadata['recording']['title'] - ] return { - query: queryParts.join(' '), isLoading: false, results: [], currentResultIndex: 0, @@ -151,6 +145,18 @@ export default Vue.extend({ mbid: this.metadata.recording.id, source: this.importedUrl } + }, + query () { + let queryMapping = [ + ['artist', this.releaseMetadata['artist-credit'][0]['artist']['name']], + ['album', this.releaseMetadata['title']], + ['title', this.metadata['recording']['title']] + ] + let query = this.customQueryTemplate + queryMapping.forEach(e => { + query = query.split('$' + e[0]).join(e[1]) + }) + return query } }, watch: {