diff --git a/client/components/app/StreamContainer.vue b/client/components/app/StreamContainer.vue index f6e2dcb0..db39bbb8 100644 --- a/client/components/app/StreamContainer.vue +++ b/client/components/app/StreamContainer.vue @@ -67,7 +67,8 @@ export default { sleepTimerSet: false, sleepTimerTime: 0, sleepTimerRemaining: 0, - sleepTimer: null + sleepTimer: null, + displayTitle: null } }, computed: { @@ -117,9 +118,6 @@ export default { isPodcast() { return this.streamLibraryItem ? this.streamLibraryItem.mediaType === 'podcast' : false }, - episode() { - return this.playerHandler.episode - }, mediaMetadata() { return this.media.metadata || {} }, @@ -127,7 +125,7 @@ export default { return this.media.chapters || [] }, title() { - if (this.episode) return this.episode.title + if (this.playerHandler.displayTitle) return this.playerHandler.displayTitle return this.mediaMetadata.title || 'No Title' }, authors() { diff --git a/client/players/PlayerHandler.js b/client/players/PlayerHandler.js index fe6de36e..78ded80a 100644 --- a/client/players/PlayerHandler.js +++ b/client/players/PlayerHandler.js @@ -7,6 +7,8 @@ export default class PlayerHandler { this.ctx = ctx this.libraryItem = null this.episodeId = null + this.displayTitle = null + this.displayAuthor = null this.playWhenReady = false this.player = null this.playerState = 'IDLE' @@ -160,6 +162,8 @@ export default class PlayerHandler { prepareSession(session) { this.startTime = session.currentTime this.currentSessionId = session.id + this.displayTitle = session.displayTitle + this.displayAuthor = session.displayAuthor console.log('[PlayerHandler] Preparing Session', session) var audioTracks = session.audioTracks.map(at => new AudioTrack(at, this.userToken)) diff --git a/server/objects/PlaybackSession.js b/server/objects/PlaybackSession.js index 990dfcdd..9d4365ce 100644 --- a/server/objects/PlaybackSession.js +++ b/server/objects/PlaybackSession.js @@ -13,6 +13,8 @@ class PlaybackSession { this.mediaType = null this.mediaMetadata = null + this.displayTitle = null + this.displayAuthor = null this.coverPath = null this.duration = null @@ -45,6 +47,8 @@ class PlaybackSession { episodeId: this.episodeId, mediaType: this.mediaType, mediaMetadata: this.mediaMetadata ? this.mediaMetadata.toJSON() : null, + displayTitle: this.displayTitle, + displayAuthor: this.displayAuthor, coverPath: this.coverPath, duration: this.duration, playMethod: this.playMethod, @@ -65,6 +69,8 @@ class PlaybackSession { episodeId: this.episodeId, mediaType: this.mediaType, mediaMetadata: this.mediaMetadata ? this.mediaMetadata.toJSON() : null, + displayTitle: this.displayTitle, + displayAuthor: this.displayAuthor, coverPath: this.coverPath, duration: this.duration, playMethod: this.playMethod, @@ -84,8 +90,8 @@ class PlaybackSession { this.sessionType = session.sessionType this.userId = session.userId this.libraryItemId = session.libraryItemId - this.episodeId = session.episodeId, - this.mediaType = session.mediaType + this.episodeId = session.episodeId + this.mediaType = session.mediaType this.duration = session.duration this.playMethod = session.playMethod @@ -97,6 +103,8 @@ class PlaybackSession { this.mediaMetadata = new PodcastMetadata(session.mediaMetadata) } } + this.displayTitle = session.displayTitle || '' + this.displayAuthor = session.displayAuthor || '' this.coverPath = session.coverPath this.date = session.date this.dayOfWeek = session.dayOfWeek @@ -118,6 +126,8 @@ class PlaybackSession { this.episodeId = episodeId this.mediaType = libraryItem.mediaType this.mediaMetadata = libraryItem.media.metadata.clone() + this.displayTitle = libraryItem.media.getPlaybackTitle(episodeId) + this.displayAuthor = libraryItem.media.getPlaybackAuthor(episodeId) this.coverPath = libraryItem.media.coverPath this.duration = libraryItem.media.duration diff --git a/server/objects/mediaTypes/Book.js b/server/objects/mediaTypes/Book.js index 890cc9b3..63e4176b 100644 --- a/server/objects/mediaTypes/Book.js +++ b/server/objects/mediaTypes/Book.js @@ -408,5 +408,13 @@ class Book { return tracklist } + + getPlaybackTitle() { + return this.metadata.title + } + + getPlaybackAuthor() { + return this.metadata.authorName + } } module.exports = Book \ No newline at end of file diff --git a/server/objects/mediaTypes/Podcast.js b/server/objects/mediaTypes/Podcast.js index 236a8ccb..17e3aeb9 100644 --- a/server/objects/mediaTypes/Podcast.js +++ b/server/objects/mediaTypes/Podcast.js @@ -213,5 +213,15 @@ class Podcast { removeEpisode(episodeId) { this.episodes = this.episodes.filter(ep => ep.id !== episodeId) } + + getPlaybackTitle(episodeId) { + var episode = this.episodes.find(ep => ep.id == episodeId) + if (!episode) return this.metadata.title + return episode.title + } + + getPlaybackAuthor() { + return this.metadata.author + } } module.exports = Podcast \ No newline at end of file