动漫之家

https://nnv3api.dmzj1.com

采集机器人 (2)2023/04/01

数据采集
二维码导入
{
    "bookSourceGroup": "轻小说📗",
    "bookSourceName": "动漫之家",
    "bookSourceUrl": "https:\/\/nnv3api.dmzj1.com",
    "enable": true,
    "httpUserAgent": "Mozilla\/5.0 (X11; Linux x86_64; rv:60.0) Gecko\/20100101 Firefox\/60.0",
    "loginUrl": "",
    "ruleBookAuthor": "$.authors@js:java.put('author',result)",
    "ruleBookContent": "<js>\nif((\/\\.google\\.cn\/).test(baseUrl))\n  {result=decodeURIComponent(baseUrl.replace(\/^.+[&?]text=\/, ''))}\n  else\n{result=String(java.getString('html')).replace(\/(?:\\n\\s*,\\s*)+\\n*?$\/, '');\n\n}\nresult = String(result).replace(\/<img\\s+[^>]+>\/ig, '<p>〖插图,App暂不支持〗<\/p>');\n<\/js>",
    "ruleBookContentReplace": "##^[^\\n]*\\n",
    "ruleBookInfoInit": "@put:{ID:$.id}",
    "ruleBookKind": "$.types",
    "ruleBookLastChapter": "$.last_update_chapter_name",
    "ruleBookName": "$.name@js:java.put('sm',String(result))",
    "ruleBookUrlPattern": "",
    "ruleChapterList": "+<js>\n\/\/二级目录,Json\nvar jdoc = JSON.parse(result);\nvar chUrl = 'https:\/\/nnv3api.dmzj1.com\/novel\/download\/@get:{ID}_';\nvar volUrl = 'https:\/\/translate.google.cn\/#view=home&op=translate&sl=zh-CN&tl=en&text=';\nvar list = [];\n\/\/显示卷名\nvar opts = {\n  showVolName: false\n};\n\nsm=java.get('sm');\nauthor=java.get('author');\n\nfunction format(title){\n  return title.trim().replace(\/^(\\d+)(?![\\s\\d卷部章节回.])\/, '$1 ').replace(\/\\s+\/g, \"\\x20\\x20\");\n}\n\njdoc.forEach((vol,idx) => {\n  var chs = vol.chapters.map(ch => ({\n    text:(opts.showVolName ? '🍥[' + format(vol.volume_name) + ']🍥' : (ch.IsVip === '1' ? '💰' : '').padStart(3, \"\\u2000\")) +format(ch.chapter_name),\n    href: chUrl+vol.volume_id+'_'+ch.chapter_id+'.txt',\n    name: format(ch.chapter_name)\n  }));\n\n  var volInfo =author+\":\\n\"+sm+'\\\\'+format(vol.volume_name) + '\\n目录(' + chs.length + \"):\\n\";\n  volInfo += chs.slice(0,30).map(v => v.name).join(\"\\n\");\n  volInfo += chs.length > 30 ? \"\\n……\" : '';\n  list.push({\n    text: '♦[' + format(vol.volume_name) + ']♦',\n    href: volUrl + encodeURIComponent(volInfo)\n  });\n  list = list.concat(chs);\n});\n\nresult = list;\n<\/js>",
    "ruleChapterName": "text",
    "ruleChapterUrl": "\/novel\/chapter\/{$.id}.json",
    "ruleChapterUrlNext": "",
    "ruleContentUrl": "href",
    "ruleContentUrlNext": "",
    "ruleCoverUrl": "",
    "ruleFindAuthor": "$.authors",
    "ruleFindCoverUrl": "$.cover",
    "ruleFindIntroduce": "$.last_update_time\n<js>\ndate= new Date(parseInt(result)*1000).toLocaleString();\n<\/js>##G.*\\s",
    "ruleFindKind": "{$.types},",
    "ruleFindLastChapter": "{$.last_update_volume_name}  \n{$.last_update_chapter_name}",
    "ruleFindList": "$.[*]",
    "ruleFindName": "$.name",
    "ruleFindNoteUrl": "\/novel\/{$.id}.json",
    "ruleFindUrl": "最新::\/novel\/recentUpdate\/{{searchPage-1}}.json\n人气::\/novel\/rank\/0\/0\/{{searchPage-1}}.json\n订阅::\/novel\/rank\/1\/0\/{{searchPage-1}}.json\n全部::\/novel\/0\/0\/1\/{{searchPage-1}}.json\n恐怖::\/novel\/2\/0\/1\/{{searchPage-1}}.json\n科幻::\/novel\/4\/0\/1\/{{searchPage-1}}.json\n侦探::\/novel\/6\/0\/1\/{{searchPage-1}}.json\n爱情::\/novel\/8\/0\/1\/{{searchPage-1}}.json\n校园::\/novel\/12\/0\/1\/{{searchPage-1}}.json\n神鬼::\/novel\/14\/0\/1\/{{searchPage-1}}.json\n魔法::\/novel\/16\/0\/1\/{{searchPage-1}}.json\n冒险::\/novel\/20\/0\/1\/{{searchPage-1}}.json\n其他::\/novel\/25\/0\/1\/{{searchPage-1}}.json\n搞笑::\/novel\/40\/0\/1\/{{searchPage-1}}.json\n格斗::\/novel\/47\/0\/1\/{{searchPage-1}}.json\n机战::\/novel\/1264\/0\/1\/{{searchPage-1}}.json\n仙侠::\/novel\/1265\/0\/1\/{{searchPage-1}}.json\n都市::\/novel\/1266\/0\/1\/{{searchPage-1}}.json\n历史::\/novel\/1267\/0\/1\/{{searchPage-1}}.json\n战争::\/novel\/1268\/0\/1\/{{searchPage-1}}.json\n治愈::\/novel\/1269\/0\/1\/{{searchPage-1}}.json\n励志::\/novel\/1270\/0\/1\/{{searchPage-1}}.json\n后宫::\/novel\/1271\/0\/1\/{{searchPage-1}}.json\n百合::\/novel\/1272\/0\/1\/{{searchPage-1}}.json\n纯爱::\/novel\/1273\/0\/1\/{{searchPage-1}}.json\n异界::\/novel\/1274\/0\/1\/{{searchPage-1}}.json\n异能::\/novel\/1275\/0\/1\/{{searchPage-1}}.json\n穿越::\/novel\/1276\/0\/1\/{{searchPage-1}}.json\n奇幻::\/novel\/1321\/0\/1\/{{searchPage-1}}.json",
    "ruleIntroduce": "<br\/>分类:{$.types}<br\/>\n<br\/>{$.introduction}",
    "ruleSearchAuthor": "$.authors",
    "ruleSearchCoverUrl": "$.cover",
    "ruleSearchIntroduce": "",
    "ruleSearchKind": "$.types",
    "ruleSearchLastChapter": "$.last_name",
    "ruleSearchList": "$.[*]\n<js>\nvar opts = {\n  pattern: \/\\\/show\\\/1\\\/([^\\\/]+)\\\/\/,\n  name: '$.title',\n  author: '$.authors'\n};\n\n\/\/删除糢糊匹配的搜索结果,然后按书名长度排序。依赖于baseUrl、result变量。\n\/\/return Array\n\/\/opts Object: 参数,包含以下key:\n\/\/target List<Object>(result): 要过滤列表。\n\/\/pattern RegExp: 匹配searchKey的正则表达式。\n\/\/name String: 书名规则。\n\/\/author String: 作者规则。\n\/\/charset String('UTF-8'): 编码方式。\n\/\/sorting Boolean(true): 是否重新排序。\n\nfunction searchFilter(opts){\n  result = opts.target === undefined ? result : opts.target;\n  opts.charset = opts.charset === undefined ? 'UTF-8' : opts.charset;\n  opts.sorting = opts.sorting === undefined ? true : !!opts.sorting;\n  function getText(ele, rule){\n    java.setContent(ele);\n    return String(java.getString(rule));\n  }\n  try {\n    var kw = (baseUrl.match(opts.pattern) || ['',''])[1];\n    kw = Packages.java.net.URLDecoder.decode(kw, opts.charset);\n    result = result.toArray().filter(e => getText(e, opts.name).includes(kw) || getText(e, opts.author).includes(kw));\n    return opts.sorting ? result.sort((a, b) => getText(a, opts.name).length - getText(b, opts.name).length) : result;\n  } catch(e) {\n    return result;\n  }\n}\n\nsearchFilter(opts);\n<\/js>",
    "ruleSearchName": "$.title",
    "ruleSearchNoteUrl": "$.id@js:\"https:\/\/nnv3api.dmzj1.com:443\/novel\/\"+result+\".json\"",
    "ruleSearchUrl": "\/search\/show\/1\/searchKey\/{{searchPage-1}}.json",
    "serialNumber": 7,
    "weight": 0
}
广告