From f5a05a297360b4878c717fa96f9c99d17f9712cb Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Wed, 2 Mar 2022 19:44:06 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BB=A3=E7=90=86=E6=AD=A3=E6=96=87?= =?UTF-8?q?=E5=9B=BE=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..651d84fe7 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 getImg(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..f593c0647 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.getImg(parameters) "/getReadConfig" -> BookController.getWebReadConfig() "/getRssSource" -> RssSourceController.getSource(parameters) "/getRssSources" -> RssSourceController.sources From cd03d6fd1e9e3303879f3fccfaf3f44e49b1cd89 Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Wed, 2 Mar 2022 21:50:08 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=BC=96=E7=A0=81bookurl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/api/controller/BookController.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 651d84fe7..d26d9a09e 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 @@ -72,7 +72,7 @@ object BookController { val returnData = ReturnData() val bookUrl = parameters["url"]?.firstOrNull() ?: return returnData.setErrorMsg("bookUrl为空") - val book = appDb.bookDao.getBook(bookUrl) + val book = appDb.bookDao.getBook(URLDecoder.decode(bookUrl, "UTF-8")) ?: return returnData.setErrorMsg("bookUrl不对") val src = URLDecoder.decode(parameters["path"]?.firstOrNull(), "UTF-8") val vFile = BookHelp.getImage(book, src) @@ -82,7 +82,9 @@ object BookController { BookHelp.saveImage(bookSource, book, src) } } - return returnData.setData(vFile.readBytes()) + return returnData.setData( + BitmapUtils.decodeBitmap(vFile.absolutePath) + ) } /**