古代小说-gudaibook1-v0308
https://www.gudaibook1.com/
lindongjiang (1001)2026/03/08 18:02
暂无介绍说明
网络导入
{
"sourceName": "古代小说-gudaibook1-v0308",
"sourceUrl": "https://www.gudaibook1.com/",
"sourceType": "text",
"enable": true,
"weight": 9999,
"miniAppVersion": "1.0.0",
"lastModifyTime": "1772962585",
"httpHeaders": {
"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",
"Referer": "https://www.gudaibook1.com/"
},
"searchBook": {
"actionID": "searchBook",
"parserID": "DOM",
"host": "https://www.gudaibook1.com/",
"validConfig": "{\"maxPage\":1}",
"responseFormatType": "html",
"requestInfo": "@js:\nvar kw = String(params && params.keyWord ? params.keyWord : '').trim();\nreturn {\n 'url': config.host + 'home/search',\n 'POST': true,\n 'httpParams': {\n 'action': 'search',\n 'q': kw\n },\n 'httpHeaders': config.httpHeaders\n};",
"list": "//div[@id='sitebox']/dl",
"bookName": "//dd/h3/a/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"detailUrl": "//dd/h3/a/@href",
"url": "//dd/h3/a/@href",
"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;",
"author": "//dd[contains(@class,'book_other')][1]/span[1]//text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"cat": "//dd[contains(@class,'book_other')][1]/span[3]/a/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"status": "//dd[contains(@class,'book_other')][1]/span[2]/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"desc": "//dd[contains(@class,'book_des')]||@js:\nvar s = String(result || '');\ns = s.replace(/<[^>]+>/g, ' ');\ns = s.replace(/\\s+/g, ' ').trim();\ns = s.replace(/^简介[::]?\\s*/, '');\ns = s.replace(/\\[详细\\]$/g, '');\nreturn s.trim();",
"lastChapterTitle": "//dd[contains(@class,'book_other')][2]/a/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"updateTime": "//dd/h3/span[contains(@class,'uptime')]/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"moreKeys": {
"maxPage": 1,
"removeHtmlKeys": [
"bookName",
"author",
"cat",
"status",
"desc",
"lastChapterTitle",
"updateTime"
]
}
},
"bookWorld": {
"分类": {
"actionID": "bookWorld",
"parserID": "DOM",
"host": "https://www.gudaibook1.com/",
"validConfig": "{\"maxPage\":1}",
"responseFormatType": "html",
"requestInfo": "@js:\nvar slug = 'xuanhuan';\nif(params && params.filters && params.filters.category) slug = String(params.filters.category);\nreturn {'url': config.host + slug, 'httpHeaders': config.httpHeaders};",
"list": "//div[@id='sitebox']/dl",
"bookName": "//dd/h3/a/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"detailUrl": "//dd/h3/a/@href",
"url": "//dd/h3/a/@href",
"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;",
"author": "//dd[contains(@class,'book_other')][1]/span[1]//text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"cat": "//dd[contains(@class,'book_other')][1]/span[3]/a/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"status": "//dd[contains(@class,'book_other')][1]/span[2]/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"desc": "//dd[contains(@class,'book_des')]||@js:\nvar s = String(result || '');\ns = s.replace(/<[^>]+>/g, ' ');\ns = s.replace(/\\s+/g, ' ').trim();\ns = s.replace(/^简介[::]?\\s*/, '');\ns = s.replace(/\\[详细\\]$/g, '');\nreturn s.trim();",
"lastChapterTitle": "//dd[contains(@class,'book_other')][2]/a/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"updateTime": "//dd/h3/span[contains(@class,'uptime')]/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"moreKeys": {
"_sIndex": 0,
"maxPage": 1,
"removeHtmlKeys": [
"bookName",
"author",
"cat",
"status",
"desc",
"lastChapterTitle",
"updateTime"
],
"requestFilters": [
{
"key": "category",
"items": [
{
"title": "玄幻小说",
"value": "xuanhuan"
},
{
"title": "修真小说",
"value": "xiuzhen"
},
{
"title": "都市小说",
"value": "dushi"
},
{
"title": "历史小说",
"value": "lishi"
},
{
"title": "网游小说",
"value": "wangyou"
},
{
"title": "科幻小说",
"value": "kehuan"
},
{
"title": "女频小说",
"value": "nvpin"
}
]
}
]
}
}
},
"bookDetail": {
"actionID": "bookDetail",
"parserID": "DOM",
"host": "https://www.gudaibook1.com/",
"validConfig": "",
"responseFormatType": "html",
"requestInfo": "@js:\nvar host = String(config.host || 'https://www.gudaibook1.com/');\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};",
"bookName": "(//meta[@property='og:novel:book_name']/@content)[1]||//div[contains(@class,'book-info')]//h1/text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"cover": "(//div[contains(@class,'book-img')]//img/@src)[1]||@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;",
"author": "(//meta[@property='og:novel:author']/@content)[1]||(//div[contains(@class,'book-info')]//p[contains(@class,'book-stats')]/b[contains(.,'作者')]/a/text())[1]||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"cat": "(//meta[@property='og:novel:category']/@content)[1]||(//div[contains(@class,'book-info')]//p[contains(@class,'book-stats')]/b[contains(.,'分类')]/a/text())[1]||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"status": "(//meta[@property='og:novel:status']/@content)[1]||(//div[contains(@class,'book-info')]//p[contains(@class,'book-stats')]/b[contains(.,'状态')]/text())[1]||@js:return String(result || '').replace(/^状态[::]?\\s*/, '').replace(/\\s+/g, ' ').trim();",
"wordCount": "",
"desc": "(//meta[@name='description']/@content)[1]||(//div[contains(@class,'book-intro')]/text()[1])[1]||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"lastChapterTitle": "(//meta[@property='og:novel:latest_chapter_name']/@content)[1]||(//div[contains(@class,'book-intro')]/a/text())[1]||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"updateTime": "(//meta[@property='og:novel:update_time']/@content)[1]||(//div[contains(@class,'book-info')]//p[contains(@class,'book-stats')]/b[contains(.,'更新时间')]/text())[1]||@js:return String(result || '').replace(/^更新时间[::]?\\s*/, '').replace(/\\s+/g, ' ').trim();",
"detailUrl": "@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(params && params.responseUrl) return params.responseUrl;\nif(typeof result === 'string') return result;\nif(result && result.detailUrl) return result.detailUrl;\nif(result && result.url) return result.url;\nreturn '';",
"url": "(//meta[@property='og:novel:read_url']/@content)[1]||(//link[@rel='canonical']/@href)[1]||@js:\nif(params && params.queryInfo){\n if(params.queryInfo.url) return params.queryInfo.url;\n if(params.queryInfo.detailUrl) return params.queryInfo.detailUrl;\n}\nif(params && params.responseUrl) return params.responseUrl;\nreturn '';"
},
"chapterList": {
"actionID": "chapterList",
"parserID": "DOM",
"host": "https://www.gudaibook1.com/",
"validConfig": "",
"responseFormatType": "html",
"requestInfo": "@js:\nvar host = String(config.host || 'https://www.gudaibook1.com/');\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};",
"list": "//div[@id='allchapter']//dl[contains(@class,'chapterlist')]/dd/a",
"title": "//text()||@js:return String(result || '').replace(/\\s+/g, ' ').trim();",
"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;",
"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;",
"moreKeys": {
"removeHtmlKeys": [
"title"
]
}
},
"chapterContent": {
"actionID": "chapterContent",
"parserID": "DOM",
"host": "https://www.gudaibook1.com/",
"validConfig": "{\"maxPage\":10}",
"responseFormatType": "html",
"requestInfo": "@js:\nvar host = String(config.host || 'https://www.gudaibook1.com/');\nfunction absUrl(u, base){\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 var b = String(base || host).trim();\n if(!b) b = host;\n var h = b.indexOf('#');\n if(h >= 0) b = b.substring(0, h);\n var q = b.indexOf('?');\n if(q >= 0) b = b.substring(0, q);\n var p = b.indexOf('://');\n var origin = host;\n if(p >= 0){\n var s = b.indexOf('/', p + 3);\n origin = s >= 0 ? b.substring(0, s) : b;\n }\n if(u.charAt(0) === '/') return origin + u;\n if(b.charAt(b.length - 1) !== '/') {\n var k = b.lastIndexOf('/');\n if(k >= 0) b = b.substring(0, k + 1);\n else b = origin + '/';\n }\n return b + 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;\nu = absUrl(u, params && params.responseUrl ? params.responseUrl : host);\nreturn {'url': u, 'httpHeaders': config.httpHeaders};",
"title": "(//div[@id='BookCon']/h1/text())[1]||@js:return String(result || '').replace(/\\(\\d+\\/\\d+\\)\\s*$/, '').replace(/\\s+/g, ' ').trim();",
"content": "//div[@id='BookText']||@js:\nvar html = String(result || '');\nfunction b64ToBin(input){\n input = String(input || '').replace(/[^A-Za-z0-9\\+\\/=]/g, '');\n if(!input) return '';\n if(typeof atob === 'function'){\n try { return atob(input); } catch(e) {}\n }\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var str = '';\n var i = 0;\n while(i < input.length){\n var e1 = chars.indexOf(input.charAt(i++));\n var e2 = chars.indexOf(input.charAt(i++));\n var e3 = chars.indexOf(input.charAt(i++));\n var e4 = chars.indexOf(input.charAt(i++));\n if(e1 < 0 || e2 < 0) break;\n var c1 = (e1 << 2) | (e2 >> 4);\n str += String.fromCharCode(c1);\n if(e3 >= 0 && e3 !== 64){\n var c2 = ((e2 & 15) << 4) | (e3 >> 2);\n str += String.fromCharCode(c2);\n if(e4 >= 0 && e4 !== 64){\n var c3 = ((e3 & 3) << 6) | e4;\n str += String.fromCharCode(c3);\n }\n }\n }\n return str;\n}\nfunction b64DecodeUtf8(s){\n var bin = b64ToBin(s);\n if(!bin) return '';\n try { return decodeURIComponent(escape(bin)); } catch(e) { return bin; }\n}\nvar reg = /qsbs\\.bb\\(\\s*'([^']+)'\\s*\\)/g;\nvar m;\nvar chunks = [];\nwhile((m = reg.exec(html)) !== null){\n var piece = b64DecodeUtf8(m[1]);\n if(piece) chunks.push(piece);\n}\nvar txt = chunks.length > 0 ? chunks.join('\\n') : html;\ntxt = txt.replace(/<\\/p>\\s*<p>/ig, '\\n');\ntxt = txt.replace(/<p[^>]*>/ig, '');\ntxt = txt.replace(/<br\\s*\\/?\\s*>/ig, '\\n');\ntxt = txt.replace(/<[^>]+>/g, '');\ntxt = txt.replace(/ /ig, ' ');\ntxt = txt.replace(/\\u00a0/g, ' ');\ntxt = txt.replace(/喜欢《[^》]+》[^\\n]*收藏我们网站[^\\n]*/g, '');\ntxt = txt.replace(/本章未完[^\\n]*/g, '');\ntxt = txt.replace(/转码声明[^\\n]*/g, '');\ntxt = txt.replace(/正在进行转码阅读[^\\n]*/g, '');\ntxt = txt.replace(/-->>/g, '');\ntxt = txt.replace(/\\s*\\n\\s*/g, '\\n');\ntxt = txt.replace(/[ \\t]{2,}/g, ' ');\nreturn txt.trim();",
"nextPageUrl": "(//div[@id='BookCon']//div[contains(@class,'link')][1]/a[3]/@href)[1]||@js:\nvar host = String(config.host || 'https://www.gudaibook1.com/');\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 var b = String(base || host).trim();\n if(!b) b = host;\n var h = b.indexOf('#');\n if(h >= 0) b = b.substring(0, h);\n var q = b.indexOf('?');\n if(q >= 0) b = b.substring(0, q);\n var p = b.indexOf('://');\n var origin = host;\n if(p >= 0){\n var s = b.indexOf('/', p + 3);\n origin = s >= 0 ? b.substring(0, s) : b;\n }\n if(u.charAt(0) === '/') return origin + u;\n if(b.charAt(b.length - 1) !== '/') {\n var k = b.lastIndexOf('/');\n if(k >= 0) b = b.substring(0, k + 1);\n else b = origin + '/';\n }\n return b + u;\n}\nfunction parseInfoUrl(u){\n var x = absUrl(u, host);\n if(!x) return null;\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(/\\/info\\/(\\d+)\\/(\\d+)(?:_(\\d+))?\\.html$/i);\n if(!m) return null;\n var page = m[3] ? parseInt(m[3], 10) : 0;\n if(page < 0) page = 0;\n return {'bookId': m[1], 'chapterId': m[2], '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 || '';\nvar cur = parseInfoUrl(curUrl);\nvar nxt = parseInfoUrl(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;",
"moreKeys": {
"maxPage": 10,
"removeHtmlKeys": [
"title",
"content"
]
}
}
}