古代小说-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(/&nbsp;/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"
      ]
    }
  }
}