From 7f5cdcec06b278da54c4d7fb47fa9c06b2e2e67f Mon Sep 17 00:00:00 2001 From: mtvpls Date: Mon, 25 May 2026 10:26:52 +0800 Subject: [PATCH] =?UTF-8?q?legado=E6=96=B0=E5=A2=9E=E4=BA=86=E6=AD=A3?= =?UTF-8?q?=E6=96=87=E4=B8=93=E7=94=A8=E8=A7=A3=E6=9E=90=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/legado.client.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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 (/