Просмотр исходного кода

Merge pull request #1679 from Xwite/master

更新BookController.getImg
kunfei 4 лет назад
Родитель
Сommit
5032d470b9
1 измененных файлов с 15 добавлено и 4 удалено
  1. 15 4
      app/src/main/java/io/legado/app/api/controller/BookController.kt

+ 15 - 4
app/src/main/java/io/legado/app/api/controller/BookController.kt

@@ -8,6 +8,7 @@ import io.legado.app.api.ReturnData
 import io.legado.app.constant.PreferKey
 import io.legado.app.data.appDb
 import io.legado.app.data.entities.Book
+import io.legado.app.data.entities.BookSource
 import io.legado.app.help.BookHelp
 import io.legado.app.help.CacheManager
 import io.legado.app.help.ContentProcessor
@@ -29,6 +30,10 @@ import java.io.FileOutputStream
 
 object BookController {
 
+    private lateinit var book: Book
+    private var bookSource: BookSource? = null
+    private var bookUrl: String = ""
+
     /**
      * 书架所有书籍
      */
@@ -72,19 +77,25 @@ object BookController {
         val returnData = ReturnData()
         val bookUrl = parameters["url"]?.firstOrNull()
             ?: return returnData.setErrorMsg("bookUrl为空")
-        val book = appDb.bookDao.getBook(bookUrl)
-            ?: return returnData.setErrorMsg("bookUrl不对:${bookUrl}")
         val src = parameters["path"]?.firstOrNull()
             ?: return returnData.setErrorMsg("图片链接为空")
+        val width = parameters["width"]?.firstOrNull()?.toInt() ?: 640
+        if (this.bookUrl != bookUrl) {
+            this.book = appDb.bookDao.getBook(bookUrl)
+                ?: return returnData.setErrorMsg("bookUrl不对")
+        }
         val vFile = BookHelp.getImage(book, src)
         if (!vFile.exists()) {
-            val bookSource = appDb.bookSourceDao.getBookSource(book.origin)
+            if (this.bookUrl != bookUrl) {
+                this.bookSource = appDb.bookSourceDao.getBookSource(book.origin)
+            }
             runBlocking {
                 BookHelp.saveImage(bookSource, book, src)
             }
         }
+        this.bookUrl = bookUrl
         return returnData.setData(
-            BitmapUtils.decodeBitmap(vFile.absolutePath, 640, 640)
+            BitmapUtils.decodeBitmap(vFile.absolutePath, width, width)
         )
     }