diff --git a/app/src/main/java/io/legado/app/help/BookHelp.kt b/app/src/main/java/io/legado/app/help/BookHelp.kt
index 5a0721620..5a30aba70 100644
--- a/app/src/main/java/io/legado/app/help/BookHelp.kt
+++ b/app/src/main/java/io/legado/app/help/BookHelp.kt
@@ -25,11 +25,12 @@ import kotlin.math.min
object BookHelp {
private const val cacheFolderName = "book_cache"
+ private const val cacheImageFolderName = "images"
private val downloadDir: File = App.INSTANCE.externalFilesDir
private val srcPattern =
Pattern.compile("", Pattern.CASE_INSENSITIVE)
- private fun bookFolderName(book: Book): String {
+ fun bookFolderName(book: Book): String {
return formatFolderName(book.name) + MD5Utils.md5Encode16(book.bookUrl)
}
@@ -81,19 +82,31 @@ object BookHelp {
var src = matcher.group(1)
src = NetworkUtils.getAbsoluteURL(bookChapter.url, src)
src?.let {
- val analyzeUrl = AnalyzeUrl(src, null, null, null, null)
- analyzeUrl.getImageBytes(book.origin)?.let {
- FileUtils.createFileIfNotExist(
- downloadDir,
- "${MD5Utils.md5Encode16(src)}${src.substringAfterLast(".").substringBefore(",")}",
- "images", book.name
- ).writeBytes(it)
- }
+ saveImage(book, src)
}
}
}
postEvent(EventBus.SAVE_CONTENT, bookChapter)
}
+
+ fun saveImage(book: Book, src:String) {
+ val analyzeUrl = AnalyzeUrl(src, null, null, null, null)
+ analyzeUrl.getImageBytes(book.origin)?.let {
+ FileUtils.createFileIfNotExist(
+ downloadDir,
+ "${MD5Utils.md5Encode16(src)}${src.substringAfterLast(".").substringBefore(",")}",
+ subDirs = *arrayOf(cacheFolderName, bookFolderName(book), cacheImageFolderName)
+ ).writeBytes(it)
+ }
+ }
+
+ fun getImage(book:Book, src:String): File {
+ return FileUtils.getFile(
+ downloadDir,
+ "${MD5Utils.md5Encode16(src)}${src.substringAfterLast(".").substringBefore(",")}",
+ subDirs = *arrayOf(cacheFolderName, bookFolderName(book), cacheImageFolderName)
+ )
+ }
fun getChapterFiles(book: Book): List {
val fileNameList = arrayListOf()
diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ImageProvider.kt b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ImageProvider.kt
index 3a6b80d8e..30ac0a613 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ImageProvider.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ImageProvider.kt
@@ -3,15 +3,13 @@ package io.legado.app.ui.book.read.page.provider
import android.graphics.Bitmap
import io.legado.app.App
import io.legado.app.data.entities.Book
-import io.legado.app.help.http.HttpHelper
+import io.legado.app.help.BookHelp
import io.legado.app.model.localBook.EPUBFile
import io.legado.app.utils.BitmapUtils
import io.legado.app.utils.FileUtils
-import io.legado.app.utils.MD5Utils
import io.legado.app.utils.externalFilesDir
import java.io.FileOutputStream
import java.util.concurrent.ConcurrentHashMap
-import io.legado.app.model.analyzeRule.AnalyzeUrl
object ImageProvider {
@@ -36,11 +34,7 @@ object ImageProvider {
getCache(chapterIndex, src)?.let {
return it
}
- val vFile = FileUtils.getFile(
- App.INSTANCE.externalFilesDir,
- "${MD5Utils.md5Encode16(src)}${src.substringAfterLast(".").substringBefore(",")}",
- "images", book.name
- )
+ val vFile = BookHelp.getImage(book, src)
if (!vFile.exists()) {
if (book.isEpub()) {
EPUBFile.getImage(book, src).use {
@@ -50,10 +44,7 @@ object ImageProvider {
out.close()
}
} else if (!onUi) {
- val analyzeUrl = AnalyzeUrl(src, null, null, null, null)
- analyzeUrl.getImageBytes(book.origin)?.let {
- FileUtils.createFileIfNotExist(vFile.absolutePath).writeBytes(it)
- }
+ BookHelp.saveImage(book, src)
}
}
return try {