diff --git a/server/managers/PodcastManager.js b/server/managers/PodcastManager.js index 58205178..e7eea417 100644 --- a/server/managers/PodcastManager.js +++ b/server/managers/PodcastManager.js @@ -40,6 +40,7 @@ class PodcastManager { episodesToDownload.forEach((ep) => { var newPe = new PodcastEpisode() newPe.setData(ep, index++) + newPe.libraryItemId = libraryItem.id var newPeDl = new PodcastEpisodeDownload() newPeDl.setData(newPe, libraryItem) this.startPodcastEpisodeDownload(newPeDl) diff --git a/server/objects/entities/PodcastEpisode.js b/server/objects/entities/PodcastEpisode.js index 2c8e6feb..a780fe5b 100644 --- a/server/objects/entities/PodcastEpisode.js +++ b/server/objects/entities/PodcastEpisode.js @@ -4,6 +4,7 @@ const AudioTrack = require('../files/AudioTrack') class PodcastEpisode { constructor(episode) { + this.libraryItemId = null this.id = null this.index = null @@ -26,6 +27,7 @@ class PodcastEpisode { } construct(episode) { + this.libraryItemId = episode.libraryItemId this.id = episode.id this.index = episode.index this.episode = episode.episode @@ -43,6 +45,7 @@ class PodcastEpisode { toJSON() { return { + libraryItemId: this.libraryItemId, id: this.id, index: this.index, episode: this.episode, @@ -61,6 +64,7 @@ class PodcastEpisode { toJSONExpanded() { return { + libraryItemId: this.libraryItemId, id: this.id, index: this.index, episode: this.episode, @@ -71,6 +75,7 @@ class PodcastEpisode { enclosure: this.enclosure ? { ...this.enclosure } : null, pubDate: this.pubDate, audioFile: this.audioFile.toJSON(), + audioTrack: this.audioTrack.toJSON(), publishedAt: this.publishedAt, addedAt: this.addedAt, updatedAt: this.updatedAt, @@ -79,8 +84,13 @@ class PodcastEpisode { } } + get audioTrack() { + var audioTrack = new AudioTrack() + audioTrack.setData(this.libraryItemId, this.audioFile, 0) + return audioTrack + } get tracks() { - return [this.audioFile] + return [this.audioTrack] } get duration() { return this.audioFile.duration @@ -135,10 +145,8 @@ class PodcastEpisode { return supportedMimeTypes.includes(this.audioFile.mimeType) } - getDirectPlayTracklist(libraryItemId) { - var audioTrack = new AudioTrack() - audioTrack.setData(libraryItemId, this.audioFile, 0) - return [audioTrack] + getDirectPlayTracklist() { + return this.tracks } checkEqualsEnclosureUrl(url) { diff --git a/server/objects/mediaTypes/Podcast.js b/server/objects/mediaTypes/Podcast.js index 36031e7e..4244afec 100644 --- a/server/objects/mediaTypes/Podcast.js +++ b/server/objects/mediaTypes/Podcast.js @@ -31,7 +31,11 @@ class Podcast { this.metadata = new PodcastMetadata(podcast.metadata) this.coverPath = podcast.coverPath this.tags = [...podcast.tags] - this.episodes = podcast.episodes.map((e) => new PodcastEpisode(e)) + this.episodes = podcast.episodes.map((e) => { + var podcastEpisode = new PodcastEpisode(e) + podcastEpisode.libraryItemId = this.libraryItemId + return podcastEpisode + }) this.autoDownloadEpisodes = !!podcast.autoDownloadEpisodes this.lastEpisodeCheck = podcast.lastEpisodeCheck || 0 } @@ -179,7 +183,7 @@ class Podcast { getDirectPlayTracklist(episodeId) { var episode = this.episodes.find(ep => ep.id === episodeId) if (!episode) return false - return episode.getDirectPlayTracklist(this.libraryItemId) + return episode.getDirectPlayTracklist() } addPodcastEpisode(podcastEpisode) { @@ -188,6 +192,7 @@ class Podcast { addNewEpisodeFromAudioFile(audioFile, index) { var pe = new PodcastEpisode() + pe.libraryItemId = this.libraryItemId pe.setDataFromAudioFile(audioFile, index) this.episodes.push(pe) }