解析内容之前使用登录检测规则检测书源是否登录,js需返回登录过的内容

pull/1264/head
gedoor 4 years ago
parent 2d856206e6
commit 3722590693
  1. 2
      app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt
  2. 62
      app/src/main/java/io/legado/app/model/webBook/WebBook.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

@ -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,

Loading…
Cancel
Save