{
"bookSourceComment": "coolapk@芜恙",
"bookSourceGroup": "👍 优选",
"bookSourceName": "👍 骑士",
"bookSourceType": 0,
"bookSourceUrl": "http:\/\/www.74qb.com#grid tr!0",
"bookUrlPattern": "http:\/\/www.74qb.com\/book\/\\d+\/",
"customOrder": 0,
"enabled": true,
"enabledExplore": false,
"exploreUrl": "",
"header": "",
"lastUpdateTime": 0,
"loginUrl": "",
"ruleBookInfo": {
"author": "author",
"coverUrl": "cover",
"init": "<js> \nvar J = org.jsoup.Jsoup.parse(result);\nvar o = selector => String(J.select(selector).text()) ;\nvar og = selector => String(J.select('[property=\"og:' + selector + '\"]').attr('content'));\nvar book = {\n\tname: og('novel:book_name').replace(\/(全文|小说|免费阅读|最新章节).*|[((].*[))]\/g, ''),\n\tauthor: og('novel:author'),\n\tkind: og('novel:category') + ',' + og('novel:status').replace(\/中|已\/, ''),\n wordCount: parseInt(o('#count span:eq(4)').replace(\/,|字\/g,'')\/10000) + '万',\n\tlatest: og('novel:latest_chapter_name').replace(\/^(正文|VIP章节|最新章节)?(\\s+|_)|[\\((【].*[求更谢乐发推].*\/g, '') + ' • ' + og('novel:update_time').replace(\/(T|\\s).*\/, ' ').replace(\/\\\/\/g, '-'),\n\tintro: ' 最近更新:' + og('novel:update_time').replace(\/(T|\\s).*\/, ' ').replace(\/\\\/\/g, '-') + '\\n' + o('#bookintro').replace(\/.*(观看小说|简介)[::]|各位书友.*\/g, '').replace(\/\\s+\/g, '\\n'),\n\tcover: og('image'),\n\turl: og('novel:read_url'),\n};\nbook;\n<\/js>",
"intro": "intro",
"kind": "kind",
"lastChapter": "latest",
"name": "name",
"tocUrl": "url",
"wordCount": "wordCount"
},
"ruleContent": {
"content": "#content@html##(本章完)",
"nextContentUrl": "",
"sourceRegex": "",
"webJs": ""
},
"ruleExplore": {
"author": "",
"bookList": "",
"bookUrl": "",
"coverUrl": "",
"intro": "",
"kind": "",
"lastChapter": "",
"name": "",
"wordCount": ""
},
"ruleSearch": {
"author": "author",
"bookList": ".grid tr!0\n<js>\nresult.toArray().slice(0, 3).map(el => {\n\tvar url = String(el.select('a:eq(0)').attr('href')).replace(\/^\\\/\/, baseUrl.match(\/(.+?\\\/\\\/[^\\\/]+\\\/)\/)[1]);\n\tvar J = org.jsoup.Jsoup.parse(java.ajax(url));\n\tvar o = selector => String(J.select(selector).text());\n\tvar og = selector => String(J.select('[property=\"og:' + selector + '\"]').attr('content'));\n\treturn {\n\t\tname: og('novel:book_name').replace(\/(全文|小说|免费阅读|最新章节).*|[((].*[))]\/g, ''),\n\t\tauthor: og('novel:author'),\n\t\tkind: og('novel:category') + ',' + og('novel:status').replace(\/中|已\/, ''),\n wordCount: parseInt(o('#count span:eq(4)').replace(\/,|字\/g,'')\/10000) + '万',\n\t\tlatest: og('novel:latest_chapter_name').replace(\/^(正文|VIP章节|最新章节)?(\\s+|_)|[\\((【].*[求更谢乐发推].*\/g, '') + ' • ' + og('novel:update_time').replace(\/(T|\\s).*\/, ' ').replace(\/\\\/\/g, '-'),\n\t\tintro: og('description').replace(\/.*(观看小说|简介)[::]|各位书友.*\/g, '').replace(\/\\s+\/g, ''),\n\t\tcover: og('image'),\n\t\turl: url,\n\t};\n}); \n<\/js>",
"bookUrl": "url",
"coverUrl": "cover",
"intro": "intro",
"kind": "kind",
"lastChapter": "latest",
"name": "name",
"wordCount": "wordCount"
},
"ruleToc": {
"chapterList": ".chapterNum li a",
"chapterName": "text##^(正文|VIP章节|最新章节)?(\\s+|_)|[\\((【].*[求更谢乐发推].*",
"chapterUrl": "href",
"isVip": "",
"nextTocUrl": "",
"updateTime": ""
},
"searchUrl": "\/search?key={{key}}",
"weight": 0
}