奇漫屋(mqzjw)
https://www.mqzjw.com
jianghubailei (2226)3天前
该用户很懒,什么介绍也没有写!
{
"bookSourceGroup": "漫画",
"bookSourceName": "奇漫屋(mqzjw)",
"bookSourceType": 2,
"bookSourceUrl": "https:\/\/www.mqzjw.com",
"bookUrlPattern": "https?:\/\/www.mqzjw.com\/book\/\\d+.html",
"customButton": false,
"customOrder": 1,
"enabled": true,
"enabledCookieJar": false,
"enabledExplore": true,
"eventListener": false,
"exploreUrl": "@js:\nconst list = [];\nconst push = function(title, url, size) {\n list.push({\n title: title,\n url: url,\n style: {layout_flexBasisPercent: size}\n });\n};\n\nconst tpl = \"\/index.php\/api\/data\/comic?type%5Btags%5D=$id&type%5Border%5D=hits&type%5Blist%5D=0&type%5Bpay%5D=0&type%5Bfinish%5D=0\";\nconst catUrl = java.toURL(source.key).origin + \"\/category\/\";\nconst doc = org.jsoup.Jsoup.parse(java.ajax(catUrl));\nconst cates = doc.select(\"#cates a\");\nconst tags = [];\ncates.forEach(cat => {\n let title = cat.text().trim()\n let len = title.length();\n if(len === 0 || len > 4) return;\n let href = String(cat.attr(\"href\") || \"\");\n if(!href) return;\n let id = href?.match(\/\\d+$\/)?.[0] || \"\";\n let url = \"\";\n if(title == \"全部\"){\n url = tpl.replace(\/\\?.*\/, \"\") + \"?page={{page}}\";\n url += \",\" + JSON.stringify({headers:{Referer: catUrl}})\n }else{\n url = tpl.replace(\"$id\", id) + \"&page={{page}},\" + JSON.stringify({headers:{Referer: catUrl+\"tags\/\"+id}})\n }\n push(title, url, 0.2)\n})\n\nJSON.stringify(list)",
"header": "{\n\t\"User-Agent\":\"Mozilla\/5.0 (Linux; Android 13; V2148A Build\/TP1A.220624.014; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/128.0.6613.146 Mobile Safari\/537.36\"\n\t}",
"lastUpdateTime": "1788080430020",
"respondTime": 180000,
"ruleBookInfo": {
"author": "h2@ownText",
"canReName": "1",
"coverUrl": "img.0@src",
"init": ".comics-detail",
"intro": ".comics-detail__desc@text",
"kind": ".tag@text&&span:contains(更新时间:)@text##更新时间:",
"lastChapter": "@js:\nlet last = java.getString(\"@@:contains(最新:) > a@text\");\nString(last).trim() || \"抱歉,本小说章节目录不存在\"",
"name": "h1@ownText"
},
"ruleContent": {
"content": "@js:\nvar key = \"TRHvYbpGlNFoOdLaXrKRYgvdGwGfjnJj\";\nvar iv = \"kBKXQIpFYTDOHGLQlRUklPLtNPcBKSve\".slice(0, 16);\nvar cipher = java.createSymmetricCrypto(\"AES\/CBC\/PKCS5Padding\", key, iv);\nvar hh = baseUrl.split(\",\")[1];\nvar maxPageLimit = 10; \/\/ 防止死循环\nvar currentPage = 1;\nvar nextUrl = baseUrl;\nvar allImages = [];\n\nwhile (currentPage <= maxPageLimit) {\n try {\n var resp;\n if (currentPage === 1) {\n resp = result;\n } else {\n resp = java.ajax(nextUrl);\n if (!resp) break;\n }\n var rawData = JSON.parse(resp).data;\n if (!rawData) break;\n var images = JSON.parse(cipher.decryptStr(rawData));\n \n if (!images || images.length == 0) break;\n images.forEach(c => allImages.push(`<img src=\"${c.img},${hh}\">`));\n } catch (e) {\n java.log(`第${currentPage}页处理失败: ${e.toString()}`);\n }\n \n currentPage++;\n nextUrl = nextUrl.replace(\/page=(\\d+)\/, (_, p) => `page=${+p + 1}`);\n}\n\nallImages.join(\"\\n\");",
"imageStyle": "FULL"
},
"ruleExplore": {
"author": "$.author",
"bookList": "$.data",
"bookUrl": "$.url",
"coverUrl": "$.pic",
"intro": "$.content",
"kind": "$.tags&&$.addtime",
"lastChapter": "章节数:{{$.chapter_nums}}",
"name": "$.name"
},
"ruleSearch": {
"bookList": ".list a",
"bookUrl": "a@href",
"coverUrl": ".field-img@img@src",
"kind": ".txt-inner[0]@text&&.txt-inner[1]@text",
"lastChapter": ".txt-inner[2]@text##更新至",
"name": ".title@text"
},
"ruleToc": {
"chapterList": "#chapter-items a",
"chapterName": "div@ownText",
"chapterUrl": "href@js:\nlet ref = java.toURL(baseUrl).origin + result;\nlet cid = String(result).match(\/\\d+$\/)?.[0];\nlet api = `\/index.php\/api\/data\/pic?cid=${cid}&page=1`;\nlet hh = JSON.stringify({headers:{Referer: ref}});\napi + \",\" + hh"
},
"searchUrl": "\/index.php\/search?key={{key}}",
"weight": 0
}