解析内容之前使用登录检测规则检测书源是否登录,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 * 执行JS
*/ */
private fun evalJS(jsStr: String, result: Any? = null): Any? { fun evalJS(jsStr: String, result: Any? = null): Any? {
val bindings = SimpleBindings() val bindings = SimpleBindings()
bindings["java"] = this bindings["java"] = this
bindings["baseUrl"] = baseUrl bindings["baseUrl"] = baseUrl

@ -45,9 +45,16 @@ class WebBook(val bookSource: BookSource) {
page = page, page = page,
baseUrl = sourceUrl, baseUrl = sourceUrl,
headerMapF = bookSource.getHeaderMap(), 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 BookList.analyzeBookList(scope, res, bookSource, analyzeUrl, variableBook, true)
} }
return arrayListOf() return arrayListOf()
@ -78,9 +85,16 @@ class WebBook(val bookSource: BookSource) {
page = page, page = page,
baseUrl = sourceUrl, baseUrl = sourceUrl,
book = variableBook, book = variableBook,
source = bookSource,
headerMapF = bookSource.getHeaderMap() 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) 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) val strResponse = StrResponse(book.bookUrl, book.infoHtml)
BookInfo.analyzeBookInfo(scope, strResponse, bookSource, book, book.bookUrl, canReName) BookInfo.analyzeBookInfo(scope, strResponse, bookSource, book, book.bookUrl, canReName)
} else { } else {
val res = AnalyzeUrl( val analyzeUrl = AnalyzeUrl(
ruleUrl = book.bookUrl, ruleUrl = book.bookUrl,
baseUrl = sourceUrl, baseUrl = sourceUrl,
headerMapF = bookSource.getHeaderMap(), book = book,
book = book source = bookSource,
).getStrResponse(bookSource.bookSourceUrl) 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) BookInfo.analyzeBookInfo(scope, res, bookSource, book, book.bookUrl, canReName)
} }
return book return book
@ -141,12 +163,20 @@ class WebBook(val bookSource: BookSource) {
val strResponse = StrResponse(book.tocUrl, book.tocHtml) val strResponse = StrResponse(book.tocUrl, book.tocHtml)
BookChapterList.analyzeChapterList(scope, strResponse, bookSource, book, book.tocUrl) BookChapterList.analyzeChapterList(scope, strResponse, bookSource, book, book.tocUrl)
} else { } else {
val res = AnalyzeUrl( val analyzeUrl = AnalyzeUrl(
book = book,
ruleUrl = book.tocUrl, ruleUrl = book.tocUrl,
baseUrl = book.bookUrl, baseUrl = book.bookUrl,
book = book,
source = bookSource,
headerMapF = bookSource.getHeaderMap() 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) BookChapterList.analyzeChapterList(scope, res, bookSource, book, book.tocUrl)
} }
} }
@ -188,17 +218,25 @@ class WebBook(val bookSource: BookSource) {
nextChapterUrl nextChapterUrl
) )
} else { } else {
val res = AnalyzeUrl( val analyzeUrl = AnalyzeUrl(
ruleUrl = bookChapter.getAbsoluteURL(), ruleUrl = bookChapter.getAbsoluteURL(),
baseUrl = book.tocUrl, baseUrl = book.tocUrl,
headerMapF = bookSource.getHeaderMap(), headerMapF = bookSource.getHeaderMap(),
book = book, book = book,
source = bookSource,
chapter = bookChapter chapter = bookChapter
).getStrResponse( )
var res = analyzeUrl.getStrResponse(
bookSource.bookSourceUrl, bookSource.bookSourceUrl,
jsStr = bookSource.getContentRule().webJs, jsStr = bookSource.getContentRule().webJs,
sourceRegex = bookSource.getContentRule().sourceRegex sourceRegex = bookSource.getContentRule().sourceRegex
) )
//检测书源是否已登录
bookSource.loginCheckJs?.let { checkJs ->
if (checkJs.isNotBlank()) {
res = analyzeUrl.evalJS(checkJs) as StrResponse
}
}
BookContent.analyzeContent( BookContent.analyzeContent(
scope, scope,
res, res,

Loading…
Cancel
Save