From c150ed4e989a668501edfffad6b0754c501d35df Mon Sep 17 00:00:00 2001
From: advplyr {{ episode.subtitle }} Published {{ episode.publishedAt ? $dateDistanceFromNow(episode.publishedAt) : 'Unknown' }} Published {{ episode.publishedAt ? $dateDistanceFromNow(episode.publishedAt) : 'Unknown' }} {{ $strings.LabelDuration }}: {{ $elapsedPretty(Number(episode.duration)) }} {{ $strings.LabelSize }}: {{ $bytesPretty(Number(episode.enclosure.length)) }}
{{ $strings.LabelDuration }}
++ {{ audioFileDuration }} +
+Published {{ episode.publishedAt ? $dateDistanceFromNow(episode.publishedAt) : 'Unknown' }}
-{{ $strings.LabelDuration }}: {{ $elapsedPretty(Number(episode.duration)) }}
+{{ $strings.LabelDuration }}: {{ $elapsedPretty(episode.durationSeconds) }}
{{ $strings.LabelSize }}: {{ $bytesPretty(Number(episode.enclosure.length)) }}
diff --git a/server/utils/podcastUtils.js b/server/utils/podcastUtils.js index 12469160..b62e024f 100644 --- a/server/utils/podcastUtils.js +++ b/server/utils/podcastUtils.js @@ -25,6 +25,7 @@ const Fuse = require('../libs/fusejs') * @property {string} episode * @property {string} author * @property {string} duration + * @property {number|null} durationSeconds - Parsed from duration string if duration is valid * @property {string} explicit * @property {number} publishedAt - Unix timestamp * @property {{ url: string, type?: string, length?: string }} enclosure @@ -217,8 +218,9 @@ function extractEpisodeData(item) { }) // Extract psc:chapters if duration is set - let episodeDuration = !isNaN(episode.duration) ? timestampToSeconds(episode.duration) : null - if (item['psc:chapters']?.[0]?.['psc:chapter']?.length && episodeDuration) { + episode.durationSeconds = episode.duration ? timestampToSeconds(episode.duration) : null + + if (item['psc:chapters']?.[0]?.['psc:chapter']?.length && episode.durationSeconds) { // Example chapter: // {"id":0,"start":0,"end":43.004286,"title":"chapter 1"} @@ -244,7 +246,7 @@ function extractEpisodeData(item) { } else { episode.chapters = cleanedChapters.map((chapter, index) => { const nextChapter = cleanedChapters[index + 1] - const end = nextChapter ? nextChapter.start : episodeDuration + const end = nextChapter ? nextChapter.start : episode.durationSeconds return { id: chapter.id, title: chapter.title, @@ -273,6 +275,7 @@ function cleanEpisodeData(data) { episode: data.episode || '', author: data.author || '', duration: data.duration || '', + durationSeconds: data.durationSeconds || null, explicit: data.explicit || '', publishedAt, enclosure: data.enclosure,