Update local session mediaMetadata with current item mediaMetadata for undefined values

This commit is contained in:
advplyr 2025-04-18 17:04:11 -05:00
parent d7f0815fb3
commit 2caa861b8a

View File

@ -175,29 +175,24 @@ class PlaybackSessionManager {
// New session from local // New session from local
session = new PlaybackSession(sessionJson) session = new PlaybackSession(sessionJson)
session.deviceInfo = deviceInfo session.deviceInfo = deviceInfo
// This makes sure that the client's metadata is preferred over the library's metadata, if available, to make a non-breaking change
if (session.mediaMetadata == null) { if (session.mediaMetadata == null) {
session.mediaMetadata = {} session.mediaMetadata = {}
} }
const { title, subtitle, narrators, authors, author, series, genres, type } = libraryItem?.media?.metadata || {} // Populate mediaMetadata with the current library items metadata for any keys not set by client
session.mediaMetadata = { const libraryItemMediaMetadata = libraryItem.media.oldMetadataToJSON()
title: session.mediaMetadata.title || title, for (const key in libraryItemMediaMetadata) {
subtitle: session.mediaMetadata.subtitle || subtitle, if (session.mediaMetadata[key] === undefined) {
narrators: session.mediaMetadata.narrators || narrators, session.mediaMetadata[key] = libraryItemMediaMetadata[key]
authors: session.mediaMetadata.authors || authors, }
author: session.mediaMetadata.author || author,
series: session.mediaMetadata.series || series,
genres: session.mediaMetadata.genres || genres,
type: session.mediaMetadata.type || type,
...session.mediaMetadata
} }
if(session.displayTitle == null || session.displayTitle === '') { if (session.displayTitle == null || session.displayTitle === '') {
session.displayTitle = libraryItem?.media?.metadata?.title ?? '' session.displayTitle = libraryItem.title
} }
if(session.displayAuthor == null || session.displayAuthor === '') { if (session.displayAuthor == null || session.displayAuthor === '') {
session.displayAuthor = libraryItem?.media?.metadata?.authors?.map(a => a.name).join(', ') ?? libraryItem?.media?.metadata?.author ?? '' session.displayAuthor = libraryItem.authorNamesFirstLast
} }
session.duration = libraryItem.media.getPlaybackDuration(sessionJson.episodeId) session.duration = libraryItem.media.getPlaybackDuration(sessionJson.episodeId)