霹雳书屋
https://www.pilibook.net/
alicecoco (8651)08/01 03:10
- 2026.07.31 登录和发现用了select控件,请使用有select的阅读 有cf盾,一直过不了可以尝试切换网络,或过段时间再试,如果一直跳转到内部浏览器,可以尝试等待自动退出或点击右上角✔ 发现、正文加载没东西请再试几次 当前网站失效可以在登录页切换站点
{
"bookSourceComment": " - 2026.07.31\n登录和发现用了select控件,请使用有select的阅读\n有cf盾,一直过不了可以尝试切换网络,或过段时间再试,如果一直跳转到内部浏览器,可以尝试等待自动退出或点击右上角✔\n发现、正文加载没东西请再试几次\n当前网站失效可以在登录页切换站点",
"bookSourceName": "霹雳书屋",
"bookSourceType": 0,
"bookSourceUrl": "https:\/\/www.pilibook.net\/",
"customButton": false,
"customOrder": 1,
"enabled": true,
"enabledCookieJar": true,
"enabledExplore": true,
"eventListener": false,
"exploreUrl": "@js:\nconst currentUrl = getCurrentUrl();\nconst topListRoute = 'top\/list';\n\nconst combineUrl = (cateIndex, dataIndex) => {\n if (cateIndex == 0 && dataIndex == 0) {\n return ``;\n } else {\n const cateId = cateIndex == 7 ? 8 : cateIndex;\n return `${currentUrl}${topListRoute}\/${cateId}\/${dataIndex}\/{{page}}.html`;\n }\n};\n\nconst combineLable = (cateLable, dataLable) => {\n if (cateLable == \"不选择\" && dataLable == \"不选择\") {\n return \"请至少选择一项\";\n } else {\n let lable = cateLable + \"·\" + dataLable;\n return lable.replace(\/·?不选择·?\/g, \"\");\n }\n}\n\nlet currentCateIndex = String(source.get(\"cateRankIndex\")) || 0;\nlet currentDataIndex = String(source.get(\"dataRankIndex\")) || 1;\nconst currentCateLabel = ranks.category[currentCateIndex];\nconst currentDataLabel = ranks.data[currentDataIndex];\nconst fullLabel = combineLable(currentCateLabel, currentDataLabel)\nconst fullUrl = combineUrl(currentCateIndex, currentDataIndex);\n\nlet ui = [{\n title: '分类榜',\n type: 'select',\n action: 'onSelectorChanged(String(infoMap[\"分类榜\"]),\"category\")',\n chars: ranks.category,\n default: ranks.category[currentCateIndex],\n style: {\n \"layout_flexGrow\": 0,\n \"layout_flexShrink\": 1,\n \"layout_alignSelf\": \"auto\",\n \"layout_flexBasisPercent\": 0.45,\n \"layout_wrapBefore\": false\n }\n },\n {\n title: '数据榜',\n type: 'select',\n action: 'onSelectorChanged(String(infoMap[\"数据榜\"]),\"data\")',\n chars: ranks.data,\n default: ranks.data[currentDataIndex],\n style: {\n \"layout_flexGrow\": 0,\n \"layout_flexShrink\": 1,\n \"layout_alignSelf\": \"auto\",\n \"layout_flexBasisPercent\": 0.45,\n \"layout_wrapBefore\": false\n }\n },\n {\n title: fullLabel,\n url: fullUrl,\n style: {\n \"layout_flexGrow\": 0,\n \"layout_flexShrink\": 1,\n \"layout_alignSelf\": \"auto\",\n \"layout_flexBasisPercent\": 1,\n \"layout_wrapBefore\": false\n }\n }\n];\nJSON.stringify(ui);",
"header": "{\n \"User-Agent\": \"Mozilla\/5.0 (Linux; Android 14; V2243A Build\/TP1A.220905.001) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/125.0.0.0 Mobile Safari\/537.36\"\n}",
"jsLib": "const bookSites = {\n '主域名': 'https:\/\/www.pilishuwu.com\/',\n '镜像线路1': 'https:\/\/www.pilibook.net\/',\n '镜像线路2': 'https:\/\/www.pili45.com\/'\n};\n\nconst ranks = {\n data: [\n '不选择', '最新入库', '全部点击', '本年点击', '本月点击', '本周点击', '本日点击',\n '全部收藏', '本年收藏', '本月收藏', '本周收藏', '本日收藏',\n '全部推荐', '本年推荐', '本月推荐', '本周推荐', '本日推荐',\n '评论数量', '点赞数量', '讨厌数量', '评分分数', '全本字数', '章节数量'\n ],\n category: [\n '不选择',\n '男频小说', '女频小说', '电子图书', '无cp小说',\n '纯爱小说', '百合小说', '轻小说'\n ]\n};\n\nconst urlToName = Object.fromEntries(\n Object.entries(bookSites).map(([name, url]) => [url, name])\n);\n\nfunction getUrlByName(name) {\n return bookSites[name] || null;\n}\n\nfunction getNameByUrl(url) {\n return urlToName[url] || null;\n}\n\nfunction getCurrentUrl() {\n const { source } = this;\n return String(source.get(\"url\")) || bookSites['镜像线路1'];\n}\n\nfunction onSelectorChanged(selectedLabel, type) {\n const { source, java } = this;\n \n const list = type === \"data\" ? ranks.data : ranks.category;\n const saveKey = type === \"data\" ? \"dataRankIndex\" : \"cateRankIndex\";\n const selectedIndex = list.indexOf(selectedLabel);\n source.put(saveKey, selectedIndex);\n\n java.refreshExplore();\n}",
"lastUpdateTime": "1785525036771",
"loginUi": "@js:\nconst siteNames = Object.keys(bookSites);\nconst currentUrl = getCurrentUrl();\nconst currentSiteName = getNameByUrl(String(currentUrl));\n\nconst mainUI = [{\n name: '当前站点',\n type: 'select',\n chars: siteNames,\n action: 'setCurrentUrl()',\n default: currentSiteName,\n style: {\n layout_flexBasisPercent: 1\n }\n },\n {\n name: '网站',\n type: 'button',\n action: 'toSite()',\n style: {\n layout_flexBasisPercent: 0.45\n }\n },\n {\n name: '公告',\n type: 'button',\n action: 'toNotice()',\n style: {\n layout_flexBasisPercent: 0.45\n }\n }\n];\n\nJSON.stringify(mainUI);",
"loginUrl": "function login() {}\n\nfunction setCurrentUrl() {\n let currentSiteName = result.get(\"当前站点\");\n const targetUrl = bookSites[currentSiteName];\n source.put(\"url\", targetUrl);\n}\n\nfunction toSite() {\n const currentUrl = getCurrentUrl();\n java.startBrowser(currentUrl,\"霹雳书屋\");\n}\n\nfunction toNotice() {\n java.startBrowser(\"https:\/\/www.pilixiaoshuo.com\/\", \"公告\");\n}",
"respondTime": 180000,
"ruleBookInfo": {
"author": ".x-detail__book--info@p.1@text##作者:",
"coverUrl": "img.0@src",
"intro": " \n🕐 {{@@.x-catalog__update@text}}\n{{'\\nㅤ\\n'}}\n❤️ {{@@.x-detail__ticket--item.0@text}} ✖️ {{@@.x-detail__ticket--item.1@text}} 📕{{@@.x-detail__book--info@p.3@text}}\n{{'\\nㅤ\\n'}}\n{{@@.x-detail__ticket--box@span@html || .x-detail__intro--content@html}}",
"kind": ".x-detail__book--info@p.2@text&&.x-detail__book--info@p.4@text&&.x-detail__intro--tags@a@text##分类:|进程:",
"lastChapter": ".x-catalog__new@text## .*",
"name": ".x-detail__book--info@p.0@text",
"tocUrl": ".x-detail__operator--item@a@href"
},
"ruleContent": {
"content": "<js>\nlet\t header = {\n\t\t\t\t\"User-Agent\": \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/130.0.0.0 Safari\/537.36\",\n \"Accept\": \"text\/html,application\/xhtml+xml,application\/xml;q=0.9,*\/*;q=0.8\",\n \"Accept-Language\": \"zh-CN,zh;q=0.9\"\n}\n\nlet url = baseUrl + \",\" + JSON.stringify({\"headers\":header});\njava.ajax(url);\n<\/js>\n.read-content@html",
"nextContentUrl": ".read-load-next@a.-1@href"
},
"ruleExplore": {
"author": ".x-info__author@span@text",
"bookList": "<js>\nif(result.match(\/Just a moment...|�\/)){\n\tjava.startBrowserAwait(baseUrl,\"验证\");\n\tresult=java.ajax(baseUrl);\n}result;\n<\/js>\n.rank-list-wrap@class.rank-ul@li ||.x-book",
"bookUrl": "a@href",
"coverUrl": "img@data-src",
"intro": ".x-info__intro@text",
"kind": ".x-info__author@text## .*",
"name": "a@text || class.x-info__name@text"
},
"ruleSearch": {
"author": ".book-status@text",
"bookList": "<js>\nif(result.match(\/Just a moment...|�\/)){\n\tjava.startBrowserAwait(baseUrl,\"验证\");\n\tresult=java.ajax(baseUrl);\n}result;\n<\/js>\n.x-book",
"bookUrl": "a@href",
"coverUrl": "img@src",
"intro": ".x-book__intro@text",
"kind": ".book-fenlei@text",
"name": ".x-book__info--name@text"
},
"ruleToc": {
"chapterList": "ol@li!0",
"chapterName": "span@text",
"chapterUrl": "a@href"
},
"searchUrl": "{{getCurrentUrl()}}search\/0\/{{key}}\/{{page}}.html",
"weight": 0
}