mirror of
https://github.com/mihonapp/mihon.git
synced 2025-10-16 16:19:43 +02:00
notify user of slow compression methods
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user