From 30f1c9c2524af63c7117031f5a53dec56795ce3a Mon Sep 17 00:00:00 2001 From: Jeferson 'Shin Date: Wed, 15 Apr 2026 08:54:23 +0200 Subject: [PATCH] Added check for date in extract metadata --- server/utils/podcastUtils.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/server/utils/podcastUtils.js b/server/utils/podcastUtils.js index 2042a8e39..442bae3a6 100644 --- a/server/utils/podcastUtils.js +++ b/server/utils/podcastUtils.js @@ -4,6 +4,7 @@ const Logger = require('../Logger') const { xmlToJSON, timestampToSeconds } = require('./index') const htmlSanitizer = require('../utils/htmlSanitizer') const Fuse = require('../libs/fusejs') +const parseDate = require('../utils/parsers/parseDate') /** * @typedef RssPodcastChapter @@ -147,6 +148,12 @@ function extractPodcastMetadata(channel) { if (value?.['_']) value = value['_'] metadata[cleanKey] = value }) + + if (!metadata['pubDate']) { + const dateVal = extractFirstArrayItem(channel, 'date') + if (dateVal) metadata['pubDate'] = dateVal + } + return metadata } @@ -198,6 +205,15 @@ function extractEpisodeData(item) { } else { Logger.error(`[podcastUtils] Invalid pubDate ${item['pubDate']} for ${episode.enclosure.url}`) } + } else if (item['date']) { + const date = extractFirstArrayItem(item, 'date') + if (typeof date === 'string') { + episode.pubDate = date + } else if (typeof date?._ === 'string') { + episode.pubDate = date._ + } else { + Logger.error(`[podcastUtils] Invalid date ${item['date']} for ${episode.enclosure.url}`) + } } if (item['guid']) { @@ -261,7 +277,7 @@ function extractEpisodeData(item) { } function cleanEpisodeData(data) { - const pubJsDate = data.pubDate ? new Date(data.pubDate) : null + const pubJsDate = data.pubDate ? parseDate.parse(data.pubDate) : null const publishedAt = pubJsDate && !isNaN(pubJsDate) ? pubJsDate.valueOf() : null return {