From eec7f5d54c887608ec182757409be4e167c2b36c Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Wed, 2 Mar 2022 19:44:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=90=86=E6=AD=A3=E6=96=87=E5=9B=BE?= =?UTF-8?q?=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/api/controller/BookController.kt | 23 ++++++++++++++++++- .../main/java/io/legado/app/web/HttpServer.kt | 1 + 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/api/controller/BookController.kt b/app/src/main/java/io/legado/app/api/controller/BookController.kt index 17be8f1c3..1c7f6ef79 100644 --- a/app/src/main/java/io/legado/app/api/controller/BookController.kt +++ b/app/src/main/java/io/legado/app/api/controller/BookController.kt @@ -25,6 +25,7 @@ import kotlinx.coroutines.runBlocking import splitties.init.appCtx import java.io.File import java.io.FileOutputStream +import java.net.URLDecoder object BookController { @@ -55,7 +56,7 @@ object BookController { */ fun getCover(parameters: Map>): ReturnData { val returnData = ReturnData() - val coverPath = parameters["path"]?.firstOrNull() + val coverPath = URLDecoder.decode(parameters["path"]?.firstOrNull(), "UTF-8") val ftBitmap = ImageLoader.loadBitmap(appCtx, coverPath).submit() return try { returnData.setData(ftBitmap.get()) @@ -64,6 +65,26 @@ object BookController { } } + /** + * 获取正文图片 + */ + fun getImage(parameters: Map>): ReturnData { + val returnData = ReturnData() + val bookUrl = parameters["url"]?.firstOrNull() + ?: return returnData.setErrorMsg("bookUrl为空") + val book = appDb.bookDao.getBook(bookUrl) + ?: return returnData.setErrorMsg("bookUrl不对") + val src = URLDecoder.decode(parameters["path"]?.firstOrNull(), "UTF-8") + val vFile = BookHelp.getImage(book, src) + if (!vFile.exists()) { + val bookSource = appDb.bookSourceDao.getBookSource(book.origin) + runBlocking { + BookHelp.saveImage(bookSource, book, src) + } + } + return returnData.setData(vfile.readBytes()) + } + /** * 更新目录 */ diff --git a/app/src/main/java/io/legado/app/web/HttpServer.kt b/app/src/main/java/io/legado/app/web/HttpServer.kt index 430b136aa..bbd37b519 100644 --- a/app/src/main/java/io/legado/app/web/HttpServer.kt +++ b/app/src/main/java/io/legado/app/web/HttpServer.kt @@ -61,6 +61,7 @@ class HttpServer(port: Int) : NanoHTTPD(port) { "/refreshToc" -> BookController.refreshToc(parameters) "/getBookContent" -> BookController.getBookContent(parameters) "/cover" -> BookController.getCover(parameters) + "/image" -> BookController.getImage(parameters) "/getReadConfig" -> BookController.getWebReadConfig() "/getRssSource" -> RssSourceController.getSource(parameters) "/getRssSources" -> RssSourceController.sources