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