diff --git a/server/scanner/AudioFileScanner.js b/server/scanner/AudioFileScanner.js index 73324b72..2ba4230d 100644 --- a/server/scanner/AudioFileScanner.js +++ b/server/scanner/AudioFileScanner.js @@ -308,6 +308,27 @@ class AudioFileScanner { bookMetadata.series = series } } else { + // Detect if multiple series are in the series & series-part tags. + // Note: This requires that every series has a sequence and that they are separated by a semicolon. + if (value.includes(';') && audioFileMetaTags.tagSeriesPart?.includes(';')) { + const seriesSplit = value + .split(';') + .map((s) => s.trim()) + .filter(Boolean) + const seriesSequenceSplit = audioFileMetaTags.tagSeriesPart + .split(';') + .map((s) => s.trim()) + .filter(Boolean) + if (seriesSplit.length > 1 && seriesSplit.length === seriesSequenceSplit.length) { + bookMetadata.series = seriesSplit.map((series, index) => ({ + name: series, + sequence: seriesSequenceSplit[index] || null + })) + libraryScan.addLog(LogLevel.DEBUG, `Detected multiple series in series/series-part tags: ${bookMetadata.series.map((s) => `${s.name} #${s.sequence}`).join(', ')}`) + return + } + } + // Original embed used "series" and "series-part" tags bookMetadata.series = [ {