diff --git a/bookSource.json b/bookSource.json index 0512106..08a9e25 100644 --- a/bookSource.json +++ b/bookSource.json @@ -11,13 +11,13 @@ "enabledExplore": true, "header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 13; 2210132C Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.5845.92 Mobile Safari/537.36\"}", "jsLib": "// ============ 源变量配置(照光遇模式:defaultConfig 兜底,全 try-catch) ============\nconst defaultConfig = {\n 模式: \"小说\",\n 音色: \"0\",\n 清晰度: \"max\",\n 段评: \"开\",\n 图片: \"保留\"\n};\n\nconst fqVarsKey = 'fq_vars';\n\nfunction getVariable(k) {\n if (k == undefined) k = \"\";\n var parsed = {};\n try {\n var raw = String(cache.get(fqVarsKey) || '');\n if (raw) parsed = JSON.parse(raw);\n } catch (e) {}\n if (k == \"\") return parsed;\n var value = parsed[k];\n if (value == undefined) value = defaultConfig[k];\n return value != undefined ? value : \"\";\n}\n\nfunction setVariable(k, v, t) {\n if (t == undefined) t = true;\n var parsed = {};\n try {\n var raw = String(cache.get(fqVarsKey) || '');\n if (raw) parsed = JSON.parse(raw);\n } catch (e) {}\n parsed[k] = v;\n try { cache.put(fqVarsKey, JSON.stringify(parsed)); } catch (e) {}\n if (t) java.toast('\\n设置 ' + k + ' 为 ' + v);\n}\n\n// 发现页筛选按钮回调:存变量并刷新发现页\nfunction show(m, t) {\n setVariable(t, m, false);\n java.toast('\\n已设置' + t + ':' + m + '\\n已在书架的书切换模式后需刷新目录');\n try { java.refreshExplore(); } catch (e) {}\n}\n\nfunction createFilter(title, chars, defaultVal, paramKey, size, viewName) {\n if (viewName == undefined) viewName = \"'请选择类型'\";\n return {\n title: title,\n type: \"select\",\n chars: chars,\n default: defaultVal,\n \"viewName\": viewName,\n action: `show(infoMap['${title}'],'${paramKey}')`,\n style: {\n layout_flexGrow: 1,\n layout_flexBasisPercent: size\n }\n };\n}\n\n// ============ 基础工具 ============\nfunction BaseUrl() {\n var u = '';\n try {\n if (typeof source != 'undefined' && source && source.getKey) u = String(source.getKey());\n } catch (e) {}\n if (!u) {\n try {\n if (typeof book != 'undefined' && book && book.origin) u = String(book.origin);\n } catch (e) {}\n }\n if (!u) {\n try {\n if (typeof baseUrl != 'undefined') {\n var m = String(baseUrl).match(/^https?:\\/\\/[^\\/]+/);\n if (m) u = m[0];\n }\n } catch (e) {}\n }\n return u.replace(/\\/+$/, '');\n}\n\nfunction request(url) {\n let urla = url;\n if (!url.includes('http')) urla = this.BaseUrl() + url;\n return java.ajax(urla);\n}\n\nfunction parseJsonSafely(str, defaultValue) {\n if (defaultValue == null) defaultValue = null;\n try {\n return JSON.parse(str);\n } catch (e) {\n return defaultValue;\n }\n}\n\nfunction isIOS() {\n try {\n java.deviceID();\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction isMod() {\n try {\n if (typeof java.reLoginView == 'function') return true;\n new Packages.io.legato.kazusa.utils.TimeoutCancellationException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// 纯 JS base64(UTF-8),规避部分阅读版本 base64 编码 API 不可用\nfunction b64encode(str) {\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n var bytes = [];\n str = String(str);\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c < 0x80) {\n bytes.push(c);\n } else if (c < 0x800) {\n bytes.push(0xC0 | (c >> 6), 0x80 | (c & 63));\n } else {\n bytes.push(0xE0 | (c >> 12), 0x80 | ((c >> 6) & 63), 0x80 | (c & 63));\n }\n }\n var out = '';\n for (var j = 0; j < bytes.length; j += 3) {\n var b1 = bytes[j];\n var b2 = j + 1 < bytes.length ? bytes[j + 1] : undefined;\n var b3 = j + 2 < bytes.length ? bytes[j + 2] : undefined;\n out += chars[b1 >> 2];\n out += chars[((b1 & 3) << 4) | (b2 == undefined ? 0 : b2 >> 4)];\n out += b2 == undefined ? '=' : chars[((b2 & 15) << 2) | (b3 == undefined ? 0 : b3 >> 6)];\n out += b3 == undefined ? '=' : chars[b3 & 63];\n }\n return out;\n}\n\n// ============ 段评气泡(/content?review=keep 注入 标记,点击打开 /review_html 页面) ============\nfunction createSvg(number, url) {\n var t = number > 99 ? '99+' : String(number);\n var svg = `${t}`;\n var k = isMod() ? 'click' : 'js';\n return `data:image/svg+xml;base64,${b64encode(svg)},{\"${k}\":\"showCmt('${url}','段评')\",\"style\":\"text\"}`;\n}\n\nfunction showCmt(url, title) {\n var t = title || '段评';\n try {\n java.startBrowser(url, t);\n return;\n } catch (e) {}\n try {\n java.startBrowserDp(url, t);\n } catch (e2) {}\n}\n\nfunction paraForAndroid(content) {\n return content.replace(/]*>([\\s\\S]*?)(?:)?<\\/p>/g,\n function (m, text, url, count) {\n if (url && count) return `

${text}

`;\n return `

${text}

