{
"bookSourceComment": "by天天的鸟蛋蛋 2025\/2\/20\n感谢 提供正文解密 河鹅和 另一个书友圈",
"bookSourceGroup": "韩漫",
"bookSourceName": "韩国漫画",
"bookSourceType": 2,
"bookSourceUrl": "https:\/\/hanmm.org",
"customOrder": 0,
"enabled": true,
"enabledCookieJar": false,
"enabledExplore": true,
"exploreUrl": "",
"jsLib": "function toDataUrl(key) {\n\treturn `data:image\/.jpg#;base64,${this.java.base64Encode(key)},{'type':'jpg'}`\n}\nvar Magua = new JavaImporter();\nMagua.importPackage(\n\tPackages.java.io,\n\tPackages.android.graphics\n);\nwith(Magua) {\n\tfunction decodeImg(picBytes, restoreOrder) {\n\t\tvar img = BitmapFactory.decodeByteArray(picBytes, 0, picBytes.length);\n\t\tvar imageHeight = img.getHeight();\n\t\tvar imageWidth = img.getWidth();\n\t\tvar newImg = Bitmap.createBitmap(imageWidth, imageHeight, Bitmap.Config.ARGB_8888);\n\t\tlet canvas = new Canvas(newImg);\n\t\tconst keys = Object.keys(restoreOrder);\n\t\tconst num = keys.length;\n\t\tlet blockWidth, blockHeight, extraPixels;\n\t\tif (num % 2 === 0) {\n\t\t\tblockWidth = Math.floor(imageWidth \/ num);\n\t\t\textraPixels = imageWidth % num;\n\t\t} else {\n\t\t\tblockHeight = Math.floor(imageHeight \/ num);\n\t\t\textraPixels = imageHeight % num;\n\t\t}\n\t\tconst blocks = [];\n\t\tlet startX = 0;\n\t\tlet startY = 0;\n\n\t\tkeys.forEach((key, index) => {\n\t\t\tconst originalPosition = restoreOrder[key];\n\t\t\tif (originalPosition >= 0 && originalPosition < num) {\n\t\t\t\tif (num % 2 === 0) {\n\t\t\t\t\tconst currentBlockWidth = blockWidth + (originalPosition < extraPixels ? 1 : 0);\n\t\t\t\t\tblocks[originalPosition] = Bitmap.createBitmap(img, startX, 0, currentBlockWidth, imageHeight);\n\t\t\t\t\tstartX += currentBlockWidth;\n\t\t\t\t} else {\n\t\t\t\t\tconst currentBlockHeight = blockHeight + (originalPosition < extraPixels ? 1 : 0);\n\t\t\t\t\tblocks[originalPosition] = Bitmap.createBitmap(img, 0, startY, imageWidth, currentBlockHeight);;\n\t\t\t\t\tstartY += currentBlockHeight;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.java.log(`Invalid originalPosition: ${originalPosition}`);\n\t\t\t}\n\t\t});\n\t\tstartX = 0;\n\t\tstartY = 0;\n\t\tObject.keys(blocks)\n\t\t\t.sort((a, b) => a - b)\n\t\t\t.forEach(key => {\n\t\t\t\tconst block = blocks[key];\n\t\t\t\tif (num % 2 === 0) {\n\t\t\t\t\tconst currentBlockWidth = block.getWidth();\n\t\t\t\t\tcanvas.drawBitmap(block, startX, 0, null);\n\t\t\t\t\tstartX += currentBlockWidth;\n\t\t\t\t} else {\n\t\t\t\t\tconst currentBlockHeight = block.getHeight();\n\t\t\t\t\tcanvas.drawBitmap(block, 0, startY, null);\n\t\t\t\t\tstartY += currentBlockHeight;\n\t\t\t\t}\n\t\t\t});\n\t\tvar newbit = new ByteArrayOutputStream();\n\t\tnewImg.compress(Bitmap.CompressFormat.PNG, 100, newbit);\n\t\treturn newbit.toByteArray()\n\t}\n}",
"lastUpdateTime": "1740029949608",
"respondTime": 180000,
"ruleBookInfo": {
"author": "i > a@text",
"coverUrl": "",
"intro": "标签:{{@@p > span@text##\\s##,}}\n简介:{{@@.intro > p@text}}",
"kind": "p:nth-child(4) > a@text",
"lastChapter": ".to100 > a@text",
"name": "h1@text"
},
"ruleContent": {
"content": "@js:\neval(\"data=\"+src.match(\/data:\\s*(\\{[^\\}]+\\})\/)[1])\nbody=Object.keys(data).map(key => `${key}=${data[key]}`) .join('&');\njava.log(body)\nresult=java.ajax(`https:\/\/hanmm.org\/api\/reader_js.php,{\"body\": \"${body}\",\"method\": \"POST\"}`)\ndata=JSON.parse(result)\nimageList = data.data.image_list\nimageList.sort((a, b) => a.order - b.order)\nimageList.map(img=>{\n\treturn `<img src=\"${toDataUrl(JSON.stringify(img))}\">`\n}).join(\"\\n\")",
"imageDecode": "json=java.bytesToStr(result)\njava.log(json)\nimg=JSON.parse(json)\nresult=java.hexDecodeToByteArray(java.ajax(`${img.pic},{\"type\": \"jpg\",\"headers\": {\"Referer\": \"https:\/\/hanmm.org\/\"}}`))\nif (img.arr==\"\"){\n\tresult\n}else{\tarr=JSON.parse(java.base64Decode(img.arr))\n\tresult=decodeImg(result,arr)\n}\nresult",
"imageStyle": "FULL"
},
"ruleExplore": {},
"ruleSearch": {
"author": "p:nth-child(2) > a@text",
"bookList": ".searchresult:nth-child(n+1)",
"bookUrl": "a.0@href",
"checkKeyWord": "",
"coverUrl": "img@data-original",
"intro": "{{@@p:nth-child(2)@text}}{{@@.searchresult_p@text}}{{@@}}",
"kind": ".img_span span@text##\\\/##,",
"lastChapter": "p:nth-child(4) > a@text",
"name": "h3@text"
},
"ruleToc": {
"chapterList": ".chapter_list ul li a",
"chapterName": "text",
"chapterUrl": "href"
},
"searchUrl": "\/search,{\n \"body\": \"searchkey={{key}}&searchtype=all\",\n \"method\": \"POST\"\n}",
"weight": 0
}