笔下文学-bxwx-v0306(公众号:好用的软件站)

https://www.bxwx.co/

lindongjiang (1001)6小时前

暂无介绍说明

网络导入
{
  "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();"
  }
}