notify user of slow compression methods

This commit is contained in:
AbdallahMehiz
2024-01-22 21:18:32 +01:00
parent 9bfb34982e
commit 463e6f85f6
5 changed files with 32 additions and 6 deletions

View File

@@ -3,12 +3,19 @@ package eu.kanade.tachiyomi.util.storage
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.SevenZMethod
import tachiyomi.core.util.system.ImageUtil
import java.io.IOException
import java.io.InputStream
object SevenZUtil {
fun SevenZFile.getImages(): Sequence<ByteArray> {
private val GoodMethods = arrayOf(
SevenZMethod.LZMA2,
SevenZMethod.DEFLATE,
SevenZMethod.COPY,
)
fun SevenZFile.getImages(notifySlowArchives: (method: String) -> Unit): Sequence<ByteArray> {
return generateSequence {
try {
getNextEntry()
@@ -16,6 +23,11 @@ object SevenZUtil {
throw UnsupportedCompressionAlgorithmException()
}
}.filter { !it.isDirectory && ImageUtil.isImage(it.name) { getInputStream(it) } }
.onEachIndexed { i, it ->
if (i > 0) return@onEachIndexed
val method = it.contentMethods.first().method
if(method !in GoodMethods) notifySlowArchives(method.name)
}
.sortedWith { f1, f2 -> f1.name.compareToCaseInsensitiveNaturalOrder(f2.name) }
.map(::getInputStream)
.map { it.use(InputStream::readBytes) } // ByteArray