From 84f99370eee07ae5975443e4f71335d82a9e1d9e Mon Sep 17 00:00:00 2001 From: advplyr Date: Fri, 21 Mar 2025 17:53:17 -0500 Subject: [PATCH] Update audio file scanner to support multiple series in series/series-part tags separated by semicolon if they match #4136 --- server/scanner/AudioFileScanner.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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 = [ {