奇漫屋(qimanwu)
https://m.qimanwu.app
jianghubailei (2226)3天前
该用户很懒,什么介绍也没有写!
{
"bookSourceGroup": "漫画",
"bookSourceName": "奇漫屋(qimanwu)",
"bookSourceType": 2,
"bookSourceUrl": "https:\/\/m.qimanwu.app",
"customButton": false,
"customOrder": 82,
"enabled": true,
"enabledCookieJar": true,
"enabledExplore": true,
"eventListener": false,
"exploreUrl": "@js:\nfunction qimanwu() {\n let disc = [];\nlet tagHtml = java.ajax(`${source.key}\/custom\/search`);\n let doc = org.jsoup.Jsoup.parse(tagHtml);\n let tags = doc.select(\".groupList li a\");\n Array.from(tags).forEach(a => {\n disc.push({\n title: a.text(),\n url: a.attr(\"href\") +\"\/page\/{{page}}\",\n style: {\n layout_flexGrow: 1,\n layout_flexBasisPercent: 0.45\n }\n });\n });\n \n disc.push({\n title: \"精品漫画\",\n url: \"\/custom\/boutique\",\n style: {layout_flexBasisPercent: 1, layout_flexGrow: 0.45}\n });\n \n disc.push({\n title: \"最近更新\",\n url: \"\/custom\/update\",\n style: {layout_flexBasisPercent: 1, layout_flexGrow: 0.45}\n });\n \n disc.push({\n title: \"热门推荐\",\n url: \"\/custom\/recom\",\n style: {layout_flexBasisPercent: 1, layout_flexGrow: 0.45}\n });\n\n return JSON.stringify(disc);\n}\n\nconst getDate = (time) => \n new Date(time).toLocaleDateString();\n\nconst getTime = (dateStr) => {\n let d;\n try {\n d = new Date(dateStr);\n if (isNaN(d.getTime())) throw new Error('Invalid Date');\n } catch (e) {\n return 0;\n }\n return d.getTime()\n}\n\nlet discovery;\n\ntry {\n let raw = String(source.getVariable()).trim();\n let cache = null;\n if (raw) { try { cache = JSON.parse(raw); } catch (e) {} }\n\n let now = Date.now();\n let sevenDays = 7 * 24 * 60 * 60 * 1000;\n\n let isValid = cache\n && cache.date\n && cache.fx !== undefined\n && (now - getTime(cache.date)) < sevenDays;\n\n if (isValid) {\n discovery = cache.fx;\n } else {\n discovery = qimanwu();\n let dateStr = getDate(now);\n source.setVariable(JSON.stringify({ date: dateStr, fx: discovery }));\n }\n} catch (e) {\n discovery = qimanwu();\n source.setVariable(JSON.stringify({\n date: getDate(now),\n fx: discovery\n }));\n}\n\ndiscovery;",
"header": "{\n \"User-Agent\": \"{{java.getWebViewUA()}}\",\n \"Referer\": \"{{baseUrl}}\",\n \"cookie\": \"{{cookie.getCookie(baseUrl)}}\"\n}",
"homepageModules": "",
"lastUpdateTime": "1788080456512",
"respondTime": 180000,
"ruleBookInfo": {
"author": "p.1@text",
"canReName": "1",
"coverUrl": "img.cover@src@js:\nvar hh = JSON.stringify({\"headers\": {\n \"User-Agent\": java.getWebViewUA(),\n \"Referer\": baseUrl,\n \"cookie\": cookie.getCookie(baseUrl)\n}});\nresult + \",\" + hh",
"init": "@js:\nif(\/很遗憾,该漫画不存在\/.test(result)){\n result = \"<nocomic>很遗憾,该漫画不存在或章节已被删除<\/nocomic>\"\n}\nresult",
"intro": "p.5@text||nocomic@text",
"kind": "p.2@a@text",
"lastChapter": "p.3@text##更新至:",
"name": "p.0@text||nocomic@text"
},
"ruleContent": {
"content": "@js:\n(() => {\n var match = result.match(\/params\\s*=\\s*['\"]([^'\"]+)['\"]\/);\n if (!match) return \"\";\n var params = match[1];\n \n var allBytes = java.base64DecodeToByteArray(params);\n var ivBytes = allBytes.slice(0, 16);\n var ctBytes = allBytes.slice(16);\n var key = \"9S8$vJnU2ANeSRoF\";\n key = java.strToBytes(key);\n var cipher = java.createSymmetricCrypto(\"AES\/CBC\/PKCS5Padding\", key, ivBytes);\n var jsonStr = cipher.decryptStr(ctBytes);\n var {images} = JSON.parse(jsonStr);\n \n var hh = JSON.stringify({\"headers\": {\n \"User-Agent\": java.getWebViewUA(),\n \"Referer\": baseUrl,\n \"cookie\": cookie.getCookie(baseUrl)\n }});\n\n return images.map(x=>`<img src=\"${x+','+hh}\">`).join(\"\");\n})();",
"imageStyle": "FULL"
},
"ruleExplore": {},
"ruleSearch": {
"author": "p.2@text",
"bookList": ".rankList@li",
"bookUrl": "a@href",
"coverUrl": "img.0@src@js:\nvar hh = JSON.stringify({\"headers\": {\n \"User-Agent\": java.getWebViewUA(),\n \"Referer\": baseUrl,\n \"cookie\": cookie.getCookie(baseUrl)\n}});\nresult + \",\" + hh",
"lastChapter": "p.1@text",
"name": "p.0@text"
},
"ruleToc": {
"chapterList": ".chapterList li a",
"chapterName": "text",
"chapterUrl": "href"
},
"searchUrl": "\/search\/{{encodeURIComponent(key)}}\/{{page}}",
"weight": 0
}