66书吧-66shuba-v0305(公众号:好用的软件站)

https://66shuba.com/

lindongjiang (1001)5小时前

暂无介绍说明

{
  "chapterContent": {
    "actionID": "chapterContent",
    "validConfig": "",
    "content": "data/content||data/data/content||@js:\nvar t = String(result || '');\nif(!t) return '';\nt = t.replace(/\\r\\n?/g, '\\n');\nt = t.replace(/\\u00a0/g, ' ');\nt = t.replace(/[ \\t]+/g, ' ');\nt = t.replace(/\\n{3,}/g, '\\n\\n');\nreturn t.replace(/^\\s+|\\s+$/g, '');",
    "requestInfo": "@js:\nvar u = '';\nif(params && params.lastResponse && params.lastResponse.nextPageUrl){\n  u = params.lastResponse.nextPageUrl;\n}\nif(!u && params && params.queryInfo){\n  u = params.queryInfo.url || params.queryInfo.detailUrl || '';\n}\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){\n  u = params.responseUrl;\n}\nu = String(u || '').trim();\nif(!u) return {'url':'','httpHeaders':config.httpHeaders};\nif(/^https?:\\/\\/[^\\/]+\\/api\\/novel\\//i.test(u)) return {'url':u,'httpHeaders':config.httpHeaders};\nvar m = u.match(/\\/read\\/(\\d+)\\/(\\d+)/i);\nif(!m){\n  var ma = u.match(/\\/api\\/novel\\/(?:vip-)?chapter\\/(\\d+)\\/(\\d+)/i);\n  if(ma) m = ma;\n}\nif(!m) return {'url':u,'httpHeaders':config.httpHeaders};\nvar bid = m[1];\nvar cid = m[2];\nvar isVip = 0;\nif(params && params.queryInfo && params.queryInfo.vip != null){\n  isVip = parseInt(String(params.queryInfo.vip), 10) || 0;\n}\nvar path = isVip === 1 ? 'api/novel/vip-chapter/' : 'api/novel/chapter/';\nreturn {'url': config.host + path + bid + '/' + cid, 'httpHeaders': config.httpHeaders};",
    "title": "data/chapterName||data/name||@js:\nif(result) return String(result).replace(/\\s+/g,' ').trim();\nif(params && params.queryInfo && params.queryInfo.title) return String(params.queryInfo.title);\nreturn '';",
    "moreKeys": {
      "maxPage": 1,
      "removeHtmlKeys": [
        "title",
        "content"
      ]
    },
    "host": "https://66shuba.com/",
    "responseFormatType": "json",
    "parserID": "DOM",
    "nextPageUrl": ""
  },
  "enable": true,
  "bookDetail": {
    "cat": "data/Data/BaseBookInfo/CategoryName||data/Data/BaseBookInfo/SubCategoryName||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
    "responseFormatType": "json",
    "lastChapterTitle": "data/Data/BaseBookInfo/ChapterInfo/LastUpdateChapterName||data/Data/BaseBookInfo/ChapterInfo/LastVipUpdateChapterName||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
    "url": "data/Data/BaseBookInfo/BookId||@js:\nvar id = String(result || '').replace(/[^0-9]/g, '');\nif(!id){\n  if(params && params.queryInfo && params.queryInfo.url) return params.queryInfo.url;\n  if(params && params.queryInfo && params.queryInfo.detailUrl) return params.queryInfo.detailUrl;\n  return '';\n}\nreturn config.host + 'detail/' + id;",
    "desc": "data/Data/BaseBookInfo/Description||data/Data/Description||data/Description||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
    "host": "https://66shuba.com/",
    "requestInfo": "@js:\nvar v = '';\nif(params && params.queryInfo){\n  v = params.queryInfo.detailUrl || params.queryInfo.url || params.queryInfo.bookId || '';\n}\nif(!v && result){\n  if(typeof result === 'string') v = result;\n  else if(result.detailUrl) v = result.detailUrl;\n  else if(result.url) v = result.url;\n  else if(result.bookId) v = result.bookId;\n}\nif(!v && params && params.responseUrl){\n  v = params.responseUrl;\n}\nv = String(v || '').trim();\nvar id = '';\nvar m = v.match(/detail\\/(\\d+)/i);\nif(m) id = m[1];\nif(!id && /^\\d+$/.test(v)) id = v;\nif(!id){\n  var m2 = v.match(/(\\d{6,})/);\n  if(m2) id = m2[1];\n}\nif(!id) return {'url':'','httpHeaders':config.httpHeaders};\nreturn {'url': config.host + 'api/novel/detail/' + id, 'httpHeaders': config.httpHeaders};",
    "actionID": "bookDetail",
    "detailUrl": "data/Data/BaseBookInfo/BookId||@js:\nvar id = String(result || '').replace(/[^0-9]/g, '');\nif(!id){\n  if(params && params.queryInfo && params.queryInfo.detailUrl) return params.queryInfo.detailUrl;\n  if(params && params.queryInfo && params.queryInfo.url) return params.queryInfo.url;\n  return '';\n}\nreturn config.host + 'detail/' + id;",
    "cover": "data/Data/BaseBookInfo/BookId||@js:\nvar id = String(result || '').replace(/[^0-9]/g, '');\nif(!id) return '';\nreturn 'https://bookcover.yuewen.com/qdbimg/349573/' + id + '/600';",
    "validConfig": "",
    "parserID": "DOM",
    "status": "data/Data/BaseBookInfo/BookStatus||data/Data/BaseBookInfo/ActionStatusString||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
    "updateTime": "data/Data/BaseBookInfo/ChapterInfo/LastChapterUpdateTime||@js:\nvar n = parseInt(String(result || '0'), 10);\nif(!n) return '';\nvar d = new Date(n);\nfunction p(x){ return x < 10 ? '0' + x : '' + x; }\nreturn d.getFullYear() + '-' + p(d.getMonth() + 1) + '-' + p(d.getDate()) + ' ' + p(d.getHours()) + ':' + p(d.getMinutes());"
  },
  "bookWorld": {
    "分类": {
      "cat": "CategoryName||SubCategoryName||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
      "responseFormatType": "json",
      "author": "AuthorName||author||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
      "lastChapterTitle": "LastUpdateChapterName||LastChapterName||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
      "bookName": "BookName||bookName||name||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
      "url": "BookId||bookId||id||@js:\nvar id = String(result || '').replace(/[^0-9]/g, '');\nif(!id) return '';\nreturn config.host + 'detail/' + id;",
      "desc": "Description||desc||description||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
      "host": "https://66shuba.com/",
      "requestInfo": "@js:\nvar kw = '都市';\nif(params && params.filters && params.filters.keyword){\n  kw = String(params.filters.keyword);\n}\nvar page = parseInt(params.pageIndex || 1, 10);\nif(!page || page < 1) page = 1;\nvar url = config.host + 'api/novel/search?keyword=' + encodeURIComponent(kw) + '&page=' + page;\nreturn {'url': url, 'httpHeaders': config.httpHeaders};",
      "actionID": "bookWorld",
      "detailUrl": "BookId||bookId||id||@js:\nvar id = String(result || '').replace(/[^0-9]/g, '');\nif(!id) return '';\nreturn config.host + 'detail/' + id;",
      "cover": "BookCover||BookId||bookId||id||@js:\nvar u = String(result || '').trim();\nif(!u) return '';\nif(/^https?:\\/\\//i.test(u)) return u;\nif(u.indexOf('//') === 0) return 'https:' + u;\nif(/^\\d+$/.test(u)) return 'https://bookcover.yuewen.com/qdbimg/349573/' + u + '/600';\nif(u.charAt(0) === '/') return config.host.replace(/\\/+$/, '') + u;\nreturn u;",
      "validConfig": "",
      "parserID": "DOM",
      "list": "data/Data/CardList||@js:\nvar cards = result || [];\nif(Object.prototype.toString.call(cards) !== '[object Array]') return [];\nvar out = [];\nfor(var i = 0; i < cards.length; i++){\n  var body = (cards[i] && cards[i].Body) ? cards[i].Body : [];\n  if(Object.prototype.toString.call(body) !== '[object Array]') continue;\n  for(var j = 0; j < body.length; j++){\n    var it = body[j] || {};\n    if(parseInt(it.ItemType || 0, 10) !== 0) continue;\n    var d = it.ItemData || {};\n    if(d && (d.BookId || d.bookId || d.id)) out.push(d);\n  }\n}\nreturn out;",
      "moreKeys": {
        "_sIndex": 0,
        "maxPage": 3,
        "pageSize": 20,
        "removeHtmlKeys": [
          "bookName",
          "author",
          "cat",
          "status",
          "lastChapterTitle",
          "desc"
        ],
        "requestFilters": [
          {
            "key": "keyword",
            "items": [
              {
                "title": "都市",
                "value": "都市"
              },
              {
                "title": "玄幻",
                "value": "玄幻"
              },
              {
                "title": "武侠",
                "value": "武侠"
              },
              {
                "title": "科幻",
                "value": "科幻"
              },
              {
                "title": "言情",
                "value": "言情"
              },
              {
                "title": "历史",
                "value": "历史"
              },
              {
                "title": "悬疑",
                "value": "悬疑"
              }
            ]
          }
        ]
      },
      "status": "ActionStatusString||BookStatus||status||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
      "updateTime": ""
    }
  },
  "sourceUrl": "https://66shuba.com/",
  "sourceType": "text",
  "weight": 9999,
  "sourceName": "66书吧-66shuba-v0305(公众号:好用的软件站)",
  "httpHeaders": {
    "Referer": "https://66shuba.com/",
    "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": "1772686329",
  "searchBook": {
    "cat": "CategoryName||SubCategoryName||category||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
    "responseFormatType": "json",
    "author": "AuthorName||author||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
    "lastChapterTitle": "LastUpdateChapterName||LastChapterName||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
    "bookName": "BookName||bookName||name||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
    "url": "BookId||bookId||id||@js:\nvar id = String(result || '').replace(/[^0-9]/g, '');\nif(!id) return '';\nreturn config.host + 'detail/' + id;",
    "desc": "Description||desc||description||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
    "host": "https://66shuba.com/",
    "requestInfo": "@js:\nvar kw = encodeURIComponent(String(params.keyWord || ''));\nvar page = parseInt(params.pageIndex || 1, 10);\nif(!page || page < 1) page = 1;\nvar url = config.host + 'api/novel/search?keyword=' + kw + '&page=' + page;\nreturn {'url': url, 'httpHeaders': config.httpHeaders};",
    "actionID": "searchBook",
    "detailUrl": "BookId||bookId||id||@js:\nvar id = String(result || '').replace(/[^0-9]/g, '');\nif(!id) return '';\nreturn config.host + 'detail/' + id;",
    "cover": "BookCover||BookId||bookId||id||@js:\nvar u = String(result || '').trim();\nif(!u) return '';\nif(/^https?:\\/\\//i.test(u)) return u;\nif(u.indexOf('//') === 0) return 'https:' + u;\nif(/^\\d+$/.test(u)) return 'https://bookcover.yuewen.com/qdbimg/349573/' + u + '/600';\nif(u.charAt(0) === '/') return config.host.replace(/\\/+$/, '') + u;\nreturn u;",
    "validConfig": "",
    "parserID": "DOM",
    "list": "data/Data/CardList||@js:\nvar cards = result || [];\nif(Object.prototype.toString.call(cards) !== '[object Array]') return [];\nvar out = [];\nfor(var i = 0; i < cards.length; i++){\n  var body = (cards[i] && cards[i].Body) ? cards[i].Body : [];\n  if(Object.prototype.toString.call(body) !== '[object Array]') continue;\n  for(var j = 0; j < body.length; j++){\n    var it = body[j] || {};\n    if(parseInt(it.ItemType || 0, 10) !== 0) continue;\n    var d = it.ItemData || {};\n    if(d && (d.BookId || d.bookId || d.id)) out.push(d);\n  }\n}\nreturn out;",
    "moreKeys": {
      "pageSize": 20,
      "maxPage": 5,
      "removeHtmlKeys": [
        "bookName",
        "author",
        "cat",
        "status",
        "lastChapterTitle",
        "desc"
      ]
    },
    "status": "ActionStatusString||BookStatus||status||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
    "updateTime": ""
  },
  "chapterList": {
    "vip": "V||vip||@js:\nvar n = parseInt(String(result || '0'), 10);\nreturn n === 1 ? 1 : 0;",
    "responseFormatType": "json",
    "url": "C||chapterId||id||@js:\nvar cid = String(result || '').replace(/[^0-9]/g, '');\nif(!cid) return '';\nvar v = '';\nif(params && params.queryInfo){\n  v = params.queryInfo.detailUrl || params.queryInfo.url || '';\n}\nv = String(v || '');\nvar m = v.match(/detail\\/(\\d+)/i);\nvar bid = m ? m[1] : '';\nif(!bid){\n  var m2 = v.match(/(\\d{6,})/);\n  if(m2) bid = m2[1];\n}\nif(!bid) return '';\nreturn config.host + 'read/' + bid + '/' + cid;",
    "host": "https://66shuba.com/",
    "requestInfo": "@js:\nvar v = '';\nif(params && params.queryInfo){\n  v = params.queryInfo.detailUrl || params.queryInfo.url || params.queryInfo.bookId || '';\n}\nif(!v && result){\n  if(typeof result === 'string') v = result;\n  else if(result.detailUrl) v = result.detailUrl;\n  else if(result.url) v = result.url;\n  else if(result.bookId) v = result.bookId;\n}\nif(!v && params && params.responseUrl){\n  v = params.responseUrl;\n}\nv = String(v || '').trim();\nvar id = '';\nvar m = v.match(/detail\\/(\\d+)/i);\nif(m) id = m[1];\nif(!id && /^\\d+$/.test(v)) id = v;\nif(!id){\n  var m2 = v.match(/(\\d{6,})/);\n  if(m2) id = m2[1];\n}\nif(!id) return {'url':'','httpHeaders':config.httpHeaders};\nreturn {'url': config.host + 'api/novel/catalog/' + id, 'httpHeaders': config.httpHeaders};",
    "actionID": "chapterList",
    "title": "N||chapterName||name||@js:return String(result || '').replace(/\\s+/g,' ').trim();",
    "detailUrl": "C||chapterId||id||@js:\nvar cid = String(result || '').replace(/[^0-9]/g, '');\nif(!cid) return '';\nvar v = '';\nif(params && params.queryInfo){\n  v = params.queryInfo.detailUrl || params.queryInfo.url || '';\n}\nv = String(v || '');\nvar m = v.match(/detail\\/(\\d+)/i);\nvar bid = m ? m[1] : '';\nif(!bid){\n  var m2 = v.match(/(\\d{6,})/);\n  if(m2) bid = m2[1];\n}\nif(!bid) return '';\nreturn config.host + 'read/' + bid + '/' + cid;",
    "validConfig": "",
    "parserID": "DOM",
    "list": "data/Data/Chapters||data/Chapters||@js:\nvar arr = result || [];\nif(Object.prototype.toString.call(arr) !== '[object Array]') return [];\nvar out = [];\nfor(var i = 0; i < arr.length; i++){\n  var ch = arr[i] || {};\n  var cid = ch.C || ch.chapterId || ch.id || '';\n  var n = parseInt(String(cid), 10);\n  if(!n || n <= 0) continue;\n  out.push(ch);\n}\nreturn out;",
    "moreKeys": {
      "maxPage": 1,
      "removeHtmlKeys": [
        "title",
        "updateTime"
      ]
    },
    "updateTime": "T||updateTime||@js:\nvar n = parseInt(String(result || '0'), 10);\nif(!n) return '';\nvar d = new Date(n);\nfunction p(x){ return x < 10 ? '0' + x : '' + x; }\nreturn d.getFullYear() + '-' + p(d.getMonth() + 1) + '-' + p(d.getDate()) + ' ' + p(d.getHours()) + ':' + p(d.getMinutes());"
  }
}