diff --git a/src/lib/legado.client.ts b/src/lib/legado.client.ts index 0159a8d..cb5e5e9 100644 --- a/src/lib/legado.client.ts +++ b/src/lib/legado.client.ts @@ -1010,6 +1010,23 @@ function contentFromRule(raw: string, rule?: string, baseUrl?: string): string { return readValue($, $.root(), selectorRule, baseUrl); } +function chapterContentFromRule(raw: string, rule?: string, baseUrl?: string): string { + const json = parseJsonMaybe(raw); + if (json && (ruleIsJson(rule) || isJsRuleString(rule))) { + return readJsonRule(json, rule, undefined, baseUrl); + } + + const rawRule = rule || ''; + const blockJs = rawRule.trim().match(/^([\s\S]*?)<\/js>$/i); + const jsIndex = rawRule.indexOf('@js:'); + if (blockJs || jsIndex >= 0) return contentFromRule(raw, rule, baseUrl); + + const $ = cheerio.load(raw); + const values = readValues($, $.root(), rawRule, baseUrl); + if (values.length > 0) return values.join('\n'); + return readValue($, $.root(), rawRule, baseUrl); +} + function cleanContent(value: string) { const decoded = he.decode(value || '').trim(); if (/