throw an error when trying to use PPMd

This commit is contained in:
AbdallahMehiz 2024-01-19 11:00:57 +01:00
parent db3c53da3d
commit 9bfb34982e
No known key found for this signature in database
GPG Key ID: 975266399F5BAF34
3 changed files with 16 additions and 3 deletions

View File

@ -7,6 +7,7 @@ import eu.kanade.tachiyomi.data.download.DownloadProvider
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
import org.apache.commons.compress.archivers.dump.UnsupportedCompressionAlgorithmException
import tachiyomi.core.i18n.stringResource import tachiyomi.core.i18n.stringResource
import tachiyomi.core.storage.UniFileTempFileManager import tachiyomi.core.storage.UniFileTempFileManager
import tachiyomi.core.util.lang.withIOContext import tachiyomi.core.util.lang.withIOContext
@ -98,7 +99,11 @@ class ChapterLoader(
when (format) { when (format) {
is Format.Directory -> DirectoryPageLoader(format.file) is Format.Directory -> DirectoryPageLoader(format.file)
is Format.Zip -> ZipPageLoader(tempFileManager.createTempFile(format.file)) is Format.Zip -> ZipPageLoader(tempFileManager.createTempFile(format.file))
is Format.SevenZip -> SevenZipPageLoader(tempFileManager.createTempFile(format.file)) is Format.SevenZip -> try {
SevenZipPageLoader(tempFileManager.createTempFile(format.file))
} catch (e: UnsupportedCompressionAlgorithmException) {
error(context.stringResource(MR.strings.loader_ppmd_error))
}
is Format.Rar -> try { is Format.Rar -> try {
RarPageLoader(tempFileManager.createTempFile(format.file)) RarPageLoader(tempFileManager.createTempFile(format.file))
} catch (e: UnsupportedRarV5Exception) { } catch (e: UnsupportedRarV5Exception) {

View File

@ -1,14 +1,21 @@
package eu.kanade.tachiyomi.util.storage package eu.kanade.tachiyomi.util.storage
import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder
import org.apache.commons.compress.archivers.dump.UnsupportedCompressionAlgorithmException
import org.apache.commons.compress.archivers.sevenz.SevenZFile import org.apache.commons.compress.archivers.sevenz.SevenZFile
import tachiyomi.core.util.system.ImageUtil import tachiyomi.core.util.system.ImageUtil
import java.io.IOException
import java.io.InputStream import java.io.InputStream
object SevenZUtil { object SevenZUtil {
fun SevenZFile.getImages(): Sequence<ByteArray> { fun SevenZFile.getImages(): Sequence<ByteArray> {
return generateSequence { runCatching { getNextEntry() }.getOrNull() } return generateSequence {
.filter { !it.isDirectory && ImageUtil.isImage(it.name) { getInputStream(it) } } try {
getNextEntry()
} catch (e: IOException) {
throw UnsupportedCompressionAlgorithmException()
}
}.filter { !it.isDirectory && ImageUtil.isImage(it.name) { getInputStream(it) } }
.sortedWith { f1, f2 -> f1.name.compareToCaseInsensitiveNaturalOrder(f2.name) } .sortedWith { f1, f2 -> f1.name.compareToCaseInsensitiveNaturalOrder(f2.name) }
.map(::getInputStream) .map(::getInputStream)
.map { it.use(InputStream::readBytes) } // ByteArray .map { it.use(InputStream::readBytes) } // ByteArray

View File

@ -776,6 +776,7 @@
<string name="page_list_empty_error">No pages found</string> <string name="page_list_empty_error">No pages found</string>
<string name="loader_not_implemented_error">Source not found</string> <string name="loader_not_implemented_error">Source not found</string>
<string name="loader_rar5_error">RARv5 format is not supported</string> <string name="loader_rar5_error">RARv5 format is not supported</string>
<string name="loader_ppmd_error">PPMd compression is not supported</string>
<!-- Updates --> <!-- Updates -->
<string name="updating_library">Updating library</string> <string name="updating_library">Updating library</string>