笔下文学-bxwx-v0306(公众号:好用的软件站)
https://www.bxwx.co/
lindongjiang (1001)4小时前
暂无介绍说明
{
"chapterContent": {
"actionID": "chapterContent",
"validConfig": "{\"maxPage\":20}",
"content": "//div[@id='content']/p||@js:\nvar txt = String(result || '');\ntxt = txt.replace(/\\s+/g, ' ').trim();\ntxt = txt.replace(/这章没有结束[^。!?\\n]*[。!?]?/g, '');\ntxt = txt.replace(/小主子[^。!?\\n]*下一页继续阅读[^。!?\\n]*[。!?]?/g, '');\ntxt = txt.replace(/喜欢[^。!?\\n]*请大家收藏[^。!?\\n]*更新速度全网最快。?/g, '');\ntxt = txt.replace(/^(\\s| )+|(\\s| )+$/g, '');\nreturn txt;",
"requestInfo": "@js:\nvar host = String(config.host || 'https://www.bxwx.co/');\nfunction absUrl(u){\n u = String(u || '').trim();\n if(!u) return '';\n if(/^https?:\\/\\//i.test(u)) return u;\n if(u.indexOf('//') === 0) return 'https:' + u;\n if(u.charAt(0) !== '/') u = '/' + u;\n return host.replace(/\\/+$/, '') + u;\n}\nvar u = '';\nif(params && params.lastResponse && params.lastResponse.nextPageUrl) u = params.lastResponse.nextPageUrl;\nif(!u && params && params.queryInfo) u = params.queryInfo.url || params.queryInfo.detailUrl || '';\nif(!u && result){\n if(typeof result === 'string') u = result;\n else if(result.url) u = result.url;\n else if(result.detailUrl) u = result.detailUrl;\n}\nif(!u && params && params.responseUrl) u = params.responseUrl;\nreturn {'url': absUrl(u), 'httpHeaders': config.httpHeaders};",
"title": "//div[contains(@class,'bookname')]/h1/text()||@js:\nvar t = String(result || '').replace(/\\s+/g, ' ').trim();\nt = t.replace(/\\s+\\d+\\s*\\/\\s*\\d+$/, '').trim();\nreturn t;",
"moreKeys": {
"maxPage": 20,
"removeHtmlKeys": [
"title",
"content"
]
},
"host": "https://www.bxwx.co/",
"responseFormatType": "html",
"parserID": "DOM",
"nextPageUrl": "(//a[@id='pager_next']/@href)[1]||@js:\nvar host = String(config.host || 'https://www.bxwx.co/');\nfunction absUrl(u, base){\n u = String(u || '').trim();\n if(!u || /^javascript:/i.test(u) || u === '#') return '';\n if(/^https?:\\/\\//i.test(u)) return u;\n if(u.indexOf('//') === 0) return 'https:' + u;\n if(u.charAt(0) !== '/') u = '/' + u;\n return host.replace(/\\/+$/, '') + u;\n}\nfunction parseReadUrl(u){\n var x = String(u || '').trim();\n if(!x) return null;\n x = absUrl(x, host);\n var h = x.indexOf('#');\n if(h >= 0) x = x.substring(0, h);\n var q = x.indexOf('?');\n if(q >= 0) x = x.substring(0, q);\n var m = x.match(/\\/b\\/(\\d+)\\/(\\d+)(?:_(\\d+))?\\.html$/i);\n if(!m) return null;\n var bookId = m[1];\n var chapterId = m[2];\n var page = m[3] ? parseInt(m[3], 10) : 1;\n if(!bookId || !chapterId || !page || page < 1) return null;\n return {'bookId': bookId, 'chapterId': chapterId, 'page': page};\n}\nvar cand = absUrl(result, params && params.responseUrl ? params.responseUrl : host);\nif(!cand) return '';\nvar curUrl = '';\nif(params && params.responseUrl) curUrl = params.responseUrl;\nif(!curUrl && params && params.queryInfo) curUrl = params.queryInfo.url || params.queryInfo.detailUrl || '';\nif(!curUrl && typeof result === 'string') curUrl = result;\nvar cur = parseReadUrl(curUrl);\nvar nxt = parseReadUrl(cand);\nif(!cur || !nxt) return '';\nif(cur.bookId !== nxt.bookId) return '';\nif(cur.chapterId !== nxt.chapterId) return '';\nif(nxt.page <= cur.page) return '';\nreturn cand;"
},
"enable": true,
"bookDetail": {
"cat": "//meta[@property='og:novel:category']/@content||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"responseFormatType": "html",
"lastChapterTitle": "//meta[@property='og:novel:latest_chapter_name']/@content||//span[contains(@class,'keywords')]/a[1]/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"url": "//meta[@property='og:novel:read_url']/@content||@js:return String(result || '').trim();",
"desc": "//meta[@property='og:description']/@content||//div[@id='bookintro']/p[1]/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"host": "https://www.bxwx.co/",
"requestInfo": "@js:\nvar host = String(config.host || 'https://www.bxwx.co/');\nfunction absUrl(u){\n u = String(u || '').trim();\n if(!u) return '';\n if(/^https?:\\/\\//i.test(u)) return u;\n if(u.indexOf('//') === 0) return 'https:' + u;\n if(u.charAt(0) !== '/') u = '/' + u;\n return host.replace(/\\/+$/, '') + u;\n}\nvar u = '';\nif(params && params.queryInfo){\n u = params.queryInfo.detailUrl || params.queryInfo.url || '';\n}\nif(!u && result){\n if(typeof result === 'string') u = result;\n else if(result.detailUrl) u = result.detailUrl;\n else if(result.url) u = result.url;\n}\nif(!u && params && params.responseUrl) u = params.responseUrl;\nreturn {'url': absUrl(u), 'httpHeaders': config.httpHeaders};",
"actionID": "bookDetail",
"detailUrl": "//meta[@property='og:url']/@content||@js:\nif(params && params.queryInfo){\n if(params.queryInfo.detailUrl) return params.queryInfo.detailUrl;\n if(params.queryInfo.url) return params.queryInfo.url;\n}\nif(typeof result === 'string') return result;\nif(result && result.detailUrl) return result.detailUrl;\nif(result && result.url) return result.url;\nreturn '';",
"cover": "//meta[@property='og:image']/@content||@js:return String(result || '').trim();",
"validConfig": "",
"parserID": "DOM",
"wordCount": "//li[contains(.,'字 数')]/span/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"status": "//meta[@property='og:novel:status']/@content||//li[contains(.,'状 态')]/span/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"updateTime": "//meta[@property='og:novel:update_time']/@content||//span[contains(@class,'uptime')]/text()||@js:return String(result || '').replace(/^.*?更新[::]?/, '').replace(/\\s+/g, ' ').trim();"
},
"bookWorld": {
"分类": {
"cat": "//span[@class='s1']/text()||@js:\nvar t = String(result || '').replace(/\\s+/g, ' ').trim();\nt = t.replace(/[\\[\\]]/g, '').trim();\nreturn t;",
"responseFormatType": "html",
"author": "//span[@class='s4']/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"lastChapterTitle": "//span[@class='s3']/a/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"bookName": "//span[@class='s2']/a/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"url": "//span[@class='s2']/a/@href||@js:\nvar u = String(result || '').trim();\nif(!u) return '';\nif(/^https?:\\/\\//i.test(u)) return u;\nif(u.indexOf('//') === 0) return 'https:' + u;\nif(u.charAt(0) !== '/') u = '/' + u;\nreturn config.host.replace(/\\/+$/, '') + u;",
"desc": "",
"host": "https://www.bxwx.co/",
"requestInfo": "@js:\nvar cid = '1';\nif(params && params.filters && params.filters.category) cid = String(params.filters.category);\nreturn {'url': config.host + 'bsort' + cid + '/', 'httpHeaders': config.httpHeaders};",
"actionID": "bookWorld",
"detailUrl": "//span[@class='s2']/a/@href||@js:\nvar u = String(result || '').trim();\nif(!u) return '';\nif(/^https?:\\/\\//i.test(u)) return u;\nif(u.indexOf('//') === 0) return 'https:' + u;\nif(u.charAt(0) !== '/') u = '/' + u;\nreturn config.host.replace(/\\/+$/, '') + u;",
"cover": "",
"validConfig": "{\"maxPage\":1}",
"parserID": "DOM",
"list": "//div[@id='newscontent']/div[contains(@class,'l')]/ul/li",
"moreKeys": {
"_sIndex": 0,
"maxPage": 1,
"pageSize": 30,
"removeHtmlKeys": [
"bookName",
"author",
"cat",
"lastChapterTitle",
"updateTime"
],
"requestFilters": [
{
"key": "category",
"items": [
{
"title": "玄幻奇幻",
"value": "1"
},
{
"title": "武侠仙侠",
"value": "2"
},
{
"title": "都市生活",
"value": "3"
},
{
"title": "历史军事",
"value": "4"
},
{
"title": "游戏竞技",
"value": "5"
},
{
"title": "科幻未来",
"value": "6"
},
{
"title": "恐怖悬疑",
"value": "7"
},
{
"title": "其他类型",
"value": "8"
},
{
"title": "古代言情",
"value": "9"
},
{
"title": "现代言情",
"value": "10"
},
{
"title": "幻想奇缘",
"value": "11"
},
{
"title": "游戏情缘",
"value": "12"
},
{
"title": "浪漫青春",
"value": "13"
},
{
"title": "言情美文",
"value": "14"
},
{
"title": "科幻灵异",
"value": "15"
},
{
"title": "其他类型2",
"value": "16"
}
]
}
]
},
"status": "",
"updateTime": "//span[@class='s5']/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();"
}
},
"sourceUrl": "https://www.bxwx.co/",
"sourceType": "text",
"weight": 9999,
"sourceName": "笔下文学-bxwx-v0306(公众号:好用的软件站)",
"httpHeaders": {
"Referer": "https://www.bxwx.co/",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
},
"miniAppVersion": "2.53.2",
"lastModifyTime": "1772774119",
"searchBook": {
"cat": "//dd[contains(@class,'book_other')][1]/span[3]/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"responseFormatType": "html",
"author": "//dd[contains(@class,'book_other')][1]/span[1]/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"lastChapterTitle": "//dd[contains(@class,'book_other')][2]/a[1]/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"bookName": "//dd[h3]/h3/a/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"url": "//dd[h3]/h3/a/@href||@js:\nvar u = String(result || '').trim();\nif(!u) return '';\nif(/^https?:\\/\\//i.test(u)) return u;\nif(u.indexOf('//') === 0) return 'https:' + u;\nif(u.charAt(0) !== '/') u = '/' + u;\nreturn config.host.replace(/\\/+$/, '') + u;",
"desc": "//dd[contains(@class,'book_des')][1]/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"host": "https://www.bxwx.co/",
"requestInfo": "@js:\nvar kw = String(params && params.keyWord ? params.keyWord : '');\nreturn {\n 'url': config.host + 'search.html',\n 'POST': true,\n 'httpParams': {\n 'searchtype': 'all',\n '369koolearn': kw\n },\n 'httpHeaders': config.httpHeaders\n};",
"actionID": "searchBook",
"detailUrl": "//dd[h3]/h3/a/@href||@js:\nvar u = String(result || '').trim();\nif(!u) return '';\nif(/^https?:\\/\\//i.test(u)) return u;\nif(u.indexOf('//') === 0) return 'https:' + u;\nif(u.charAt(0) !== '/') u = '/' + u;\nreturn config.host.replace(/\\/+$/, '') + u;",
"cover": "//dt/a/img/@src||@js:\nvar u = String(result || '').trim();\nif(!u) return '';\nif(/^https?:\\/\\//i.test(u)) return u;\nif(u.indexOf('//') === 0) return 'https:' + u;\nif(u.charAt(0) !== '/') u = '/' + u;\nreturn config.host.replace(/\\/+$/, '') + u;",
"validConfig": "{\"maxPage\":1}",
"parserID": "DOM",
"list": "//div[@id='sitembox']/dl",
"wordCount": "//dd[contains(@class,'book_other')][1]/span[4]/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"moreKeys": {
"pageSize": 50,
"maxPage": 1,
"removeHtmlKeys": [
"bookName",
"author",
"status",
"cat",
"wordCount",
"desc",
"lastChapterTitle",
"updateTime"
]
},
"status": "//dd[contains(@class,'book_other')][1]/span[2]/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"updateTime": "//dd[contains(@class,'book_other')][2]/span[1]/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();"
},
"chapterList": {
"responseFormatType": "html",
"url": "//@href||@js:\nvar u = String(result || '').trim();\nif(!u) return '';\nif(/^https?:\\/\\//i.test(u)) return u;\nif(u.indexOf('//') === 0) return 'https:' + u;\nif(u.charAt(0) !== '/') u = '/' + u;\nreturn config.host.replace(/\\/+$/, '') + u;",
"host": "https://www.bxwx.co/",
"requestInfo": "@js:\nvar host = String(config.host || 'https://www.bxwx.co/');\nfunction absUrl(u){\n u = String(u || '').trim();\n if(!u) return '';\n if(/^https?:\\/\\//i.test(u)) return u;\n if(u.indexOf('//') === 0) return 'https:' + u;\n if(u.charAt(0) !== '/') u = '/' + u;\n return host.replace(/\\/+$/, '') + u;\n}\nfunction toDir(u){\n var x = String(u || '').trim();\n if(!x) return '';\n if(x.indexOf('/dir/') >= 0 && /\\.htm(l)?$/i.test(x)) return x;\n var m = x.match(/\\/b\\/(\\d+)\\/(\\d+)\\/?$/i);\n if(m) return host + 'dir/' + m[1] + '/' + m[2] + '.htm';\n m = x.match(/\\/b\\/(\\d+)\\/(\\d+)\\/index\\.html$/i);\n if(m) return host + 'dir/' + m[1] + '/' + m[2] + '.htm';\n return x;\n}\nvar u = '';\nif(params && params.lastResponse && params.lastResponse.nextPageUrl) u = params.lastResponse.nextPageUrl;\nif(!u && params && params.queryInfo) u = params.queryInfo.url || params.queryInfo.detailUrl || '';\nif(!u && result){\n if(typeof result === 'string') u = result;\n else if(result.url) u = result.url;\n else if(result.detailUrl) u = result.detailUrl;\n}\nif(!u && params && params.responseUrl) u = params.responseUrl;\nu = absUrl(u);\nu = toDir(u);\nif(!/^https?:\\/\\//i.test(u)) u = absUrl(u);\nreturn {'url': u, 'httpHeaders': config.httpHeaders};",
"actionID": "chapterList",
"title": "//text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"detailUrl": "//@href||@js:\nvar u = String(result || '').trim();\nif(!u) return '';\nif(/^https?:\\/\\//i.test(u)) return u;\nif(u.indexOf('//') === 0) return 'https:' + u;\nif(u.charAt(0) !== '/') u = '/' + u;\nreturn config.host.replace(/\\/+$/, '') + u;",
"validConfig": "",
"parserID": "DOM",
"list": "//div[@id='list']/dl/dt[b[contains(.,'章节列表')]]/following-sibling::dd/a",
"moreKeys": {
"removeHtmlKeys": [
"title",
"updateTime"
]
},
"updateTime": "//meta[@property='og:novel:update_time']/@content||@js:return String(result || '').trim();"
}
}