diff --git a/client/components/modals/item/tabs/Match.vue b/client/components/modals/item/tabs/Match.vue index 72aa7116..336a4017 100644 --- a/client/components/modals/item/tabs/Match.vue +++ b/client/components/modals/item/tabs/Match.vue @@ -508,7 +508,10 @@ export default { } else if (key === 'author' && !this.isPodcast) { var authors = this.selectedMatch[key] if (!Array.isArray(authors)) { - authors = authors.split(',').map((au) => au.trim()) + authors = authors + .split(',') + .map((au) => au.trim()) + .filter((au) => !!au) } var authorPayload = [] authors.forEach((authorName) => diff --git a/server/routers/ApiRouter.js b/server/routers/ApiRouter.js index d18d93e6..43e7c907 100644 --- a/server/routers/ApiRouter.js +++ b/server/routers/ApiRouter.js @@ -531,6 +531,7 @@ class ApiRouter { const authorName = (mediaMetadata.authors[i].name || '').trim() if (!authorName) { Logger.error(`[ApiRouter] Invalid author object, no name`, mediaMetadata.authors[i]) + mediaMetadata.authors[i].id = null continue } @@ -559,6 +560,8 @@ class ApiRouter { mediaMetadata.authors[i].id = author.id } } + // Remove authors without an id + mediaMetadata.authors = mediaMetadata.authors.filter(au => !!au.id) if (newAuthors.length) { await Database.createBulkAuthors(newAuthors) SocketAuthority.emitter('authors_added', newAuthors.map(au => au.toJSON())) @@ -572,6 +575,7 @@ class ApiRouter { const seriesName = (mediaMetadata.series[i].name || '').trim() if (!seriesName) { Logger.error(`[ApiRouter] Invalid series object, no name`, mediaMetadata.series[i]) + mediaMetadata.series[i].id = null continue } @@ -600,6 +604,8 @@ class ApiRouter { mediaMetadata.series[i].id = seriesItem.id } } + // Remove series without an id + mediaMetadata.series = mediaMetadata.series.filter(se => se.id) if (newSeries.length) { await Database.createBulkSeries(newSeries) SocketAuthority.emitter('multiple_series_added', newSeries.map(se => se.toJSON()))