|
|
|
@ -10,8 +10,10 @@ import io.legado.app.help.BookHelp |
|
|
|
|
import io.legado.app.model.Debug |
|
|
|
|
import io.legado.app.model.analyzeRule.AnalyzeRule |
|
|
|
|
import io.legado.app.model.analyzeRule.AnalyzeUrl |
|
|
|
|
import io.legado.app.model.analyzeRule.QueryTTF |
|
|
|
|
import io.legado.app.utils.NetworkUtils |
|
|
|
|
import io.legado.app.utils.htmlFormat |
|
|
|
|
import io.legado.app.utils.toStringArray |
|
|
|
|
import kotlinx.coroutines.CoroutineScope |
|
|
|
|
import kotlinx.coroutines.withContext |
|
|
|
|
|
|
|
|
@ -34,13 +36,21 @@ object BookContent { |
|
|
|
|
val content = StringBuilder() |
|
|
|
|
val nextUrlList = arrayListOf(baseUrl) |
|
|
|
|
val contentRule = bookSource.getContentRule() |
|
|
|
|
contentRule.font?.let { |
|
|
|
|
//todo 获取字体 |
|
|
|
|
val analyzeRule = AnalyzeRule(book) |
|
|
|
|
analyzeRule.setContent(body).setBaseUrl(baseUrl) |
|
|
|
|
analyzeRule.getByteArray(it)?.let { font -> |
|
|
|
|
BookHelp.saveFont(book, bookChapter, font) |
|
|
|
|
} |
|
|
|
|
val analyzeRule = AnalyzeRule(book).setContent(body, baseUrl) |
|
|
|
|
val fontRule = contentRule.font |
|
|
|
|
val correctFontRule = contentRule.correctFont |
|
|
|
|
var font: ByteArray? = null |
|
|
|
|
var correctFont: ByteArray? = null |
|
|
|
|
fontRule?.let { |
|
|
|
|
//todo 获取网页嵌入字体 |
|
|
|
|
font = analyzeRule.getByteArray(it) |
|
|
|
|
} |
|
|
|
|
correctFontRule?.let { |
|
|
|
|
//todo 获取正确字体 |
|
|
|
|
correctFont = analyzeRule.getByteArray(it) |
|
|
|
|
} |
|
|
|
|
if (correctFont == null && font != null) { |
|
|
|
|
BookHelp.saveFont(book, bookChapter, font!!) |
|
|
|
|
} |
|
|
|
|
var contentData = analyzeContent( |
|
|
|
|
book, baseUrl, body, contentRule, bookChapter, bookSource |
|
|
|
@ -101,11 +111,20 @@ object BookContent { |
|
|
|
|
var contentStr = content.toString().htmlFormat() |
|
|
|
|
val replaceRegex = bookSource.ruleContent?.replaceRegex |
|
|
|
|
if (!replaceRegex.isNullOrEmpty()) { |
|
|
|
|
val analyzeRule = AnalyzeRule(book) |
|
|
|
|
analyzeRule.setContent(contentStr).setBaseUrl(baseUrl) |
|
|
|
|
analyzeRule.chapter = bookChapter |
|
|
|
|
contentStr = analyzeRule.getString(replaceRegex) |
|
|
|
|
} |
|
|
|
|
if (correctFont != null && font != null) { |
|
|
|
|
val queryTTF = QueryTTF(font!!) |
|
|
|
|
val cQueryTTF = QueryTTF(correctFont!!) |
|
|
|
|
val contentArray = contentStr.toStringArray() |
|
|
|
|
contentArray.forEachIndexed { index, s -> |
|
|
|
|
val code = cQueryTTF.getCodeByGlyf(queryTTF.getGlyfByCode(s.toInt())) |
|
|
|
|
contentArray[index] = code.toString() |
|
|
|
|
} |
|
|
|
|
contentStr = contentArray.joinToString("") |
|
|
|
|
} |
|
|
|
|
Debug.log(bookSource.bookSourceUrl, "┌获取章节名称") |
|
|
|
|
Debug.log(bookSource.bookSourceUrl, "└${bookChapter.title}") |
|
|
|
|
Debug.log(bookSource.bookSourceUrl, "┌获取正文内容") |
|
|
|
|