笔趣阁
https://www.glimpsewave.com
rga (8486)2024/11/25
//11.25 by河鹅和
{
"bookSourceComment": "\/\/11.25 by河鹅和",
"bookSourceGroup": "写源by河鹅和",
"bookSourceName": "笔趣阁",
"bookSourceType": 0,
"bookSourceUrl": "https:\/\/www.glimpsewave.com",
"bookUrlPattern": "https:\/\/www.glimpsewave.com\/book\/\\d+\/",
"customOrder": 0,
"enabled": true,
"enabledCookieJar": true,
"enabledExplore": true,
"exploreUrl": "",
"lastUpdateTime": "1732508573101",
"respondTime": 180000,
"ruleBookInfo": {
"author": "[property=\"og:novel:author\"]@content",
"coverUrl": "[property=\"og:image\"]@content",
"intro": "[property=\"og:description\"]@content",
"kind": "[property~=category|status|update_time]@content",
"lastChapter": "[property~=las?test_chapter_name]@content",
"name": "[property=\"og:novel:book_name\"]@content"
},
"ruleContent": {
"content": "#htmlContent@textNodes\n@js:\nvar base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+\/=';\nfunction customAtob(encodedStr) {\n var cleanedStr = String(encodedStr).replace(\/=+$\/, '');\n var decodedStr = '';\n for (var i = 0, acc = 0, charCode, idx = 0; charCode = cleanedStr.charAt(idx++); ~charCode && (acc = i % 4 ? acc * 64 + charCode : charCode, i++ % 4) ? decodedStr += String.fromCharCode(0xff & acc >> (-2 * i & 6)) : 0) {\n charCode = base64Chars.indexOf(charCode);\n }\n return decodedStr;\n}\n\nfunction unicodeArrayToString(unicodeArray) {\n var resultStr = '';\n for (var i = 0; i < unicodeArray.length; i++) {\n resultStr += String.fromCharCode(unicodeArray[i]);\n }\n return decodeURIComponent(escape(resultStr));\n}\n\nfunction reverseArray(array) {\n return array.slice().reverse();\n}\n\nfunction xorDecode(base64Str1, base64Str2) {\n var decodedArray1 = customAtob(base64Str2).split('').map((char)=>{ return char.charCodeAt(0); });\n var reversedArray1 = reverseArray(decodedArray1);\n var decodedArray2 = customAtob(base64Str1).split('').map((char)=>{ return char.charCodeAt(0); });\n var xorArray = decodedArray2.map((value, index)=>{ return value ^ reversedArray1[index % reversedArray1.length]; });\n return unicodeArrayToString(xorArray);\n}\nmatch=src.match(\/await _.+?\\('(.+?)','(.+?)'\\)\/)\nif (match) {result=result+xorDecode(match[1],match[2])}\nelse {result=result}\nresult",
"nextContentUrl": "##location\\.href\\=\\'(\\d+\\_\\d+)\\.idx\\'##$1.html###",
"replaceRegex": "##{{source.key}}|笔趣阁|{{chapter.title}}.*",
"title": ""
},
"ruleExplore": {},
"ruleReview": {},
"ruleSearch": {
"author": ".author@text",
"bookList": "#search_result li",
"bookUrl": "a@href",
"coverUrl": "a@href##(\\d+)##$1###\n@js:\nbid=parseInt(result)\naid=parseInt(bid\/1000)\nresult=`\/image\/${aid}\/${bid}\/${bid}s.jpg`",
"kind": ".type@text&&.status@text",
"name": ".name@text"
},
"ruleToc": {
"chapterList": "#detail_chapter .box_content.1@a",
"chapterName": "text",
"chapterUrl": "href",
"nextTocUrl": "##i<=([^;]+)##$1###\n@js:\npageSum=parseInt(result)\nburl=String(book.tocUrl)\nresult=Array.from({length:pageSum-1},(_,i)=>`${burl}${i+2}.html`)\nresult"
},
"searchUrl": "\/search\/{{key}}.html",
"weight": 0
}