diff --git a/server/objects/LibraryItem.js b/server/objects/LibraryItem.js index 95674288..a6d620f8 100644 --- a/server/objects/LibraryItem.js +++ b/server/objects/LibraryItem.js @@ -197,9 +197,15 @@ class LibraryItem { if (key === 'libraryFiles') { this.libraryFiles = payload.libraryFiles.map(lf => lf.clone()) - // Use first image library file as cover - const firstImageFile = this.libraryFiles.find(lf => lf.fileType === 'image') - if (firstImageFile) this.media.coverPath = firstImageFile.metadata.path + // Set cover image + const imageFiles = this.libraryFiles.filter(lf => lf.fileType === 'image') + const coverMatch = imageFiles.find(iFile => /\/cover\.[^.\/]*$/.test(iFile.metadata.path)) + if (coverMatch) { + this.media.coverPath = coverMatch.metadata.path + } else if (imageFiles.length) { + this.media.coverPath = imageFiles[0].metadata.path + } + } else if (this[key] !== undefined && key !== 'media') { this[key] = payload[key] } @@ -444,8 +450,14 @@ class LibraryItem { // Set cover image if not set const imageFiles = this.libraryFiles.filter(lf => lf.fileType === 'image') if (imageFiles.length && !this.media.coverPath) { - this.media.coverPath = imageFiles[0].metadata.path - Logger.debug('[LibraryItem] Set media cover path', this.media.coverPath) + // attempt to find a file called cover. otherwise just fall back to the first image found + const coverMatch = imageFiles.find(iFile => /\/cover\.[^.\/]*$/.test(iFile.metadata.path)) + if (coverMatch) { + this.media.coverPath = coverMatch.metadata.path + } else { + this.media.coverPath = imageFiles[0].metadata.path + } + Logger.info('[LibraryItem] Set media cover path', this.media.coverPath) hasUpdated = true }