`;\n });\n}\n\nfunction paraForiOS(content) {\n return content.replace(/]*>([\\s\\S]*?)(?:)?<\\/p>/g,\n function (m, text, url, count) {\n if (url && count) {\n var u = url.replace(/&/g, '&');\n return `
${text} 99 ? '99' : count}\" onPress=\"java.showReadingBrowser('${u}','段评')\">
`;\n }\n return `
${text}
`;\n }).replace(/"/g, '\"');\n}\n\n// ============ 发现页搜索(光遇同款):按当前类型自动加前缀 ============\nfunction createText(title, action, defaultValue, size, viewName) {\n return {\n title: title,\n type: 'text',\n default: defaultValue || '',\n action: action,\n viewName: viewName || title,\n style: {layout_flexGrow: 1, layout_flexBasisPercent: size}\n };\n}\n\nfunction exploreSearch() {\n var key = getVariable('搜索关键词');\n if (!key || !String(key).trim()) {\n java.toast('请输入搜索关键词');\n return;\n }\n var prefix = {听书: 't:', 漫画: 'm:', 短剧: 'd:'}[getVariable('模式')] || '';\n var word = prefix + String(key).trim();\n var done = false;\n try {\n var sk = '';\n try { sk = source.bookSourceName + '::' + source.getKey(); } catch (e) {}\n if (sk) { java.searchBook(word, sk); done = true; }\n } catch (e) {}\n if (!done) {\n try { java.open('search', word); done = true; } catch (e2) {}\n }\n if (!done) java.toast('请到搜索页搜索:' + word);\n try { java.refreshExplore(); } catch (e) {}\n}", - "lastUpdateTime": 1791568829218, + "lastUpdateTime": 1791569042509, "respondTime": 180000, "exploreUrl": "\nvar groups = {\"🔥 男频精选\": [{\"title\": \"玄幻\", \"url\": \"/category-landing?category_id=7&offset={{(page-1)*20}}\"}, {\"title\": \"都市\", \"url\": \"/category-landing?category_id=1&offset={{(page-1)*20}}\"}, {\"title\": \"历史\", \"url\": \"/category-landing?category_id=12&offset={{(page-1)*20}}\"}, {\"title\": \"悬疑\", \"url\": \"/category-landing?category_id=10&offset={{(page-1)*20}}\"}, {\"title\": \"衍生\", \"url\": \"/category-landing?category_id=1079&offset={{(page-1)*20}}\"}, {\"title\": \"同人\", \"url\": \"/category-landing?category_id=538&offset={{(page-1)*20}}\"}, {\"title\": \"科幻末世\", \"url\": \"/category-landing?category_id=8&offset={{(page-1)*20}}\"}, {\"title\": \"奇幻仙侠\", \"url\": \"/category-landing?category_id=259&offset={{(page-1)*20}}\"}, {\"title\": \"种田\", \"url\": \"/category-landing?category_id=23&offset={{(page-1)*20}}\"}, {\"title\": \"游戏体育\", \"url\": \"/category-landing?category_id=746&offset={{(page-1)*20}}\"}, {\"title\": \"系统\", \"url\": \"/category-landing?category_id=19&offset={{(page-1)*20}}\"}, {\"title\": \"重生\", \"url\": \"/category-landing?category_id=36&offset={{(page-1)*20}}\"}, {\"title\": \"穿越\", \"url\": \"/category-landing?category_id=37&offset={{(page-1)*20}}\"}, {\"title\": \"多女主\", \"url\": \"/category-landing?category_id=91&offset={{(page-1)*20}}\"}, {\"title\": \"修仙\", \"url\": \"/category-landing?category_id=517&offset={{(page-1)*20}}\"}, {\"title\": \"二次元\", \"url\": \"/category-landing?category_id=39&offset={{(page-1)*20}}\"}, {\"title\": \"搞笑轻松\", \"url\": \"/category-landing?category_id=778&offset={{(page-1)*20}}\"}, {\"title\": \"单女主\", \"url\": \"/category-landing?category_id=389&offset={{(page-1)*20}}\"}, {\"title\": \"悬疑灵异\", \"url\": \"/category-landing?category_id=751&offset={{(page-1)*20}}\"}, {\"title\": \"末日求生\", \"url\": \"/category-landing?category_id=515&offset={{(page-1)*20}}\"}, {\"title\": \"娱乐圈\", \"url\": \"/category-landing?category_id=43&offset={{(page-1)*20}}\"}, {\"title\": \"末世\", \"url\": \"/category-landing?category_id=68&offset={{(page-1)*20}}\"}], \"🌸 女频精选\": [{\"title\": \"现代言情\", \"url\": \"/category-landing?category_id=3&offset={{(page-1)*20}}\"}, {\"title\": \"古代言情\", \"url\": \"/category-landing?category_id=5&offset={{(page-1)*20}}\"}, {\"title\": \"纯爱\", \"url\": \"/category-landing?category_id=1012&offset={{(page-1)*20}}\"}, {\"title\": \"甜宠\", \"url\": \"/category-landing?category_id=96&offset={{(page-1)*20}}\"}, {\"title\": \"总裁\", \"url\": \"/category-landing?category_id=29&offset={{(page-1)*20}}\"}, {\"title\": \"幻想言情\", \"url\": \"/category-landing?category_id=32&offset={{(page-1)*20}}\"}, {\"title\": \"双男主\", \"url\": \"/category-landing?category_id=275&offset={{(page-1)*20}}\"}, {\"title\": \"双女主\", \"url\": \"/category-landing?category_id=704&offset={{(page-1)*20}}\"}, {\"title\": \"年代\", \"url\": \"/category-landing?category_id=79&offset={{(page-1)*20}}\"}, {\"title\": \"快穿\", \"url\": \"/category-landing?category_id=24&offset={{(page-1)*20}}\"}, {\"title\": \"豪门总裁\", \"url\": \"/category-landing?category_id=748&offset={{(page-1)*20}}\"}, {\"title\": \"追妻火葬场\", \"url\": \"/category-landing?category_id=616&offset={{(page-1)*20}}\"}, {\"title\": \"无CP\", \"url\": \"/category-landing?category_id=392&offset={{(page-1)*20}}\"}, {\"title\": \"大女主\", \"url\": \"/category-landing?category_id=760&offset={{(page-1)*20}}\"}, {\"title\": \"女强\", \"url\": \"/category-landing?category_id=86&offset={{(page-1)*20}}\"}], \"🏷️ 男频标签\": [{\"title\": \"古代\", \"url\": \"/category-landing?category_id=758&offset={{(page-1)*20}}\"}, {\"title\": \"历史古代\", \"url\": \"/category-landing?category_id=273&offset={{(page-1)*20}}\"}, {\"title\": \"轻小说\", \"url\": \"/category-landing?category_id=858&offset={{(page-1)*20}}\"}, {\"title\": \"都市生活\", \"url\": \"/category-landing?category_id=2&offset={{(page-1)*20}}\"}, {\"title\": \"都市高武\", \"url\": \"/category-landing?category_id=1014&offset={{(page-1)*20}}\"}, {\"title\": \"游戏动漫\", \"url\": \"/category-landing?category_id=57&offset={{(page-1)*20}}\"}, {\"title\": \"抗战谍战\", \"url\": \"/category-landing?category_id=504&offset={{(page-1)*20}}\"}, {\"title\": \"体育\", \"url\": \"/category-landing?category_id=15&offset={{(page-1)*20}}\"}, {\"title\": \"都市异能\", \"url\": \"/category-landing?category_id=516&offset={{(page-1)*20}}\"}, {\"title\": \"武侠\", \"url\": \"/category-landing?category_id=16&offset={{(page-1)*20}}\"}, {\"title\": \"东方仙侠\", \"url\": \"/category-landing?category_id=1140&offset={{(page-1)*20}}\"}, {\"title\": \"东方玄幻\", \"url\": \"/category-landing?category_id=511&offset={{(page-1)*20}}\"}, {\"title\": \"男频衍生\", \"url\": \"/category-landing?category_id=1016&offset={{(page-1)*20}}\"}, {\"title\": \"西方奇幻\", \"url\": \"/category-landing?category_id=1141&offset={{(page-1)*20}}\"}, {\"title\": \"异世大陆\", \"url\": \"/category-landing?category_id=512&offset={{(page-1)*20}}\"}, {\"title\": \"都市种田\", \"url\": \"/category-landing?category_id=263&offset={{(page-1)*20}}\"}, {\"title\": \"影视小说\", \"url\": \"/category-landing?category_id=45&offset={{(page-1)*20}}\"}, {\"title\": \"仕途\", \"url\": \"/category-landing?category_id=558&offset={{(page-1)*20}}\"}, {\"title\": \"规则怪谈\", \"url\": \"/category-landing?category_id=851&offset={{(page-1)*20}}\"}, {\"title\": \"国运\", \"url\": \"/category-landing?category_id=496&offset={{(page-1)*20}}\"}, {\"title\": \"灵气复苏\", \"url\": \"/category-landing?category_id=514&offset={{(page-1)*20}}\"}, {\"title\": \"历史脑洞\", \"url\": \"/category-landing?category_id=272&offset={{(page-1)*20}}\"}, {\"title\": \"都市脑洞\", \"url\": \"/category-landing?category_id=262&offset={{(page-1)*20}}\"}, {\"title\": \"玄幻脑洞\", \"url\": \"/category-landing?category_id=257&offset={{(page-1)*20}}\"}, {\"title\": \"综漫\", \"url\": \"/category-landing?category_id=465&offset={{(page-1)*20}}\"}, {\"title\": \"综影视\", \"url\": \"/category-landing?category_id=1058&offset={{(page-1)*20}}\"}, {\"title\": \"架空\", \"url\": \"/category-landing?category_id=452&offset={{(page-1)*20}}\"}, {\"title\": \"异能\", \"url\": \"/category-landing?category_id=598&offset={{(page-1)*20}}\"}, {\"title\": \"克苏鲁\", \"url\": \"/category-landing?category_id=705&offset={{(page-1)*20}}\"}, {\"title\": \"高武世界\", \"url\": \"/category-landing?category_id=513&offset={{(page-1)*20}}\"}, {\"title\": \"悬疑脑洞\", \"url\": \"/category-landing?category_id=539&offset={{(page-1)*20}}\"}, {\"title\": \"宝可梦\", \"url\": \"/category-landing?category_id=859&offset={{(page-1)*20}}\"}, {\"title\": \"谍战\", \"url\": \"/category-landing?category_id=507&offset={{(page-1)*20}}\"}, {\"title\": \"第四天灾\", \"url\": \"/category-landing?category_id=855&offset={{(page-1)*20}}\"}, {\"title\": \"开局\", \"url\": \"/category-landing?category_id=453&offset={{(page-1)*20}}\"}, {\"title\": \"天灾\", \"url\": \"/category-landing?category_id=658&offset={{(page-1)*20}}\"}, {\"title\": \"宋朝\", \"url\": \"/category-landing?category_id=501&offset={{(page-1)*20}}\"}, {\"title\": \"第一人称\", \"url\": \"/category-landing?category_id=871&offset={{(page-1)*20}}\"}, {\"title\": \"武将\", \"url\": \"/category-landing?category_id=497&offset={{(page-1)*20}}\"}, {\"title\": \"赛博朋克\", \"url\": \"/category-landing?category_id=873&offset={{(page-1)*20}}\"}, {\"title\": \"断层\", \"url\": \"/category-landing?category_id=500&offset={{(page-1)*20}}\"}, {\"title\": \"清朝\", \"url\": \"/category-landing?category_id=503&offset={{(page-1)*20}}\"}, {\"title\": \"扮猪吃虎\", \"url\": \"/category-landing?category_id=93&offset={{(page-1)*20}}\"}, {\"title\": \"无女主\", \"url\": \"/category-landing?category_id=391&offset={{(page-1)*20}}\"}, {\"title\": \"特种兵\", \"url\": \"/category-landing?category_id=375&offset={{(page-1)*20}}\"}, {\"title\": \"校花\", \"url\": \"/category-landing?category_id=385&offset={{(page-1)*20}}\"}, {\"title\": \"大小姐\", \"url\": \"/category-landing?category_id=519&offset={{(page-1)*20}}\"}, {\"title\": \"神医\", \"url\": \"/category-landing?category_id=26&offset={{(page-1)*20}}\"}, {\"title\": \"腹黑\", \"url\": \"/category-landing?category_id=92&offset={{(page-1)*20}}\"}, {\"title\": \"反派\", \"url\": \"/category-landing?category_id=369&offset={{(page-1)*20}}\"}, {\"title\": \"大佬\", \"url\": \"/category-landing?category_id=520&offset={{(page-1)*20}}\"}, {\"title\": \"女帝\", \"url\": \"/category-landing?category_id=378&offset={{(page-1)*20}}\"}, {\"title\": \"天才\", \"url\": \"/category-landing?category_id=90&offset={{(page-1)*20}}\"}, {\"title\": \"学霸\", \"url\": \"/category-landing?category_id=82&offset={{(page-1)*20}}\"}, {\"title\": \"赘婿\", \"url\": \"/category-landing?category_id=25&offset={{(page-1)*20}}\"}, {\"title\": \"奶爸\", \"url\": \"/category-landing?category_id=42&offset={{(page-1)*20}}\"}, {\"title\": \"战神赘婿\", \"url\": \"/category-landing?category_id=27&offset={{(page-1)*20}}\"}, {\"title\": \"皇帝\", \"url\": \"/category-landing?category_id=498&offset={{(page-1)*20}}\"}, {\"title\": \"群像\", \"url\": \"/category-landing?category_id=841&offset={{(page-1)*20}}\"}, {\"title\": \"特工\", \"url\": \"/category-landing?category_id=518&offset={{(page-1)*20}}\"}, {\"title\": \"游戏主播\", \"url\": \"/category-landing?category_id=509&offset={{(page-1)*20}}\"}, {\"title\": \"全能\", \"url\": \"/category-landing?category_id=856&offset={{(page-1)*20}}\"}, {\"title\": \"贵族\", \"url\": \"/category-landing?category_id=502&offset={{(page-1)*20}}\"}, {\"title\": \"神探\", \"url\": \"/category-landing?category_id=506&offset={{(page-1)*20}}\"}, {\"title\": \"动漫衍生\", \"url\": \"/category-landing?category_id=718&offset={{(page-1)*20}}\"}, {\"title\": \"无脑爽\", \"url\": \"/category-landing?category_id=850&offset={{(page-1)*20}}\"}, {\"title\": \"网游\", \"url\": \"/category-landing?category_id=372&offset={{(page-1)*20}}\"}, {\"title\": \"风水秘术\", \"url\": \"/category-landing?category_id=1455&offset={{(page-1)*20}}\"}, {\"title\": \"灵异\", \"url\": \"/category-landing?category_id=100&offset={{(page-1)*20}}\"}, {\"title\": \"无限流\", \"url\": \"/category-landing?category_id=70&offset={{(page-1)*20}}\"}, {\"title\": \"仙侠\", \"url\": \"/category-landing?category_id=9&offset={{(page-1)*20}}\"}, {\"title\": \"四合院\", \"url\": \"/category-landing?category_id=495&offset={{(page-1)*20}}\"}, {\"title\": \"空间\", \"url\": \"/category-landing?category_id=44&offset={{(page-1)*20}}\"}, {\"title\": \"乡村\", \"url\": \"/category-landing?category_id=11&offset={{(page-1)*20}}\"}, {\"title\": \"诸天万界\", \"url\": \"/category-landing?category_id=71&offset={{(page-1)*20}}\"}, {\"title\": \"神豪\", \"url\": \"/category-landing?category_id=20&offset={{(page-1)*20}}\"}, {\"title\": \"三国\", \"url\": \"/category-landing?category_id=67&offset={{(page-1)*20}}\"}, {\"title\": \"穿书\", \"url\": \"/category-landing?category_id=382&offset={{(page-1)*20}}\"}, {\"title\": \"盗墓\", \"url\": \"/category-landing?category_id=81&offset={{(page-1)*20}}\"}, {\"title\": \"洪荒\", \"url\": \"/category-landing?category_id=66&offset={{(page-1)*20}}\"}, {\"title\": \"无敌\", \"url\": \"/category-landing?category_id=384&offset={{(page-1)*20}}\"}, {\"title\": \"都市修真\", \"url\": \"/category-landing?category_id=124&offset={{(page-1)*20}}\"}, {\"title\": \"星际\", \"url\": \"/category-landing?category_id=77&offset={{(page-1)*20}}\"}, {\"title\": \"民国\", \"url\": \"/category-landing?category_id=390&offset={{(page-1)*20}}\"}, {\"title\": \"捉鬼\", \"url\": \"/category-landing?category_id=867&offset={{(page-1)*20}}\"}, {\"title\": \"魂穿\", \"url\": \"/category-landing?category_id=852&offset={{(page-1)*20}}\"}, {\"title\": \"黑道\", \"url\": \"/category-landing?category_id=826&offset={{(page-1)*20}}\"}, {\"title\": \"破案\", \"url\": \"/category-landing?category_id=505&offset={{(page-1)*20}}\"}, {\"title\": \"1v1\", \"url\": \"/category-landing?category_id=834&offset={{(page-1)*20}}\"}, {\"title\": \"求生\", \"url\": \"/category-landing?category_id=379&offset={{(page-1)*20}}\"}, {\"title\": \"囤物资\", \"url\": \"/category-landing?category_id=494&offset={{(page-1)*20}}\"}, {\"title\": \"惊悚游戏\", \"url\": \"/category-landing?category_id=537&offset={{(page-1)*20}}\"}, {\"title\": \"美食\", \"url\": \"/category-landing?category_id=78&offset={{(page-1)*20}}\"}, {\"title\": \"火影\", \"url\": \"/category-landing?category_id=368&offset={{(page-1)*20}}\"}, {\"title\": \"直播\", \"url\": \"/category-landing?category_id=69&offset={{(page-1)*20}}\"}, {\"title\": \"奇幻\", \"url\": \"/category-landing?category_id=6&offset={{(page-1)*20}}\"}, {\"title\": \"发家致富\", \"url\": \"/category-landing?category_id=840&offset={{(page-1)*20}}\"}, {\"title\": \"职场\", \"url\": \"/category-landing?category_id=127&offset={{(page-1)*20}}\"}, {\"title\": \"宠物\", \"url\": \"/category-landing?category_id=74&offset={{(page-1)*20}}\"}, {\"title\": \"双重生\", \"url\": \"/category-landing?category_id=524&offset={{(page-1)*20}}\"}, {\"title\": \"山海经\", \"url\": \"/category-landing?category_id=875&offset={{(page-1)*20}}\"}, {\"title\": \"双系统\", \"url\": \"/category-landing?category_id=866&offset={{(page-1)*20}}\"}, {\"title\": \"海岛\", \"url\": \"/category-landing?category_id=40&offset={{(page-1)*20}}\"}, {\"title\": \"打脸\", \"url\": \"/category-landing?category_id=522&offset={{(page-1)*20}}\"}, {\"title\": \"电竞\", \"url\": \"/category-landing?category_id=508&offset={{(page-1)*20}}\"}, {\"title\": \"大唐\", \"url\": \"/category-landing?category_id=73&offset={{(page-1)*20}}\"}, {\"title\": \"推理\", \"url\": \"/category-landing?category_id=61&offset={{(page-1)*20}}\"}, {\"title\": \"红楼衍生\", \"url\": \"/category-landing?category_id=1036&offset={{(page-1)*20}}\"}, {\"title\": \"奥特同人\", \"url\": \"/category-landing?category_id=367&offset={{(page-1)*20}}\"}, {\"title\": \"家庭\", \"url\": \"/category-landing?category_id=125&offset={{(page-1)*20}}\"}, {\"title\": \"海贼王\", \"url\": \"/category-landing?category_id=833&offset={{(page-1)*20}}\"}, {\"title\": \"升级流\", \"url\": \"/category-landing?category_id=830&offset={{(page-1)*20}}\"}, {\"title\": \"基建\", \"url\": \"/category-landing?category_id=828&offset={{(page-1)*20}}\"}, {\"title\": \"传统玄幻\", \"url\": \"/category-landing?category_id=258&offset={{(page-1)*20}}\"}, {\"title\": \"明朝\", \"url\": \"/category-landing?category_id=126&offset={{(page-1)*20}}\"}, {\"title\": \"钓鱼\", \"url\": \"/category-landing?category_id=493&offset={{(page-1)*20}}\"}, {\"title\": \"鉴宝\", \"url\": \"/category-landing?category_id=17&offset={{(page-1)*20}}\"}, {\"title\": \"黑科技\", \"url\": \"/category-landing?category_id=854&offset={{(page-1)*20}}\"}, {\"title\": \"大秦\", \"url\": \"/category-landing?category_id=377&offset={{(page-1)*20}}\"}, {\"title\": \"神奇宝贝\", \"url\": \"/category-landing?category_id=371&offset={{(page-1)*20}}\"}, {\"title\": \"剑修\", \"url\": \"/category-landing?category_id=868&offset={{(page-1)*20}}\"}, {\"title\": \"漫威\", \"url\": \"/category-landing?category_id=374&offset={{(page-1)*20}}\"}, {\"title\": \"都市江湖\", \"url\": \"/category-landing?category_id=1460&offset={{(page-1)*20}}\"}, {\"title\": \"黑化\", \"url\": \"/category-landing?category_id=846&offset={{(page-1)*20}}\"}, {\"title\": \"九叔\", \"url\": \"/category-landing?category_id=383&offset={{(page-1)*20}}\"}, {\"title\": \"废土\", \"url\": \"/category-landing?category_id=869&offset={{(page-1)*20}}\"}, {\"title\": \"无后宫\", \"url\": \"/category-landing?category_id=838&offset={{(page-1)*20}}\"}, {\"title\": \"迪化\", \"url\": \"/category-landing?category_id=843&offset={{(page-1)*20}}\"}, {\"title\": \"高手下山\", \"url\": \"/category-landing?category_id=845&offset={{(page-1)*20}}\"}, {\"title\": \"灵魂互换\", \"url\": \"/category-landing?category_id=831&offset={{(page-1)*20}}\"}, {\"title\": \"西游衍生\", \"url\": \"/category-landing?category_id=373&offset={{(page-1)*20}}\"}, {\"title\": \"封神\", \"url\": \"/category-landing?category_id=731&offset={{(page-1)*20}}\"}, {\"title\": \"聊天群\", \"url\": \"/category-landing?category_id=381&offset={{(page-1)*20}}\"}, {\"title\": \"争霸\", \"url\": \"/category-landing?category_id=837&offset={{(page-1)*20}}\"}, {\"title\": \"卡牌\", \"url\": \"/category-landing?category_id=874&offset={{(page-1)*20}}\"}, {\"title\": \"科举\", \"url\": \"/category-landing?category_id=832&offset={{(page-1)*20}}\"}, {\"title\": \"海贼\", \"url\": \"/category-landing?category_id=370&offset={{(page-1)*20}}\"}, {\"title\": \"副本\", \"url\": \"/category-landing?category_id=864&offset={{(page-1)*20}}\"}, {\"title\": \"龙珠\", \"url\": \"/category-landing?category_id=376&offset={{(page-1)*20}}\"}, {\"title\": \"剑道\", \"url\": \"/category-landing?category_id=80&offset={{(page-1)*20}}\"}, {\"title\": \"甄嬛衍生\", \"url\": \"/category-landing?category_id=1035&offset={{(page-1)*20}}\"}, {\"title\": \"斩神\", \"url\": \"/category-landing?category_id=857&offset={{(page-1)*20}}\"}, {\"title\": \"斩神衍生\", \"url\": \"/category-landing?category_id=1062&offset={{(page-1)*20}}\"}, {\"title\": \"外卖\", \"url\": \"/category-landing?category_id=75&offset={{(page-1)*20}}\"}, {\"title\": \"公版衍生\", \"url\": \"/category-landing?category_id=1037&offset={{(page-1)*20}}\"}, {\"title\": \"如懿衍生\", \"url\": \"/category-landing?category_id=1034&offset={{(page-1)*20}}\"}, {\"title\": \"十日衍生\", \"url\": \"/category-landing?category_id=1060&offset={{(page-1)*20}}\"}], \"🏷️ 女频标签\": [{\"title\": \"虐恋情深\", \"url\": \"/category-landing?category_id=481&offset={{(page-1)*20}}\"}, {\"title\": \"玄幻言情\", \"url\": \"/category-landing?category_id=248&offset={{(page-1)*20}}\"}, {\"title\": \"异世穿越\", \"url\": \"/category-landing?category_id=464&offset={{(page-1)*20}}\"}, {\"title\": \"豪门世家\", \"url\": \"/category-landing?category_id=473&offset={{(page-1)*20}}\"}, {\"title\": \"女频衍生\", \"url\": \"/category-landing?category_id=1015&offset={{(page-1)*20}}\"}, {\"title\": \"宫斗宅斗\", \"url\": \"/category-landing?category_id=246&offset={{(page-1)*20}}\"}, {\"title\": \"现言甜宠\", \"url\": \"/category-landing?category_id=395&offset={{(page-1)*20}}\"}, {\"title\": \"青春甜宠\", \"url\": \"/category-landing?category_id=749&offset={{(page-1)*20}}\"}, {\"title\": \"现言脑洞\", \"url\": \"/category-landing?category_id=267&offset={{(page-1)*20}}\"}, {\"title\": \"女频悬疑\", \"url\": \"/category-landing?category_id=747&offset={{(page-1)*20}}\"}, {\"title\": \"古言权谋\", \"url\": \"/category-landing?category_id=1317&offset={{(page-1)*20}}\"}, {\"title\": \"独宠\", \"url\": \"/category-landing?category_id=460&offset={{(page-1)*20}}\"}, {\"title\": \"现代\", \"url\": \"/category-landing?category_id=757&offset={{(page-1)*20}}\"}, {\"title\": \"民国言情\", \"url\": \"/category-landing?category_id=1017&offset={{(page-1)*20}}\"}, {\"title\": \"悬疑恋爱\", \"url\": \"/category-landing?category_id=1169&offset={{(page-1)*20}}\"}, {\"title\": \"日久生情\", \"url\": \"/category-landing?category_id=474&offset={{(page-1)*20}}\"}, {\"title\": \"职场商战\", \"url\": \"/category-landing?category_id=485&offset={{(page-1)*20}}\"}, {\"title\": \"古言脑洞\", \"url\": \"/category-landing?category_id=253&offset={{(page-1)*20}}\"}, {\"title\": \"古风世情\", \"url\": \"/category-landing?category_id=1139&offset={{(page-1)*20}}\"}, {\"title\": \"萌宝\", \"url\": \"/category-landing?category_id=28&offset={{(page-1)*20}}\"}, {\"title\": \"病娇\", \"url\": \"/category-landing?category_id=380&offset={{(page-1)*20}}\"}, {\"title\": \"团宠\", \"url\": \"/category-landing?category_id=94&offset={{(page-1)*20}}\"}, {\"title\": \"双病娇\", \"url\": \"/category-landing?category_id=870&offset={{(page-1)*20}}\"}, {\"title\": \"明星\", \"url\": \"/category-landing?category_id=486&offset={{(page-1)*20}}\"}, {\"title\": \"宠妻\", \"url\": \"/category-landing?category_id=30&offset={{(page-1)*20}}\"}, {\"title\": \"白切黑\", \"url\": \"/category-landing?category_id=853&offset={{(page-1)*20}}\"}, {\"title\": \"忠犬\", \"url\": \"/category-landing?category_id=865&offset={{(page-1)*20}}\"}, {\"title\": \"公主\", \"url\": \"/category-landing?category_id=83&offset={{(page-1)*20}}\"}, {\"title\": \"嫡女\", \"url\": \"/category-landing?category_id=88&offset={{(page-1)*20}}\"}, {\"title\": \"替身\", \"url\": \"/category-landing?category_id=470&offset={{(page-1)*20}}\"}, {\"title\": \"医生\", \"url\": \"/category-landing?category_id=487&offset={{(page-1)*20}}\"}, {\"title\": \"王妃\", \"url\": \"/category-landing?category_id=85&offset={{(page-1)*20}}\"}, {\"title\": \"位尊权重\", \"url\": \"/category-landing?category_id=1456&offset={{(page-1)*20}}\"}, {\"title\": \"厨娘\", \"url\": \"/category-landing?category_id=490&offset={{(page-1)*20}}\"}, {\"title\": \"古灵精怪\", \"url\": \"/category-landing?category_id=459&offset={{(page-1)*20}}\"}, {\"title\": \"精灵\", \"url\": \"/category-landing?category_id=89&offset={{(page-1)*20}}\"}, {\"title\": \"双学霸\", \"url\": \"/category-landing?category_id=849&offset={{(page-1)*20}}\"}, {\"title\": \"将军\", \"url\": \"/category-landing?category_id=492&offset={{(page-1)*20}}\"}, {\"title\": \"作精\", \"url\": \"/category-landing?category_id=521&offset={{(page-1)*20}}\"}, {\"title\": \"皇叔\", \"url\": \"/category-landing?category_id=87&offset={{(page-1)*20}}\"}, {\"title\": \"冰山\", \"url\": \"/category-landing?category_id=468&offset={{(page-1)*20}}\"}, {\"title\": \"皇后\", \"url\": \"/category-landing?category_id=84&offset={{(page-1)*20}}\"}, {\"title\": \"毒医\", \"url\": \"/category-landing?category_id=491&offset={{(page-1)*20}}\"}, {\"title\": \"可盐可甜\", \"url\": \"/category-landing?category_id=454&offset={{(page-1)*20}}\"}, {\"title\": \"律师\", \"url\": \"/category-landing?category_id=488&offset={{(page-1)*20}}\"}, {\"title\": \"戏精\", \"url\": \"/category-landing?category_id=863&offset={{(page-1)*20}}\"}, {\"title\": \"双面\", \"url\": \"/category-landing?category_id=469&offset={{(page-1)*20}}\"}, {\"title\": \"天作之合\", \"url\": \"/category-landing?category_id=455&offset={{(page-1)*20}}\"}, {\"title\": \"虐文\", \"url\": \"/category-landing?category_id=95&offset={{(page-1)*20}}\"}, {\"title\": \"强强\", \"url\": \"/category-landing?category_id=478&offset={{(page-1)*20}}\"}, {\"title\": \"破镜重圆\", \"url\": \"/category-landing?category_id=475&offset={{(page-1)*20}}\"}, {\"title\": \"校园\", \"url\": \"/category-landing?category_id=4&offset={{(page-1)*20}}\"}, {\"title\": \"先婚后爱\", \"url\": \"/category-landing?category_id=265&offset={{(page-1)*20}}\"}, {\"title\": \"青梅竹马\", \"url\": \"/category-landing?category_id=387&offset={{(page-1)*20}}\"}, {\"title\": \"男二上位\", \"url\": \"/category-landing?category_id=1457&offset={{(page-1)*20}}\"}, {\"title\": \"兽世\", \"url\": \"/category-landing?category_id=72&offset={{(page-1)*20}}\"}, {\"title\": \"虐渣\", \"url\": \"/category-landing?category_id=457&offset={{(page-1)*20}}\"}, {\"title\": \"暗恋\", \"url\": \"/category-landing?category_id=482&offset={{(page-1)*20}}\"}, {\"title\": \"HE\", \"url\": \"/category-landing?category_id=484&offset={{(page-1)*20}}\"}, {\"title\": \"今穿古\", \"url\": \"/category-landing?category_id=463&offset={{(page-1)*20}}\"}, {\"title\": \"女扮男装\", \"url\": \"/category-landing?category_id=388&offset={{(page-1)*20}}\"}, {\"title\": \"真假千金\", \"url\": \"/category-landing?category_id=844&offset={{(page-1)*20}}\"}, {\"title\": \"年下\", \"url\": \"/category-landing?category_id=829&offset={{(page-1)*20}}\"}, {\"title\": \"追妻\", \"url\": \"/category-landing?category_id=842&offset={{(page-1)*20}}\"}, {\"title\": \"带球跑\", \"url\": \"/category-landing?category_id=479&offset={{(page-1)*20}}\"}, {\"title\": \"双洁\", \"url\": \"/category-landing?category_id=702&offset={{(page-1)*20}}\"}, {\"title\": \"一见钟情\", \"url\": \"/category-landing?category_id=477&offset={{(page-1)*20}}\"}, {\"title\": \"古色古香\", \"url\": \"/category-landing?category_id=877&offset={{(page-1)*20}}\"}, {\"title\": \"追夫\", \"url\": \"/category-landing?category_id=872&offset={{(page-1)*20}}\"}, {\"title\": \"养崽\", \"url\": \"/category-landing?category_id=847&offset={{(page-1)*20}}\"}, {\"title\": \"胎穿\", \"url\": \"/category-landing?category_id=876&offset={{(page-1)*20}}\"}, {\"title\": \"年龄差\", \"url\": \"/category-landing?category_id=848&offset={{(page-1)*20}}\"}, {\"title\": \"久别重逢\", \"url\": \"/category-landing?category_id=839&offset={{(page-1)*20}}\"}, {\"title\": \"古穿今\", \"url\": \"/category-landing?category_id=462&offset={{(page-1)*20}}\"}, {\"title\": \"养成\", \"url\": \"/category-landing?category_id=835&offset={{(page-1)*20}}\"}, {\"title\": \"前世今生\", \"url\": \"/category-landing?category_id=523&offset={{(page-1)*20}}\"}, {\"title\": \"宠夫\", \"url\": \"/category-landing?category_id=861&offset={{(page-1)*20}}\"}, {\"title\": \"职场婚恋\", \"url\": \"/category-landing?category_id=750&offset={{(page-1)*20}}\"}, {\"title\": \"相爱相杀\", \"url\": \"/category-landing?category_id=483&offset={{(page-1)*20}}\"}, {\"title\": \"逃荒\", \"url\": \"/category-landing?category_id=557&offset={{(page-1)*20}}\"}, {\"title\": \"攻略反派\", \"url\": \"/category-landing?category_id=1459&offset={{(page-1)*20}}\"}, {\"title\": \"清穿\", \"url\": \"/category-landing?category_id=76&offset={{(page-1)*20}}\"}, {\"title\": \"家长里短\", \"url\": \"/category-landing?category_id=862&offset={{(page-1)*20}}\"}, {\"title\": \"星光璀璨\", \"url\": \"/category-landing?category_id=745&offset={{(page-1)*20}}\"}, {\"title\": \"双向奔赴\", \"url\": \"/category-landing?category_id=476&offset={{(page-1)*20}}\"}, {\"title\": \"契约婚姻\", \"url\": \"/category-landing?category_id=471&offset={{(page-1)*20}}\"}, {\"title\": \"医术\", \"url\": \"/category-landing?category_id=247&offset={{(page-1)*20}}\"}, {\"title\": \"相互救赎\", \"url\": \"/category-landing?category_id=860&offset={{(page-1)*20}}\"}, {\"title\": \"婚恋\", \"url\": \"/category-landing?category_id=34&offset={{(page-1)*20}}\"}, {\"title\": \"群穿\", \"url\": \"/category-landing?category_id=461&offset={{(page-1)*20}}\"}, {\"title\": \"隐婚\", \"url\": \"/category-landing?category_id=467&offset={{(page-1)*20}}\"}, {\"title\": \"情有独钟\", \"url\": \"/category-landing?category_id=456&offset={{(page-1)*20}}\"}, {\"title\": \"代嫁代娶\", \"url\": \"/category-landing?category_id=1458&offset={{(page-1)*20}}\"}, {\"title\": \"闪婚\", \"url\": \"/category-landing?category_id=466&offset={{(page-1)*20}}\"}, {\"title\": \"互宠\", \"url\": \"/category-landing?category_id=836&offset={{(page-1)*20}}\"}, {\"title\": \"护短\", \"url\": \"/category-landing?category_id=458&offset={{(page-1)*20}}\"}]};\nvar tab = getVariable('模式');\nvar channel = getVariable('频道') || '男频';\nvar data = [];\n// ── 设置区 ──\ndata.push(createFilter('类型', ['小说', '听书', '漫画', '短剧'], tab, '模式', 0.5, \"'当前类型'\"));\ndata.push(createFilter('频道', ['男频', '女频'], channel, '频道', 0.5, \"'分类频道'\"));\ndata.push(createFilter('音色', ['0', '1', '2', '4', '5', '6'], getVariable('音色'), '音色', 0.5, \"'听书音色'\"));\ndata.push(createFilter('清晰度', ['max', '720p', '540p', '480p', '360p'], getVariable('清晰度'), '清晰度', 0.5, \"'视频清晰度'\"));\ndata.push(createFilter('段评', ['开', '关'], getVariable('段评'), '段评', 0.5, \"'段评'\"));\ndata.push(createFilter('图片', ['保留', '移除'], getVariable('图片'), '图片', 0.5, \"'插图'\"));\n// ── 发现页搜索(漫画/短剧等无分类的类型用这里搜)──\ndata.push(createText('搜索关键词', \"setVariable('搜索关键词', infoMap['搜索关键词'])\", getVariable('搜索关键词'), 0.75, \"'书名'\"));\ndata.push({title: '🔍搜索', type: 'button', action: 'exploreSearch()', style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25}});\n// ── 类型提示 ──\nif (tab != '小说') {\n var tips = {\n 听书: '🎧 当前类型:听书 | 下方分类为小说书城,点开的书将按听书模式播放(TTS)',\n 漫画: '🎨 当前类型:漫画 | 漫画无分类,请用上方搜索框(自动加 m: 前缀)',\n 短剧: '🎬 当前类型:短剧 | 短剧无分类,请用上方搜索框(自动加 d: 前缀)'\n };\n data.push({title: tips[tab] || '', style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}});\n}\n// ── 当前频道分类:组标题整行,条目一行 3 个 ──\n['精选', '标签'].forEach(function (suffix) {\n var key = (suffix === '精选'\n ? (channel === '女频' ? '🌸 女频' : '🔥 男频') + suffix\n : '🏷️ ' + channel + suffix);\n var list = groups[key] || [];\n if (!list.length) return;\n data.push({title: key, style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}});\n list.forEach(function (it) {\n it.style = {layout_flexGrow: 1, layout_flexBasisPercent: 0.32};\n data.push(it);\n });\n});\nJSON.stringify(data);\n", "searchUrl": "\nvar tab = getVariable('模式');\nvar m = String(key).match(/^([xtmdXTMD])[:::]/);\nvar q = String(key);\nif (m) {\n tab = {x: '小说', t: '听书', m: '漫画', d: '短剧'}[m[1].toLowerCase()];\n q = q.slice(2);\n}\njava.put('fq_search_tab', tab);\nvar typeMap = {'小说': 3, '听书': 2, '漫画': 8, '短剧': 11};\n`/search?query=${encodeURIComponent(q)}&tab_type=${typeMap[tab] || 3}&offset=${(page - 1) * 10}`;\n", "ruleSearch": { "author": "author", - "bookList": "\nvar tab = java.get('fq_search_tab') || getVariable('模式');\nvar d = parseJsonSafely(result, {});\nvar list = [];\n(d.data || []).forEach(function (b) {\n (b.book_data || b.video_data || []).forEach(function (x) {\n x.fq_tab = tab;\n list.push(x);\n });\n});\nJSON.stringify({data: list});\n$.data", + "bookList": "\nvar tab = java.get('fq_search_tab') || getVariable('模式');\nvar d = parseJsonSafely(result, {});\nvar list = [];\n(d.data || []).forEach(function (b) {\n if (b.book_data) {\n b.book_data.forEach(function (x) {\n x.fq_tab = tab;\n list.push(x);\n });\n } else if (b.video_data) {\n // 短剧字段与书籍不同,归一化为 book_data 结构(book_id 用 series_id 走通 detail/catalog)\n b.video_data.forEach(function (v) {\n list.push({\n book_id: v.series_id || v.vid,\n book_name: v.title || v.raw_book_name,\n author: (v.video_detail && v.video_detail.actor) || '',\n thumb_url: v.cover || '',\n abstract: v.sub_title || '',\n category: v.sub_title || '',\n fq_tab: tab\n });\n });\n }\n});\nJSON.stringify({data: list});\n$.data", "bookUrl": "\n'/detail?book_id=' + result.book_id + '&tab=' + (result.fq_tab || getVariable('模式'));\n", "checkKeyWord": "十日终焉", "coverUrl": "thumb_url",