[{"bookSourceComment":"","bookSourceGroup":"","bookSourceName":"69书吧","bookSourceType":0,"bookSourceUrl":"https:\/\/www.69shuba.com","bookUrlPattern":"https?:\\\/\\\/www\\.69shuba\\.com\\\/book\\\/\\d+\\.htm","customOrder":18,"enabled":true,"enabledCookieJar":true,"enabledExplore":true,"exploreUrl":"@js:\nvar result = [];\nvar push = (title, url, size) => result.push({\n    title: java.t2s(title),\n    url: url && \/_\/.test(url) ? `\/novels\/${url}.htm` : url,\n    style: {\n        layout_flexGrow: 1,\n        layout_flexBasisPercent: size\n    }\n});\n\npush(\"书籍分类\", null, 1);\n\nconst tag = org.jsoup.Jsoup.parse(Ajax(source.key + \"\/novels\/hot\")).select('.listleft li:not([class]) a');\nconst sort = [\n    [\"全部\", \"monthvisit_0_0_1\"],\n    [\"连载\", \"newhot_0_0_1\"],\n    [\"全本\", \"newhot_0_1_1\"],\n    [\"人气\", \"weekvisit_0_0_1\"],\n    [\"推荐\", \"allvote_0_0_1\"],\n    [\"新书\", \"newhot_0_0_1\"]\n];\n\nsort.forEach(([name, pattern]) => {\n    let Url = pattern.replace(\/1$\/, \"{{page}}\");\n    push(`༺ˇ»\\`ʚ  ${name}  ɞ´«ˇ༻`, Url, 1);\n    tag.toArray().forEach((e, i) => push(e.text(), Url.replace(\/^(.+?_)0\/, `$1${i+1}`), 0.25));\n});\n\npush(\"༺ˇ»`ʚ  标签  ɞ´«ˇ༻\", null, 1);\norg.jsoup.Jsoup.parse(Ajax(source.key + \"\/tags\")).select('.tag a').forEach(n => \n    push(n.text(), n.attr('href') + \"{{page}}\/\", 0.2)\n);\n\nJSON.stringify(result);","header":"{\"User-Agent\":\"Mozilla\/5.0 (Linux; Android 9) Mobile Safari\/537.36\"}","jsLib":"var Regex = \/Just a moment|onloadTurnstileCallback\/;\nfunction Ajax(url) {\n     const { java } = this;\n     let result = java.ajax(url);\n     let retryCount = 0;\n     const maxRetries = 3;\n     while (Regex.test(result) && retryCount < maxRetries) {\n      result = java.startBrowserAwait(url, \"验证\").body();\n     }\n     return result;\n}","lastUpdateTime":"1776278821699","loginCheckJs":"let original = result;\nlet url = result.url();\nlet ck = cookie.getCookie(url).split('; ').filter(item => !item.startsWith(\"jieqiVisitTime\")).join('; ');\ncookie.setCookie(url, ck);\nif (result.code() == 403) java.toast('服务器拒绝访问，请检查网络状况！');\nif (Regex.test(original.body())) {\n\t   cookie.removeCookie(url);\n    result = java.startBrowserAwait(url, \"验证\");\n    if (\/onloadTurnstileCallback\/.test(original.body())) {\n    java.initUrl();\n    result = java.getStrResponse(null, null, false);\n    }\n}\nresult;","respondTime":182182,"ruleBookInfo":{"author":"@get:{a}","coverUrl":"@get:{i}","init":"@put:{\"n\":\"[property$=book_name]@content\",\n\"a\":\"[property$=author]@content\",\n\"t\":\"[property~=category|status]@content\",\n\"l\":\"[property$=latest_chapter_name]@content\",\n\"i\":\"[property$=image]@content\",\n\"z\":\".booknav2@p.-2@text\",\n\"o\":\".navtxt p@html\",\n\"g\":\"[property$=update_time]@content\",\n\"m\":\"a[class$=more-btn]@href\"\n}","intro":"@get:{o}##小说关键词：.*","kind":"@get:{t}","lastChapter":"@get:{l}◎@get:{g}","name":"@get:{n}","tocUrl":"@get:{m}","wordCount":"@get:{z}##\\s*\\|.*$"},"ruleContent":{"content":".txtnav@html\n@js:\nif (!String(result).trim()) {\n  result = \"未获取到文本，可能被验证拦截，请刷新正文或手动过盾。\";\n} else {\n  let doc = org.jsoup.Jsoup.parse(String(result));\n  doc.select(\"h1, script, style, #txtright, .txtinfo, .contentadv, .bottom-ad\").remove();\n  result = String(doc.body().html());\n  result = result.replace(\/\\(本章完\\)|\\ue5e5\/g, '');\n}\nresult;","nextContentUrl":"text.下一章@href||[class^=\"page\"]@a.-1@href","title":"h1@text"},"ruleExplore":[],"ruleSearch":{"author":"label.0@text","bookList":"<js>\nif (!String(src).trim()) java.toast(\"搜索被封禁请切换网络或等待\");\nresult;\n<\/js>\n.newbox > ul > li","bookUrl":"a.0@href","coverUrl":"img@data-src","intro":"ol@text","kind":"label!0@text","lastChapter":".zxzj p@ownText","name":"h3@text"},"ruleToc":{"chapterList":"#catalog li\n@js:\nresult.toArray().sort((a, b) => +a.attr('data-num') - +b.attr('data-num')).filter(node => \/(?:第.*?章|番外|楔子|序|尾声|终章|结局)\/.test(String(node.text())));","chapterName":"a@text","chapterUrl":"a@href"},"searchUrl":"\/modules\/article\/search.php,{\n  \"body\": \"searchkey={{key}}&submit=Search\",\n  \"charset\": \"GBK\",\n  \"headers\": {\"Cookie\": \"{{cookie.getCookie(source.key)}}\"},\n  \"method\": \"POST\"\n}","weight":0}]