mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-08-03 09:44:41 +02:00
Fix:iTunes crash on matching genres #1025
This commit is contained in:
parent
cd04533eea
commit
c23f31216a
6 changed files with 59 additions and 40 deletions
|
@ -12,8 +12,8 @@ class Audible {
|
|||
if (seriesPrimary) series.push(seriesPrimary)
|
||||
if (seriesSecondary) series.push(seriesSecondary)
|
||||
|
||||
var genresFiltered = genres ? genres.filter(g => g.type == "genre") : []
|
||||
var tagsFiltered = genres ? genres.filter(g => g.type == "tag") : []
|
||||
const genresFiltered = genres ? genres.filter(g => g.type == "genre").map(g => g.name) : []
|
||||
const tagsFiltered = genres ? genres.filter(g => g.type == "tag").map(g => g.name) : []
|
||||
|
||||
return {
|
||||
title,
|
||||
|
@ -25,8 +25,8 @@ class Audible {
|
|||
description: summary ? htmlSanitizer.stripAllTags(summary) : null,
|
||||
cover: image,
|
||||
asin,
|
||||
genres: genresFiltered.length > 0 ? genresFiltered.map(({ name }) => name).join(', ') : null,
|
||||
tags: tagsFiltered.length > 0 ? tagsFiltered.map(({ name }) => name).join(', ') : null,
|
||||
genres: genresFiltered.length ? genresFiltered : null,
|
||||
tags: tagsFiltered.length ? tagsFiltered.join(', ') : null,
|
||||
series: series != [] ? series.map(({ name, position }) => ({ series: name, volumeNumber: position })) : null,
|
||||
language: language ? language.charAt(0).toUpperCase() + language.slice(1) : null,
|
||||
duration: runtimeLengthMin && !isNaN(runtimeLengthMin) ? Number(runtimeLengthMin) : 0
|
||||
|
|
|
@ -26,7 +26,7 @@ class GoogleBooks {
|
|||
publishedYear: publisherDate ? publisherDate.split('-')[0] : null,
|
||||
description,
|
||||
cover: imageLinks && imageLinks.thumbnail ? imageLinks.thumbnail : null,
|
||||
genres: categories ? categories.join(', ') : null,
|
||||
genres: categories && Array.isArray(categories) ? [...categories] : null,
|
||||
isbn: this.extractIsbn(industryIdentifiers)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ class iTunes {
|
|||
author: data.artistName,
|
||||
description: htmlSanitizer.stripAllTags(data.description || ''),
|
||||
publishedYear: data.releaseDate ? data.releaseDate.split('-')[0] : null,
|
||||
genres: data.primaryGenreName ? [data.primaryGenreName] : [],
|
||||
genres: data.primaryGenreName ? [data.primaryGenreName] : null,
|
||||
cover: this.getCoverArtwork(data)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -798,6 +798,7 @@ class Scanner {
|
|||
const detailKeysToUpdate = ['title', 'subtitle', 'description', 'narrator', 'publisher', 'publishedYear', 'genres', 'tags', 'language', 'explicit', 'asin', 'isbn']
|
||||
const updatePayload = {}
|
||||
updatePayload.metadata = {}
|
||||
|
||||
for (const key in matchData) {
|
||||
if (matchData[key] && detailKeysToUpdate.includes(key)) {
|
||||
if (key === 'narrator') {
|
||||
|
@ -805,12 +806,21 @@ class Scanner {
|
|||
updatePayload.metadata.narrators = matchData[key].split(',').map(v => v.trim()).filter(v => !!v)
|
||||
}
|
||||
} else if (key === 'genres') {
|
||||
if ((!libraryItem.media.metadata.genres || options.overrideDetails)) {
|
||||
updatePayload.metadata[key] = matchData[key].split(',').map(v => v.trim()).filter(v => !!v)
|
||||
if ((!libraryItem.media.metadata.genres.length || options.overrideDetails)) {
|
||||
var genresArray = []
|
||||
if (Array.isArray(matchData[key])) genresArray = [...matchData[key]]
|
||||
else { // Genres should always be passed in as an array but just incase handle a string
|
||||
Logger.warn(`[Scanner] quickMatch genres is not an array ${matchData[key]}`)
|
||||
genresArray = matchData[key].split(',').map(v => v.trim()).filter(v => !!v)
|
||||
}
|
||||
updatePayload.metadata[key] = genresArray
|
||||
}
|
||||
} else if (key === 'tags') {
|
||||
if ((!libraryItem.media.tags || options.overrideDetails)) {
|
||||
updatePayload[key] = matchData[key].split(',').map(v => v.trim()).filter(v => !!v)
|
||||
if ((!libraryItem.media.tags.length || options.overrideDetails)) {
|
||||
var tagsArray = []
|
||||
if (Array.isArray(matchData[key])) tagsArray = [...matchData[key]]
|
||||
else tagsArray = tagsArray[key].split(',').map(v => v.trim()).filter(v => !!v)
|
||||
updatePayload[key] = tagsArray
|
||||
}
|
||||
} else if ((!libraryItem.media.metadata[key] || options.overrideDetails)) {
|
||||
updatePayload.metadata[key] = matchData[key]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue