[{"bookSourceComment":"须菠萝猫书源配合\n找书啦 zhaoshu.la —— 在线求书互助站\n· 发现：最新已解决 \/ 最新未解决 \/ 全部求书 \/ 🙋我的求书（每页10条，page 翻页）\n· 搜索：\/search\/{关键词}\/all\/，匹配求书帖标题+描述\n· 详情：\/request\/{id}.html\n· ★简介用官方 <useweb> 浏览器渲染：简介里直接生成橙色按钮，点一下就走 legado:\/\/import\/addToBookshelf 深链 → 按各书源详情页正则匹配 → 直接打开那本书的详情页\n· 目录：把「求书原帖 + 每一条书友回复」映射成虚拟章节；标题带 🔗 表示该回复含书源网址，带 ✅ 表示已被采纳；回复里每条网址再生成「🔗 一键开书」章节（点它直接调起阅读）\n· 正文：展示该条回复全文 + 提取出的网址 + 复制网址跳转提示\n· 登录界面可登录 \/ 检查登录状态 \/ 退出 \/ 发布求书帖（书名2~200字，描述≥10字；站点无删除功能）\n· 站点必须使用手机端 UA，桌面 UA 会被 GoEdge WAF 拦截（302 到 \/WAF\/VERIFY\/CAPTCHA）\n· 阅读全部匿名可访问，无需登录；登录仅用于发帖\/回复\n· 服务器响应较慢（单页约 6~7 秒），已放宽 timeout\n","bookSourceGroup":"AI书源","bookSourceName":"🔍 找书啦·求书互助","bookSourceType":0,"bookSourceUrl":"https:\/\/www.zhaoshu.la","bookUrlPattern":"https?:\/\/(?:www\\.)?zhaoshu\\.la\/request\/\\d+\\.html","customButton":false,"customOrder":6,"enabled":true,"enabledCookieJar":true,"enabledExplore":true,"eventListener":false,"exploreUrl":"🔥 最新已解决::https:\/\/www.zhaoshu.la\/solved\/{{page>1?'page\/'+page:''}}&&⏳ 最新未解决::https:\/\/www.zhaoshu.la\/unsolved\/{{page>1?'page\/'+page:''}}&&📚 全部求书::https:\/\/www.zhaoshu.la\/all\/{{page>1?'page\/'+page:''}}&&🙋 我的求书::https:\/\/www.zhaoshu.la\/user\/requests.php","header":"{\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 14; Pixel 8) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/126.0.0.0 Mobile Safari\/537.36\", \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\"}","lastUpdateTime":"1788781557116","loginCheckJs":"(function(){\n  try {\n    \/* 未登录访问「我的求书」时站点 302 → \/auth\/login.php，\n       因此判据是：最终 URL 是登录页（而不是原来写的 \/user\/requests.php，\n       那个 URL 在重定向后永远不会出现，提示从来不会弹）。 *\/\n    var u = String(result.url() || '');\n    if (u.indexOf('\/auth\/login.php') >= 0) {\n      java.toast('⚠️ 查看「我的求书」需要先登录：书源管理 → 本来源 → 登录');\n    }\n  } catch (e) {}\n  return result;\n})()\n","loginUi":"[{\"name\": \"邮箱\", \"type\": \"text\", \"hint\": \"找书啦登录邮箱（浏览找书无需登录）\"}, {\"name\": \"密码\", \"type\": \"password\", \"hint\": \"登录密码\"}, {\"name\": \"① 登录\", \"type\": \"button\", \"action\": \"login()\"}, {\"name\": \"② 检查登录状态\", \"type\": \"button\", \"action\": \"checkLogin()\"}, {\"name\": \"③ 退出登录\", \"type\": \"button\", \"action\": \"logout()\"}, {\"name\": \"书名\", \"type\": \"text\", \"hint\": \"发布求书：书名（2~200字）\"}, {\"name\": \"描述\", \"type\": \"text\", \"hint\": \"发布求书：线索描述（≥10字，作者\/平台\/字数\/渠道等）\"}, {\"name\": \"④ 发布求书帖\", \"type\": \"button\", \"action\": \"publishRequest()\"}, {\"name\": \"⑤ 我的求书入口\", \"type\": \"button\", \"action\": \"openMyRequests()\"}, {\"name\": \"📖 使用说明\", \"type\": \"button\", \"action\": \"showHelp()\"}]","loginUrl":"function zsHomeHtml(){\n    try { return String(java.ajax('https:\/\/www.zhaoshu.la\/')); } catch(e) { return ''; }\n}\nfunction zsLogged(html){\n    \/\/ 判据：页头「退出登录 \/auth\/logout.php」链接只在已登录时渲染。\n    \/\/ 不能用 \/request\/create.php —— 首页导航栏常年挂这个入口占位；\n    \/\/ 也不能用「登录你的找书啦账号」反向判断 —— 这句是登录框副标题，登录页必含。\n    return String(html).indexOf('\/auth\/logout.php') >= 0;\n}\nfunction zsFlashMsg(html){\n    var m = String(html).match(\/--danger-bg[^>]*>([\\s\\S]*?)<\\\/div>\/);\n    if (!m) return '';\n    return String(m[1]).replace(\/<[^>]+>\/g, '').replace(\/\\s+\/g, '');\n}\n\/* 取指定页面的 csrf_token。页面自身渲染失败\/被WAF时才返回空串；\n   旧版曾把「登录你的找书啦账号」当未登录哨兵——实际上它是登录框副标题，\n   登录页本身就含这句话，导致 token 永远被清空（260907 修复）。 *\/\nfunction zsCsrf(path){\n    var h = '';\n    try { h = String(java.ajax('https:\/\/www.zhaoshu.la' + path)); } catch(e) { return ''; }\n    var m = h.match(\/name=\"csrf_token\" value=\"([0-9a-f]+)\"\/);\n    return m ? m[1] : '';\n}\nfunction zsToken(){ return zsCsrf('\/auth\/login.php'); }\n\/* 表单 POST，走 java.ajax 的 URL 选项式以复用 CookieJar 与书源 UA *\/\nfunction zsPost(path, formObj){\n    var pairs = [];\n    for (var k in formObj) pairs.push(encodeURIComponent(k) + '=' + encodeURIComponent(formObj[k]));\n    var opt = { method: 'POST', body: pairs.join('&'),\n                headers: { 'Content-Type': 'application\/x-www-form-urlencoded' } };\n    return String(java.ajax('https:\/\/www.zhaoshu.la' + path + ',' + JSON.stringify(opt)));\n}\nfunction zsGet(path){\n    try { return String(java.ajax('https:\/\/www.zhaoshu.la' + path)); } catch(e) { return ''; }\n}\n\/* 站点对「未登录时的POST」一律 302 → 首页（登录成功也 302 → 首页），\n   POST 响应体被重定向吞掉 flash（如\"邮箱或密码错误\"）。\n   会话是否有效用 GET 首页看「退出登录」链接复核。 *\/\nfunction zsSessionValid(){\n    return zsLogged(zsHomeHtml());\n}\nfunction login(){\n    var em = '', pw = '';\n    try {\n        em = String(result.get('邮箱') || '').trim();\n        pw = String(result.get('密码') || '');\n    } catch (e) { em = ''; pw = ''; }\n    if (!em || !pw) { java.toast('⚠️ 请先填写邮箱和密码'); return; }\n    java.toast('⏳ 正在登录找书啦…');\n    try {\n        var tk = zsToken();\n        if (!tk) { java.toast('❌ 未取得CSRF令牌，站点可能触发WAF，请稍后再试'); return; }\n        var res = zsPost('\/auth\/login.php', { csrf_token: tk, email: em, password: pw });\n        if (res.indexOf('GOEDGE_WAF') >= 0) {\n            java.toast('❌ 触发WAF人机验证，请先用浏览器打开网站过一次验证');\n            return;\n        }\n        \/* 会话复核：登录成败不能只看 POST 响应（可能被 302 重定向改写），\n           重新 GET 首页看「退出登录」链接是否出现 *\/\n        if (zsSessionValid()) {\n            java.toast('✅ 登录成功：' + em + '　现在可以发布求书帖了');\n        } else {\n            var fm = zsFlashMsg(res);\n            if (!fm) {\n                \/* flash 可能被 302 吞掉，补一发登录页 GET 兜底 *\/\n                fm = zsFlashMsg(String(java.ajax('https:\/\/www.zhaoshu.la\/auth\/login.php')));\n            }\n            java.toast('❌ 登录失败：' + (fm || '邮箱或密码不正确'));\n        }\n    } catch (e2) {\n        java.toast('❌ 登录异常：' + e2.message);\n    }\n}\n\/* 发布求书帖：POST \/request\/create.php  csrf_token + book_name + description *\/\nfunction publishRequest(){\n    var nm = '', ds = '';\n    try {\n        nm = String(result.get('书名') || '').trim();\n        ds = String(result.get('描述') || '').trim();\n    } catch (e) { nm = ''; ds = ''; }\n    if (!nm || nm.length < 2)  { java.toast('⚠️ 书名至少 2 个字'); return; }\n    if (nm.length > 200)       { java.toast('⚠️ 书名不能超过 200 字'); return; }\n    if (!ds || ds.length < 10) { java.toast('⚠️ 描述至少 10 个字，线索越详细越容易被找到'); return; }\n    java.toast('⏳ 正在发布求书帖…');\n    try {\n        \/* 260907实测：已登录但处于发帖限制时，create.php 会静默 302 回首页（无表单无提示），\n           必须先判页面形态再决定提示，否则会把\"限制中\"误报成\"未登录\" *\/\n        var cp = zsGet('\/request\/create.php');\n        if (cp.indexOf('name=\"book_name\"') < 0) {\n            if (zsLogged(cp)) {\n                java.toast('❌ 站点暂不接受发布：可能处于发帖冷却期（发帖后一段时间内不能再发）或账号受限，请稍后再试');\n            } else {\n                java.toast('❌ 未登录无法发布：请先填邮箱密码点「① 登录」');\n            }\n            return;\n        }\n        var tk = (cp.match(\/name=\"csrf_token\" value=\"([0-9a-f]+)\"\/) || [])[1] || '';\n        if (!tk) { java.toast('❌ 未取得CSRF令牌，请稍后再试'); return; }\n        if (!zsSessionValid()) { java.toast('❌ 登录已失效，请重新点「① 登录」'); return; }\n        var res = zsPost('\/request\/create.php', { csrf_token: tk, book_name: nm, description: ds });\n        if (res.indexOf('GOEDGE_WAF') >= 0) {\n            java.toast('❌ 触发WAF人机验证，请先用浏览器打开网站过一次验证');\n            return;\n        }\n        var cid = res.match(\/canonical\" href=\"https?:\\\/\\\/[^\\\/]+\\\/request\\\/(\\d+)\\.html\"\/);\n        if (res.indexOf('发布成功') >= 0 || (cid && res.indexOf('request-book-name') >= 0)) {\n            java.longToast('✅ 发布成功' + (cid ? ('：求书帖 #' + cid[1] + '《' + nm + '》') : '')\n                + '\\n可在发现页「🙋 我的求书」查看。'\n                + '\\n注意：站点不提供删除功能，帖子会长期公开。');\n        } else {\n            java.toast('❌ 发布失败：' + (zsFlashMsg(res) || '请确认已登录且描述不少于10字'));\n        }\n    } catch (e3) {\n        java.toast('❌ 发布异常：' + e3.message);\n    }\n}\nfunction openMyRequests(){\n    java.toast('🙋 我的求书：回到书源「发现」页，点最后一个分类「🙋 我的求书」即可');\n}\nfunction checkLogin(){\n    java.toast('⏳ 正在检查登录状态…');\n    var h = zsHomeHtml();\n    if (!h) { java.toast('❌ 无法访问网站，请检查网络'); return; }\n    if (h.indexOf('GOEDGE_WAF') >= 0) { java.toast('❌ 触发WAF人机验证，请稍后重试'); return; }\n    if (zsLogged(h)) {\n        var m = h.match(\/user-name\">([^<]+)<\/);\n        var n = h.match(\/user-title[^>]*>([^<]*)<\/);\n        java.toast('✅ 已登录：' + (m ? m[1] : '未知用户') + (n ? '（' + n[1].trim() + '）' : '') + '　可发布\/回复求书帖');\n    } else {\n        java.toast('⚠️ 未登录（浏览找书无需登录，发帖\/回复才需要）');\n    }\n}\nfunction logout(){\n    try {\n        try { source.removeLoginInfo(); } catch(e0) {}\n        cookie.removeCookie('https:\/\/www.zhaoshu.la\/');\n        try { source.removeLoginHeader(); } catch(e1) {}\n        var still = zsLogged(zsHomeHtml());\n        java.toast(still ? '⚠️ 已清除本站Cookie，但站点仍判定为登录中，重启阅读后生效'\n                         : '🚪 已退出登录（本站Cookie已清除）');\n    } catch (e) { java.toast('❌ 退出失败：' + e.message); }\n}\nfunction showHelp(){\n    var t = '【找书啦 使用说明】' + String.fromCharCode(10)\n          + '1. 发现页：最新已解决 \/ 最新未解决 \/ 全部求书 \/ 我的求书' + String.fromCharCode(10)\n          + '2. 搜索框输入书名，匹配的是求书帖标题与描述' + String.fromCharCode(10)\n          + '3. 点书名进详情页，书友回复里带网址即为找到的书源' + String.fromCharCode(10)\n          + '4. 详情页简介是网页渲染的，直接点橙色「📖 打开这本书」按钮即可调起该书详情页' + String.fromCharCode(10)\n          + '5. 目录里每条网址也会生成「🔗 一键开书」章节，作为按钮之外的双保险' + String.fromCharCode(10)\n          + '6. 发布求书：先点「① 登录」，再填「书名」「描述」两点，点「④ 发布求书帖」' + String.fromCharCode(10)\n          + '   书名字数 2~200，描述至少 10 字；站点无删除功能，请谨慎发布' + String.fromCharCode(10)\n          + '7. 发布后点「发现 → 🙋 我的求书」查看自己的帖子（未登录时该页为空）' + String.fromCharCode(10)\n          + '8. 浏览找书无需登录；只有发帖\/回复才需要登录' + String.fromCharCode(10)\n          + '9. 本站必须使用手机UA，电脑UA会触发GoEdge WAF人机验证';\n    try { java.longToast(t); } catch (e) { try { java.toast(t); } catch (e2) { java.copyText(t); } }\n}","respondTime":180000,"ruleBookInfo":{"author":"@js:(function(){var d=(result&&typeof result.select==='function')?result:Packages.org.jsoup.Jsoup.parse(String(result));var e=d.select('div.detail-user-name a').first();return e?e.text().trim():'';})()","intro":"@js:(function(){var Jsoup=Packages.org.jsoup.Jsoup;var d=(result&&typeof result.select==='function')?result:Jsoup.parse(String(result));var SOH=String.fromCharCode(1);function esc(s){return String(s).replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;').replace(\/\"\/g,'&quot;');}function T(el){if(!el)return '';var s=String(el.html()).replace(\/<br\\s*\\\/?>\/gi,SOH);var ps=String(Jsoup.parseBodyFragment(s).text()).split(SOH);for(var i=0;i<ps.length;i++)ps[i]=ps[i].trim();return ps.join('<br>');}function host(u){var m=String(u).match(\/^https?:\\\/\\\/([^\\\/]+)\/i);return m?m[1].replace(\/^www\\.\/,''):String(u).substring(0,26);}var v='';try{v=String(source.getVariable()||'').trim();}catch(e){v='';}var OPT=v?',{\"origin\":\"'+v+'\"}':'';function deep(u){return 'legado:\/\/import\/addToBookshelf?src='+encodeURIComponent(String(u)+OPT);}var h1=d.select('h1.request-book-name').first();var title='';if(h1){var c=h1.clone(),bs=c.select('span.badge');for(var y=0;y<bs.size();y++)bs.get(y).remove();title=String(c.text()).replace(\/^[\\s📖]+\/,'').trim();}var bd=d.select('h1.request-book-name span.badge').first();var us=d.select('div.detail-user-name a').first();var mt=d.select('div.detail-user-meta').first();var rs=d.select('div.reply-item');var urls=[],seen={};for(var a=0;a<rs.size();a++){var ls=rs.get(a).select('a[href]');for(var b=0;b<ls.size();b++){var hu=String(ls.get(b).attr('href'));if(hu.indexOf('http')!==0||hu.indexOf('zhaoshu.la')>=0||seen[hu]){continue;}seen[hu]=1;var au=rs.get(a).select('div.reply-user-name-row a').first();urls.push({u:hu,f:au?String(au.text()).trim():'书友',ac:rs.get(a).hasClass('accepted')?1:0});}}urls.sort(function(x,y){return y.ac-x.ac;});var H='<useweb><html><head><meta charset=\"utf-8\">';H+='<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">';H+='<style>body{margin:0;padding:10px 12px 14px;background:#f5f6f8;color:#1c1c1e;font-family:sans-serif;font-size:14.5px;line-height:1.6}';H+='.hd{font-size:17px;font-weight:700;margin:0 0 4px}.mt{color:#6b7280;font-size:12.5px;margin:0 0 10px}';H+='.cd{background:#fff;border-radius:9px;padding:9px 11px;margin:0 0 9px}.cd b{color:#ff9900;font-size:12.5px;display:block;margin-bottom:3px}';H+='.tip{background:#fff7e6;border:1px solid #ffd591;border-radius:9px;padding:8px 11px;margin:0 0 9px;color:#874d00;font-size:13px}';H+='a.bt{display:block;background:#ff9900;color:#fff;border-radius:9px;padding:10px 12px;margin:0 0 8px;text-decoration:none;font-size:15px;font-weight:700}';H+='a.bt:active{background:#e67e00}a.bt .ok{float:right;font-weight:400;font-size:12.5px}';H+='.uu{font-size:11.5px;color:#6b7280;word-break:break-all;margin:0 0 9px;padding:0 2px}.rp{border-left:3px solid #ff9900;padding-left:8px;margin:0 0 9px}';H+='.rh{font-size:12.5px;color:#374151}.no{background:#eef0f3;border-radius:9px;padding:12px;text-align:center;color:#6b7280}';H+='<\/style><\/head><body>';H+='<div class=\"hd\">'+esc(title)+'<\/div>';H+='<div class=\"mt\">'+esc(bd?String(bd.text()).trim():'')+' · 求书人 '+esc(us?String(us.text()).trim():'匿名')+' · '+esc(mt?String(mt.text()).trim():'')+' · 共 '+rs.size()+' 条回复<\/div>';H+='<div class=\"cd\"><b>求书描述<\/b>'+(T(d.select('div.detail-description').first())||'（发布者未填写）')+'<\/div>';if(urls.length){H+='<div class=\"tip\">👇 点下面的按钮，阅读会直接打开这本书的详情页（需已装能匹配该书源网址的书源）<\/div>';for(var k=0;k<urls.length;k++){var it=urls[k];H+='<a class=\"bt\" href=\"'+esc(deep(it.u))+'\">📖 打开这本书 · '+esc(host(it.u))+(it.ac?'<span class=\"ok\">✅已采纳<\/span>':'')+'<\/a>';H+='<div class=\"uu\">'+(k+1)+'. '+esc(it.u)+'　（来自 '+esc(it.f)+'，长按可复制）<\/div>';} }else{H+='<div class=\"no\">这条求书帖的回复里还没有书源网址<\/div>';}H+='<div class=\"cd\"><b>全部回复 '+rs.size()+' 条<\/b>';for(var q=0;q<rs.size();q++){var r=rs.get(q);var ru=r.select('div.reply-user-name-row a').first();H+='<div class=\"rp\"><div class=\"rh\">💬 回复'+(q+1)+' · '+esc(ru?String(ru.text()).trim():'书友')+(r.hasClass('accepted')?' · ✅已采纳':'')+'<\/div>'+(T(r.select('div.reply-text').first())||'（空）')+'<\/div>';}H+='<\/div>';if(v)H+='<div class=\"mt\">已指定书源：'+esc(v)+'<\/div>';H+='<\/body><\/html><\/useweb>';return H;})()","kind":"@js:(function(){var d=(result&&typeof result.select==='function')?result:Packages.org.jsoup.Jsoup.parse(String(result));var a=[],b=d.select('h1.request-book-name span.badge').first(),c=d.select('div.reply-section h2 span.count').first(),m=d.select('div.detail-user-meta').first();if(b)a.push(b.text().trim());if(c)a.push('回复'+String(c.text()).replace(\/[()（）]\/g,'')+'条');if(m)a.push(m.text().trim());return a.join(' · ');})()","name":"@js:(function(){var d=(result&&typeof result.select==='function')?result:Packages.org.jsoup.Jsoup.parse(String(result));var e=d.select('h1.request-book-name').first();if(!e)return '';return (function(){var c=e.clone(),bs=c.select('span.badge');for(var z=0;z<bs.size();z++)bs.get(z).remove();return String(c.text());})().replace(\/^[\\s📖]+\/,'').trim();})()"},"ruleContent":{"content":"@js:(function(){var Jsoup=Packages.org.jsoup.Jsoup;var d=(result&&typeof result.select==='function')?result:Jsoup.parse(String(result));var NL=String.fromCharCode(10),SEP='──────────────────────',SOH=String.fromCharCode(1);function T(el){if(!el)return '';var s=String(el.html()).replace(\/<br\\s*\\\/?>\/gi,SOH);return (function(){var ps=String(Jsoup.parseBodyFragment(s).text()).split(SOH);for(var q0=0;q0<ps.length;q0++)ps[q0]=ps[q0].trim();return ps.join(NL);})().trim();}function LK(el){var a=[],ls=el.select('a[href]');for(var i=0;i<ls.size();i++){var h=ls.get(i).attr('href');if(h.indexOf('http')===0)a.push(h);}return a;}var rid=String(baseUrl||'').replace(\/^[\\s\\S]*#reply-\/,'');var h1=d.select('h1.request-book-name').first();var title=h1?(function(){var c=h1.clone(),bs=c.select('span.badge');for(var z=0;z<bs.size();z++)bs.get(z).remove();return String(c.text());})().replace(\/^[\\s📖]+\/,'').trim():'';var bd=d.select('h1.request-book-name span.badge').first();var us=d.select('div.detail-user-name a').first();var mt=d.select('div.detail-user-meta').first();if(rid.indexOf('open-')===0){var zraw='';try{zraw=decodeURIComponent(rid.substring(5));}catch(e9){zraw=rid.substring(5);}var zvv='';try{zvv=String(source.getVariable()||'').trim();}catch(e10){zvv='';}var zoo=zvv?',{\"origin\":\"'+zvv+'\"}':'';var zok='';try{java.openUrl('legado:\/\/import\/addToBookshelf?src='+encodeURIComponent(zraw+zoo));zok='✅ 已调起阅读，正在打开该书详情页';}catch(e11){zok='⚠️ 调起失败：'+e11.message;}var zbb='🔗 一键开书'+NL+NL+zraw+NL+NL+zok+NL;if(zvv)zbb=zbb+NL+'（已指定书源：'+zvv+'）'+NL;zbb=zbb+NL+'也可直接在书籍详情页的简介里点「📖 打开这本书」按钮。';return zbb;}var rs=d.select('div.reply-item');var head='📖《'+title+'》'+NL+'🔖 '+(bd?bd.text().trim():'')+'　👤 求书人：'+(us?us.text().trim():'匿名')+'　🕐 '+(mt?mt.text().trim():'')+NL+'💬 共 '+rs.size()+' 条回复';var TIP=NL+SEP+NL+'💡 返回书籍详情页，简介里就有可点击的「📖 打开这本书」按钮；'+NL+'   目录里的「🔗 一键开书」章节同样可直接调起阅读打开该书。';if(rid==='intro'||rid===''){var out=head+NL+SEP+NL+'【求书描述】'+NL+(T(d.select('div.detail-description').first())||'（发布者未填写描述）')+NL+SEP+NL+'【全部回复】'+NL;var urls=[];for(var i=0;i<rs.size();i++){var r=rs.get(i);var u=r.select('div.reply-user-name-row a').first();var acc=r.hasClass('accepted')?'✅已采纳':'未采纳';out+=NL+'💬 回复'+(i+1)+'｜'+(u?u.text().trim():'书友')+'（'+acc+'）'+NL+(T(r.select('div.reply-text').first())||'（空）')+NL;var ls=LK(r);for(var j=0;j<ls.length;j++){out+='　🔗 '+ls[j]+NL;urls.push(ls[j]);}}if(urls.length){out+=NL+SEP+NL+'【🔗 书友找到的书源地址 共'+urls.length+'条】'+NL;for(var k=0;k<urls.length;k++)out+=(k+1)+'. '+urls[k]+NL;}else out+=NL+'（回复中暂未发现外部书源网址）';return out+TIP;}var target=null,idx=0;for(var n=0;n<rs.size();n++){var bb=rs.get(n).select('button[data-type=reply]').first();var idd=bb?bb.attr('data-id'):('n'+(n+1));if(String(idd)===rid){target=rs.get(n);idx=n+1;break;}}if(!target&&rs.size()>0){var pi=parseInt(rid,10);if(pi>0&&pi<=rs.size()){target=rs.get(pi-1);idx=pi;}else{target=rs.get(0);idx=1;}}if(!target)return head+NL+SEP+NL+'（该求书帖暂无回复内容）'+TIP;var u2=target.select('div.reply-user-name-row a').first();var ttl=target.select('div.reply-user-name-row span.user-title').first();var adm=target.select('span.admin-badge').first();var ft=target.select('div.reply-footer span').first();var lk=target.select('span.like-count').first();var out=head+NL+SEP+NL;out+='💬 回复 '+idx+'｜'+(u2?u2.text().trim():'书友');if(ttl)out+='（'+ttl.text().trim()+(adm?'·'+adm.text().trim():'')+'）';out+=NL;var info=[];if(ft)info.push('🕐 '+ft.text().trim());if(lk)info.push('❤️ '+lk.text().trim()+' 赞');if(target.hasClass('accepted'))info.push('✅ 已被采纳');if(info.length)out+=info.join('　')+NL;out+=SEP+NL+(T(target.select('div.reply-text').first())||'（空）')+NL;var ls2=LK(target);if(ls2.length){out+=NL+SEP+NL+'【🔗 本条回复中的书源地址】'+NL;for(var q=0;q<ls2.length;q++)out+=(q+1)+'. '+ls2[q]+NL;}return out+TIP;})()"},"ruleExplore":{"author":"@js:(function(){var e=result.select('div.request-user-name a').first();if(e){var t=String(e.text()).trim();if(t)return t;}return '我';})()","bookList":"class.request-item","bookUrl":"@js:(function(){var e=result.select('h2.request-book-name a').first();return e?e.attr('href'):'';})()","intro":"@js:(function(){var p=result.select('p.request-description').first(),b=result.select('span.badge').first();var t=p?p.text().trim():'',s=b?b.text().trim():'',tip='';if(s.indexOf('已解决')>=0)tip='  ➜ 点击书名进详情页，简介里有可直接点击的开书按钮';else if(s.indexOf('未解决')>=0)tip='  ➜ 点击书名进详情页查看求书线索';return (t||'（发布者未填写补充描述）')+tip;})()","kind":"@js:(function(){var a=[],b=result.select('span.badge').first(),m=result.select('div.request-meta').first(),t='';if(b)a.push(String(b.text()).trim());if(m)t=String(m.text()).trim();if(!t){var all=result.select('div.request-actions .action-btn');for(var i=all.size()-1;i>=0;i--){var x=String(all.get(i).text()).replace(\/\\s+\/g,' ').trim();if(\/(刚刚|秒|分钟|小时|天前|天前|周|月|年|\\d{1,2}月\\d{1,2}日)\/.test(x)){t=x;break;}}}if(t)a.push(t);return a.join(' · ');})()","lastChapter":"@js:(function(){var a=result.select('div.request-actions a.action-btn').first();return a?a.text().trim():'';})()","name":"@js:(function(){var e=result.select('h2.request-book-name a').first();return e?e.text().trim():'';})()"},"ruleSearch":{"author":"@js:(function(){var e=result.select('div.request-user-name a').first();if(e){var t=String(e.text()).trim();if(t)return t;}return '我';})()","bookList":"class.request-item","bookUrl":"@js:(function(){var e=result.select('h2.request-book-name a').first();return e?e.attr('href'):'';})()","checkKeyWord":"我的","intro":"@js:(function(){var p=result.select('p.request-description').first(),b=result.select('span.badge').first();var t=p?p.text().trim():'',s=b?b.text().trim():'',tip='';if(s.indexOf('已解决')>=0)tip='  ➜ 点击书名进详情页，简介里有可直接点击的开书按钮';else if(s.indexOf('未解决')>=0)tip='  ➜ 点击书名进详情页查看求书线索';return (t||'（发布者未填写补充描述）')+tip;})()","kind":"@js:(function(){var a=[],b=result.select('span.badge').first(),m=result.select('div.request-meta').first(),t='';if(b)a.push(String(b.text()).trim());if(m)t=String(m.text()).trim();if(!t){var all=result.select('div.request-actions .action-btn');for(var i=all.size()-1;i>=0;i--){var x=String(all.get(i).text()).replace(\/\\s+\/g,' ').trim();if(\/(刚刚|秒|分钟|小时|天前|天前|周|月|年|\\d{1,2}月\\d{1,2}日)\/.test(x)){t=x;break;}}}if(t)a.push(t);return a.join(' · ');})()","lastChapter":"@js:(function(){var a=result.select('div.request-actions a.action-btn').first();return a?a.text().trim():'';})()","name":"@js:(function(){var e=result.select('h2.request-book-name a').first();return e?e.text().trim():'';})()"},"ruleToc":{"chapterList":"@js:(function(){var Jsoup=Packages.org.jsoup.Jsoup;var d=(result&&typeof result.select==='function')?result:Jsoup.parse(String(result));var out=new Packages.org.jsoup.select.Elements();var h1=d.select('h1.request-book-name').first();var title=h1?(function(){var c=h1.clone(),bs=c.select('span.badge');for(var z=0;z<bs.size();z++)bs.get(z).remove();return String(c.text());})().replace(\/^[\\s📖]+\/,'').trim():'求书原帖';var box=Jsoup.parseBodyFragment('<div class=\"zs-intro\" data-rid=\"intro\" data-no=\"0\"><\/div>').body().child(0);box.text('📋 求书原帖｜'+title);out.add(box);var rs=d.select('div.reply-item');for(var i=0;i<rs.size();i++){var r=rs.get(i);var b=r.select('button[data-type=reply]').first();r.attr('data-rid',b?b.attr('data-id'):('n'+(i+1)));r.attr('data-no',String(i+1));out.add(r);var gl=r.select('a[href]');var got={};for(var j=0;j<gl.size();j++){var hu=String(gl.get(j).attr('href'));if(hu.indexOf('http')!==0||hu.indexOf('zhaoshu.la')>=0||got[hu]){continue;}got[hu]=1;var op=Jsoup.parseBodyFragment('<div class=\"zs-open\"><\/div>').body().child(0);op.attr('data-rid','open-'+encodeURIComponent(hu));op.attr('data-no',String(i+1));var zh=hu.substring(hu.indexOf('\/\/')+2).split('\/')[0].replace(\/^www\\.\/,'');op.text('🔗 一键开书 · 回复'+(i+1)+' · '+zh);out.add(op);}}return out;})()","chapterName":"@js:(function(){var e=result;if(e.hasClass('zs-intro')||e.hasClass('zs-open'))return e.text();var no=e.attr('data-no');var u=e.select('div.reply-user-name-row a').first();var nm=u?u.text().trim():'书友';var t=e.select('div.reply-text').first();var raw=String(t?t.text():'');var lk=raw.indexOf('http')>=0?' 🔗':'';var tx=raw.replace(\/https?:\\\/\\\/\\S+\/g,'').replace(\/\\s+\/g,' ').trim();var ac=e.hasClass('accepted')?' ✅':'';var br=tx.length>22?tx.substring(0,22)+'…':tx;return '💬 回复'+no+'｜'+nm+lk+ac+(br?'：'+br:'');})()","chapterUrl":"@js:(function(){var b=baseUrl||'';if(b.indexOf('http')!==0){b=(book&&book.bookUrl)?book.bookUrl:'';}return b+'#reply-'+result.attr('data-rid');})()"},"searchUrl":"https:\/\/www.zhaoshu.la\/search\/{{java.encodeURI(key)}}\/all\/{{page>1?'page\/'+page:''}}","variableComment":"填书源网址(bookSourceUrl，如 rrssk聚合)可强制指定书源；留空自动匹配。登录界面可①登录\/④发布求书帖\/🙋我的求书","weight":0}]