笔书网手机版
http://m.biqukun.org/
laizhiyu (6509)5天前
忘了谁发的,详情页修复,加了发现规则
{
"bookSourceComment": "笔书网手机版:http:\/\/m.biqukun.org\/\n修复内容:搜索(作者\/分类提取)、详情页(精确提取各字段)、目录分页、正文清洗",
"bookSourceName": "笔书网手机版",
"bookSourceType": 0,
"bookSourceUrl": "http:\/\/m.biqukun.org\/",
"bookUrlPattern": "https?:\/\/m\\.biqukun\\.org\/\\d+\/\\d+\/?",
"customButton": false,
"customOrder": 2,
"enabled": true,
"enabledCookieJar": true,
"enabledExplore": true,
"eventListener": false,
"exploreUrl": "[\n {\n \"title\": \"分类\",\n \"url\": \"\",\n \"style\": {\n \"layout_flexGrow\": 0,\n \"layout_flexBasisPercent\": 1\n }\n },\n {\n \"title\": \"玄幻\",\n \"url\": \"\/sort\/1_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"修真\",\n \"url\": \"\/sort\/2_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"都市\",\n \"url\": \"\/sort\/3_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"穿越\",\n \"url\": \"\/sort\/4_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"网游\",\n \"url\": \"\/sort\/5_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"科幻\",\n \"url\": \"\/sort\/6_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"全本\",\n \"url\": \"\/full\/{{page}}\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"排行榜\",\n \"url\": \"\",\n \"style\": {\n \"layout_flexGrow\": 0,\n \"layout_flexBasisPercent\": 1\n }\n },\n {\n \"title\": \"总点击榜\",\n \"url\": \"\/top\/allvisit_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"月点击榜\",\n \"url\": \"\/top\/monthvisit_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"周点击榜\",\n \"url\": \"\/top\/weekvisit_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"日点击榜\",\n \"url\": \"\/top\/dayvisit_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"总推荐榜\",\n \"url\": \"\/top\/allvote_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"总收藏榜\",\n \"url\": \"\/top\/goodnum_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"最新入库\",\n \"url\": \"\/top\/postdate_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"最近更新\",\n \"url\": \"\/top\/lastupdate_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n },\n {\n \"title\": \"字数排行\",\n \"url\": \"\/top\/size_{{page}}\/\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.29\n }\n }\n]",
"header": "{\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 12) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0 Mobile Safari\/537.36\", \"Accept-Language\": \"zh-CN,zh;q=0.9\"}",
"lastUpdateTime": "1783601353849",
"respondTime": 180000,
"ruleBookInfo": {
"author": "text.作者@text##.*作者[::]\\s*##",
"coverUrl": ".block_img2 img@src",
"intro": "div.intro_info@text",
"kind": "text.分类@text##.*分类[::]\\s*##",
"lastChapter": "text.最新:@text##.*最新[::]\\s*##",
"name": "class.block_txt2@tag.h2@text"
},
"ruleContent": {
"content": "<js>\nvar html = String(result);\nvar doc = Packages.org.jsoup.Jsoup.parse(html);\nvar nr = doc.selectFirst('article#nr');\nvar lines = [];\nif (nr) {\n var rawHtml = String(nr.html());\n rawHtml = rawHtml.replace(\/<br\\s*\\\/?>\/gi, '\\n');\n var parts = rawHtml.split('\\n');\n for (var i = 0; i < parts.length; i++) {\n var line = parts[i].replace(\/<[^>]+>\/g, '').replace(\/ \/g, ' ').replace(\/\\u00a0\/g, ' ').trim();\n if (line) {\n if (\/最新网址|m\\.biqukun|本章未完.*继续阅读\/.test(line)) continue;\n lines.push(line);\n }\n }\n if (lines.length > 0 && \/^第\\d+章\/.test(lines[0])) {\n lines.shift();\n }\n}\nlines.join('\\n');\n<\/js>",
"nextContentUrl": "text.下一页@href"
},
"ruleExplore": {
"author": ".bk-author@text",
"bookList": "<js>\nvar html = String(result);\nvar doc = Packages.org.jsoup.Jsoup.parse(html);\nvar uls = doc.select('ul.xbk');\nvar sb = '<html><body><ul>';\nfor (var i = 0; i < uls.size(); i++) {\n var ul = uls.get(i);\n var tjxs = ul.selectFirst('li.tjxs');\n if (!tjxs) continue;\n var nameA = tjxs.selectFirst('.xsm a');\n if (!nameA) continue;\n var name = String(nameA.text());\n var url = String(nameA.attr('href'));\n var spans = tjxs.select('span');\n var author = '';\n var intro = '';\n if (spans.size() >= 2) author = String(spans.get(1).text()).replace(\/.*作者[::]\\s*\/, '');\n if (spans.size() >= 3) intro = String(spans.get(2).text()).trim();\n var tjimg = ul.selectFirst('li.tjimg img');\n var cover = tjimg ? String(tjimg.attr('src')) : '';\n sb += '<li>';\n sb += '<div class=\"bk-name\"><a href=\"' + url + '\">' + name + '<\/a><\/div>';\n sb += '<div class=\"bk-author\">' + author + '<\/div>';\n sb += '<div class=\"bk-intro\">' + intro + '<\/div>';\n sb += '<div class=\"bk-cover\"><img src=\"' + cover + '\"><\/div>';\n sb += '<\/li>';\n}\nsb += '<\/ul><\/body><\/html>';\nsb;\n<\/js>\nul li",
"bookUrl": ".bk-name a@href",
"coverUrl": ".bk-cover img@src",
"intro": ".bk-intro@text",
"name": ".bk-name a@text"
},
"ruleSearch": {
"author": ".bk-author@text",
"bookList": "<js>\nvar html = String(result);\nvar doc = Packages.org.jsoup.Jsoup.parse(html);\nvar lis = doc.select('ul.fk li');\nvar sb = '<html><body><ul>';\nfor (var i = 0; i < lis.size(); i++) {\n var li = lis.get(i);\n var a = li.selectFirst('a.blue');\n if (!a) continue;\n var name = String(a.text());\n var url = String(a.attr('href'));\n var fullText = String(li.text());\n var author = '';\n var slashIdx = fullText.indexOf('\/');\n if (slashIdx >= 0) {\n author = fullText.substring(slashIdx + 1).trim();\n }\n var kind = '';\n var bracketMatch = fullText.match(\/\\[(.+?)\\]\/);\n if (bracketMatch) {\n kind = bracketMatch[1];\n }\n sb += '<li>';\n sb += '<div class=\"bk-name\"><a href=\"' + url + '\">' + name + '<\/a><\/div>';\n sb += '<div class=\"bk-author\">' + author + '<\/div>';\n sb += '<div class=\"bk-kind\">' + kind + '<\/div>';\n sb += '<\/li>';\n}\nsb += '<\/ul><\/body><\/html>';\nsb;\n<\/js>\nul li",
"bookUrl": ".bk-name a@href",
"kind": ".bk-kind@text",
"name": ".bk-name a@text"
},
"ruleToc": {
"chapterList": "ul.chapter li a",
"chapterName": "a@text",
"chapterUrl": "a@href",
"nextTocUrl": "text.下一页@href"
},
"searchUrl": "http:\/\/m.biqukun.org\/search.php?s=4532499176958073452&submit=&type=articlename&searchkey={{key}}",
"weight": 0
}