From b47d7b734de2e1e182a56c10be55f8bd1c06bcd8 Mon Sep 17 00:00:00 2001 From: advplyr Date: Thu, 10 Apr 2025 17:51:42 -0500 Subject: [PATCH] Update podcast scanner to remove media progress and episodes from playlist --- server/scanner/PodcastScanner.js | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/server/scanner/PodcastScanner.js b/server/scanner/PodcastScanner.js index 7ecf3b08..c9569c3a 100644 --- a/server/scanner/PodcastScanner.js +++ b/server/scanner/PodcastScanner.js @@ -62,14 +62,33 @@ class PodcastScanner { const episodesToRemove = [] existingPodcastEpisodes = existingPodcastEpisodes.filter((ep) => { if (libraryItemData.checkAudioFileRemoved(ep.audioFile)) { - libraryScan.addLog(LogLevel.INFO, `Podcast episode "${ep.title}" audio file was removed`) episodesToRemove.push(ep) return false } return true }) - await Promise.all(episodesToRemove.map((ep) => ep.destroy())) + if (episodesToRemove.length) { + // Remove episodes from playlists and media progress + const episodeIds = episodesToRemove.map((ep) => ep.id) + await Database.playlistModel.removeMediaItemsFromPlaylists(episodeIds) + const mediaProgressRemoved = await Database.mediaProgressModel.destroy({ + where: { + mediaItemId: episodeIds + } + }) + if (mediaProgressRemoved) { + libraryScan.addLog(LogLevel.INFO, `Removed ${mediaProgressRemoved} media progress for episodes`) + } + + // Remove episodes + await Promise.all( + episodesToRemove.map(async (ep) => { + await ep.destroy() + libraryScan.addLog(LogLevel.INFO, `Podcast episode "${ep.title}" audio file was removed`) + }) + ) + } // Update audio files that were modified if (libraryItemData.audioLibraryFilesModified.length) {