From 3722590693d7f9c52b0686ff86babd4e47f516d5 Mon Sep 17 00:00:00 2001 From: gedoor Date: Mon, 23 Aug 2021 20:15:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E6=9E=90=E5=86=85=E5=AE=B9=E4=B9=8B?= =?UTF-8?q?=E5=89=8D=E4=BD=BF=E7=94=A8=E7=99=BB=E5=BD=95=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E8=A7=84=E5=88=99=E6=A3=80=E6=B5=8B=E4=B9=A6=E6=BA=90=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E7=99=BB=E5=BD=95,js=E9=9C=80=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E8=BF=87=E7=9A=84=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/model/analyzeRule/AnalyzeUrl.kt | 2 +- .../io/legado/app/model/webBook/WebBook.kt | 62 +++++++++++++++---- 2 files changed, 51 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index c09f05f60..7adccdeab 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt @@ -222,7 +222,7 @@ class AnalyzeUrl( /** * 执行JS */ - private fun evalJS(jsStr: String, result: Any? = null): Any? { + fun evalJS(jsStr: String, result: Any? = null): Any? { val bindings = SimpleBindings() bindings["java"] = this bindings["baseUrl"] = baseUrl diff --git a/app/src/main/java/io/legado/app/model/webBook/WebBook.kt b/app/src/main/java/io/legado/app/model/webBook/WebBook.kt index 74e558aca..24d3c6364 100644 --- a/app/src/main/java/io/legado/app/model/webBook/WebBook.kt +++ b/app/src/main/java/io/legado/app/model/webBook/WebBook.kt @@ -45,9 +45,16 @@ class WebBook(val bookSource: BookSource) { page = page, baseUrl = sourceUrl, headerMapF = bookSource.getHeaderMap(), - book = variableBook + book = variableBook, + source = bookSource ) - val res = analyzeUrl.getStrResponse(bookSource.bookSourceUrl) + var res = analyzeUrl.getStrResponse(bookSource.bookSourceUrl) + //检测书源是否已登录 + bookSource.loginCheckJs?.let { checkJs -> + if (checkJs.isNotBlank()) { + res = analyzeUrl.evalJS(checkJs) as StrResponse + } + } return BookList.analyzeBookList(scope, res, bookSource, analyzeUrl, variableBook, true) } return arrayListOf() @@ -78,9 +85,16 @@ class WebBook(val bookSource: BookSource) { page = page, baseUrl = sourceUrl, book = variableBook, + source = bookSource, headerMapF = bookSource.getHeaderMap() ) - val res = analyzeUrl.getStrResponse(bookSource.bookSourceUrl) + var res = analyzeUrl.getStrResponse(bookSource.bookSourceUrl) + //检测书源是否已登录 + bookSource.loginCheckJs?.let { checkJs -> + if (checkJs.isNotBlank()) { + res = analyzeUrl.evalJS(checkJs) as StrResponse + } + } return BookList.analyzeBookList(scope, res, bookSource, analyzeUrl, variableBook, false) } @@ -108,12 +122,20 @@ class WebBook(val bookSource: BookSource) { val strResponse = StrResponse(book.bookUrl, book.infoHtml) BookInfo.analyzeBookInfo(scope, strResponse, bookSource, book, book.bookUrl, canReName) } else { - val res = AnalyzeUrl( + val analyzeUrl = AnalyzeUrl( ruleUrl = book.bookUrl, baseUrl = sourceUrl, - headerMapF = bookSource.getHeaderMap(), - book = book - ).getStrResponse(bookSource.bookSourceUrl) + book = book, + source = bookSource, + headerMapF = bookSource.getHeaderMap() + ) + var res = analyzeUrl.getStrResponse(bookSource.bookSourceUrl) + //检测书源是否已登录 + bookSource.loginCheckJs?.let { checkJs -> + if (checkJs.isNotBlank()) { + res = analyzeUrl.evalJS(checkJs) as StrResponse + } + } BookInfo.analyzeBookInfo(scope, res, bookSource, book, book.bookUrl, canReName) } return book @@ -141,12 +163,20 @@ class WebBook(val bookSource: BookSource) { val strResponse = StrResponse(book.tocUrl, book.tocHtml) BookChapterList.analyzeChapterList(scope, strResponse, bookSource, book, book.tocUrl) } else { - val res = AnalyzeUrl( - book = book, + val analyzeUrl = AnalyzeUrl( ruleUrl = book.tocUrl, baseUrl = book.bookUrl, + book = book, + source = bookSource, headerMapF = bookSource.getHeaderMap() - ).getStrResponse(bookSource.bookSourceUrl) + ) + var res = analyzeUrl.getStrResponse(bookSource.bookSourceUrl) + //检测书源是否已登录 + bookSource.loginCheckJs?.let { checkJs -> + if (checkJs.isNotBlank()) { + res = analyzeUrl.evalJS(checkJs) as StrResponse + } + } BookChapterList.analyzeChapterList(scope, res, bookSource, book, book.tocUrl) } } @@ -188,17 +218,25 @@ class WebBook(val bookSource: BookSource) { nextChapterUrl ) } else { - val res = AnalyzeUrl( + val analyzeUrl = AnalyzeUrl( ruleUrl = bookChapter.getAbsoluteURL(), baseUrl = book.tocUrl, headerMapF = bookSource.getHeaderMap(), book = book, + source = bookSource, chapter = bookChapter - ).getStrResponse( + ) + var res = analyzeUrl.getStrResponse( bookSource.bookSourceUrl, jsStr = bookSource.getContentRule().webJs, sourceRegex = bookSource.getContentRule().sourceRegex ) + //检测书源是否已登录 + bookSource.loginCheckJs?.let { checkJs -> + if (checkJs.isNotBlank()) { + res = analyzeUrl.evalJS(checkJs) as StrResponse + } + } BookContent.analyzeContent( scope, res,