From b86797a2452fedc0c0f5a898f9a396f313a17432 Mon Sep 17 00:00:00 2001 From: Roukanken Date: Tue, 11 Mar 2025 20:43:13 +0100 Subject: [PATCH] Fix: Load epub covers via cover-image property --- server/utils/parsers/parseEpubMetadata.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server/utils/parsers/parseEpubMetadata.js b/server/utils/parsers/parseEpubMetadata.js index 25d8821d..7bffc601 100644 --- a/server/utils/parsers/parseEpubMetadata.js +++ b/server/utils/parsers/parseEpubMetadata.js @@ -107,7 +107,8 @@ async function parse(ebookFile) { // Attempt to find filepath to cover image: // Metadata may include where content is the id of the cover image in the manifest - // Otherwise the first image in the manifest is used as the cover image + // Otherwise find image in the manifest with cover-image property set + // As a fallback the first image in the manifest is used as the cover image let packageMetadata = packageJson.package?.metadata if (Array.isArray(packageMetadata)) { packageMetadata = packageMetadata[0] @@ -118,6 +119,9 @@ async function parse(ebookFile) { if (metaCoverId) { manifestFirstImage = packageJson.package?.manifest?.[0]?.item?.find((item) => item.$?.id === metaCoverId) } + if (!manifestFirstImage) { + manifestFirstImage = packageJson.package?.manifest?.[0]?.item?.find((item) => item.$?.['properties']?.split(' ')?.includes('cover-image')) + } if (!manifestFirstImage) { manifestFirstImage = packageJson.package?.manifest?.[0]?.item?.find((item) => item.$?.['media-type']?.startsWith('image/')) }