From bd15aecccc507675aa16c5943fb91009bddf56dc Mon Sep 17 00:00:00 2001 From: Gauthier Roebroeck Date: Wed, 5 May 2021 14:29:10 +0800 Subject: [PATCH] fix: rar extractor could mis-analyze some images --- .../infrastructure/mediacontainer/RarExtractor.kt | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/RarExtractor.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/RarExtractor.kt index 06bfb4e80..92d3f12ec 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/RarExtractor.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/RarExtractor.kt @@ -30,14 +30,13 @@ class RarExtractor( .filter { !it.isDirectory } .map { entry -> try { - rar.getInputStream(entry).buffered().use { stream -> - val mediaType = contentDetector.detectMediaType(stream) - val dimension = if (contentDetector.isImage(mediaType)) - imageAnalyzer.getDimension(stream) - else - null - MediaContainerEntry(name = entry.fileName, mediaType = mediaType, dimension = dimension) - } + val buffer = rar.getInputStream(entry).use { it.readBytes() } + val mediaType = buffer.inputStream().use { contentDetector.detectMediaType(it) } + val dimension = if (contentDetector.isImage(mediaType)) + buffer.inputStream().use { imageAnalyzer.getDimension(it) } + else + null + MediaContainerEntry(name = entry.fileName, mediaType = mediaType, dimension = dimension) } catch (e: Exception) { logger.warn(e) { "Could not analyze entry: ${entry.fileName}" } MediaContainerEntry(name = entry.fileName, comment = e.message)