💰 次元姬

https://api.hwnovel.com

采集机器人 (2)2023/04/06

该用户很懒,什么介绍也没有写!
二维码导入
{
    "bookSourceUrl": "https:\/\/api.hwnovel.com",
    "bookSourceType": "0",
    "bookSourceName": "💰 次元姬",
    "bookSourceGroup": "💰 正版",
    "bookSourceComment": "使用:先输入手机号然后点√发送验证码,后输入验证码登陆\n注意:若发现出现错误,请重新打开关闭发现页\n支持:验证码登陆|购买|签到|发现|书架",
    "loginUrl": "<js>\nvar username = String(source.getLoginInfoMap().get(\"手机号\"))\nvar passwd = String(source.getLoginInfoMap().get(\"验证码\"))\n\/\/ 工具类\nvar md5Key = 'NpkTYvpvhJjEog8Y051gQDHmReY54z5t3F0zSd9QEFuxWGqfC8g8Y4GPuabq0KPdxArlji4dSnnHCARHnkqYBLu7iIw55ibTo18'\nvar desKey = Packages.java.lang.String('ZUreQN0Epkpxh3pooWOgixjTfPwumCTYWzYTQ7SMgDnqFLQ1s9tqpVhkGf02we89moQwhSQ07DVzc3LWupRgbVvm29aYeY7zyFN').getBytes('UTF_8')\nvar des = Packages.cn.hutool.crypto.symmetric.DES(\"ECB\",\"PKCS5Padding\", desKey)\nif(!username) throw new Error(\"请输入手机号\")\n\/\/ 发送验证码\nif(username != 0 && passwd == 0) {\n  let timestamp = Date.now()\n  let requestId = java.randomUUID().replace('-','')\n  let param = des.encryptBase64(JSON.stringify({phone: username,smsType: \"1\",timestamp: timestamp}))\n  let sign = String(java.digestHex(java.base64Encode(`param=${param}&requestId=${requestId}&timestamp=${timestamp}&key=${md5Key}`),'md5')).toUpperCase()\n  let data = JSON.stringify({\n    param: param,\n    requestId: requestId,\n    sign: sign,\n    timestamp: timestamp\n  })\n  let op = JSON.stringify({ method: \"POST\", body: data })\n  let res = JSON.parse(java.ajax(`https:\/\/api.hwnovel.com\/api\/ciyuanji\/client\/login\/getPhoneCode,${op}`))\n  if(res.code != '200') throw new Error(res.msg)\n  java.toast(\"验证码已发送,请输入验证码登录\")\n}\n\/\/ 验证码登录\nif(username != 0 && passwd != 0) {\n  let timestamp = Date.now()\n  let requestId = java.randomUUID().replace('-','')\n  let param = des.encryptBase64(JSON.stringify({phone: username,phoneCode: passwd,timestamp: timestamp}))\n  let sign = String(java.digestHex(java.base64Encode(`param=${param}&requestId=${requestId}&timestamp=${timestamp}&key=${md5Key}`),'md5')).toUpperCase()\n  let data = JSON.stringify({\n    param: param,\n    requestId: requestId,\n    sign: sign,\n    timestamp: timestamp\n  })\n  let op = JSON.stringify({ method: \"POST\", body: data})\n  let res = JSON.parse(java.ajax(`https:\/\/api.hwnovel.com\/api\/ciyuanji\/client\/login\/phone,${op}`))\n  if(res.code != '200') throw new Error(res.msg)\nlet userInfo = res.data.userInfo source.putLoginHeader(JSON.stringify({ \"token\": userInfo.token}))\n  java.toast(\"登陆成功\")\n}\n<\/js>",
    "loginUi": "[\n  {\n    \"name\": \"手机号\",\n    \"type\": \"text\"\n  },\n  {\n    \"name\": \"验证码\",\n    \"type\": \"text\"\n  }\n]",
    "loginCheckJs": "",
    "concurrentRate": "",
    "header": "@js: \n(()=>{\n  var deviceno = java.androidId()\n  return JSON.stringify({\n    \"deviceno\":deviceno,\n    \"imei\": \"\",\n    \"targetmodel\": \"\",\n    \"platform\":\"1\",\n    \"channel\": \"1\",\n    \"version\": \"3.2.5\",\n    \"oaid\": \"\",\n    \"token\": \"\"\n  })\n})()",
    "bookUrlPattern": "",
    "searchUrl": "<js>\n(()=>{\nvar desKey = Packages.java.lang.String('ZUreQN0Epkpxh3pooWOgixjTfPwumCTYWzYTQ7SMgDnqFLQ1s9tqpVhkGf02we89moQwhSQ07DVzc3LWupRgbVvm29aYeY7zyFN').getBytes('UTF_8')\nvar des = Packages.cn.hutool.crypto.symmetric.DES(\"ECB\",\"PKCS5Padding\", desKey)\nvar md5Key = 'NpkTYvpvhJjEog8Y051gQDHmReY54z5t3F0zSd9QEFuxWGqfC8g8Y4GPuabq0KPdxArlji4dSnnHCARHnkqYBLu7iIw55ibTo18'\nvar timestamp = Date.now()\nvar requestId = java.randomUUID().replace('-','')\nvar param = des.encryptBase64(JSON.stringify({'keyword': key, 'pageNo': 1, 'pageSize': 15,'rankType':'0','timestamp': timestamp}))\nvar sign = String(java.digestHex(java.base64Encode(`param=${param}&requestId=${requestId}&timestamp=${timestamp}&key=${md5Key}`),'md5')).toUpperCase()\nreturn `\/api\/ciyuanji\/client\/book\/searchBookList?timestamp=${timestamp}&requestId=${requestId }&sign=${sign}&param=${encodeURIComponent(param)}`\n})()\n<\/js>",
    "exploreUrl": "<js>\nfunction getParams(params,isPost){\n let desKey = Packages.java.lang.String('ZUreQN0Epkpxh3pooWOgixjTfPwumCTYWzYTQ7SMgDnqFLQ1s9tqpVhkGf02we89moQwhSQ07DVzc3LWupRgbVvm29aYeY7zyFN').getBytes('UTF_8')\n let des = Packages.cn.hutool.crypto.symmetric.DES(\"ECB\",\"PKCS5Padding\", desKey)\n let md5Key = 'NpkTYvpvhJjEog8Y051gQDHmReY54z5t3F0zSd9QEFuxWGqfC8g8Y4GPuabq0KPdxArlji4dSnnHCARHnkqYBLu7iIw55ibTo18'\n let timestamp = Date.now()\n let requestId = java.randomUUID().replace('-','')\n let param = des.encryptBase64(JSON.stringify(Object.assign(params,{'timestamp': timestamp})))\n let sign = String(java.digestHex(java.base64Encode(`param=${param}&requestId=${requestId}&timestamp=${timestamp}&key=${md5Key}`),'md5')).toUpperCase()\n let data = JSON.stringify({\n    param: param,\n    requestId: requestId,\n    sign: sign,\n    timestamp: timestamp\n })\n return isPost? JSON.stringify({ method: \"POST\", body: data }) :`timestamp=${timestamp}&requestId=${requestId}&sign=${sign}&param=${encodeURIComponent(param)}`\n}\nlet style1 = {\"layout_flexGrow\": 0,\"layout_flexBasisPercent\": 1}\nlet style2 = {\"layout_flexGrow\": 0.25,\"layout_flexBasisPercent\": -1}\nlet style3 = {\"layout_flexGrow\": 0,\"layout_flexBasisPercent\": 0.29}\nlet findList = [{\"title\": \"༺个人中心༺ \",\"url\": '',\"style\": style1},{\"title\": \"每日签到\",\"url\": `https:\/\/api.hwnovel.com\/api\/ciyuanji\/client\/sign\/sign,${getParams({},true)}`,\"style\": style2},{\"title\": \"个人书架\",\"url\": `https:\/\/api.hwnovel.com\/api\/ciyuanji\/client\/bookrack\/getUserBookRackList?${getParams({\"pageNo\":1,\"pageSize\":9999},false)}`,\"style\": style2}]\nfindList.push({\"title\": \"༺男生分类༺ \",\"url\": '',\"style\": style1})\n\/\/ bookType: 1 代表男生. bookType: 4 代表女生\n\/\/ 获取男生分类\nres = JSON.parse(java.ajax(`https:\/\/api.hwnovel.com\/api\/ciyuanji\/client\/classify\/getBookClassifyListByParams?${getParams({\"classifyId\":0,\"pageNo\":1,\"pageSize\":99,\"bookType\":\"1\"},false)}`))\nres.data.classifyList.forEach(o=> {\n  let params1 = getParams({\"firstClassify\":o.classifyId,\"rankType\":\"1\",\"pageNo\": 1,\"pageSize\": 30,\"bookType\":\"1\"},false)\n  findList.push({\"title\": o.classifyName, \"url\": `https:\/\/api.hwnovel.com\/api\/ciyuanji\/client\/book\/getBookListByParams?${params1}`,\"style\": style1})\n  let len =  o.childList.length\n  len>1&&o.childList.forEach((c,i)=>{\n  \t   let params2 = getParams({\"firstClassify\":o.classifyId,\"rankType\":\"1\",\"pageNo\": 1,\"pageSize\": 30,\"bookType\":\"1\",\"secondClassify\":c.classifyId},false)\n  \t  let style=i==len-1?style3:style2\n    findList.push({\"title\":c.classifyName, \"url\": `https:\/\/api.hwnovel.com\/api\/ciyuanji\/client\/book\/getBookListByParams?${params2}`,\"style\":style})\n  \t})\n})\n\/\/ 获取男生标签\nfindList.push({\"title\": \"༺ 男生标签༺\",\"url\": '',\"style\": style1})\nres = JSON.parse(java.ajax(`https:\/\/api.hwnovel.com\/api\/ciyuanji\/client\/tag\/getAppTagList?${getParams({\"pageNo\":1,\"pageSize\":99,\"bookType\":\"1\"},false)}`))\nlet tagLen =  res.data.list.length\nres.data.list.forEach((o,i)=> {\n  let params = getParams({\"tagId\":o.tagId,\"rankType\":\"1\",\"pageNo\": 1,\"pageSize\": 30,\"bookType\":\"1\"},false)\n  let style=i==tagLen-1?style3:style2\n  findList.push({\"title\": o.tagName, \"url\": `https:\/\/api.hwnovel.com\/api\/ciyuanji\/client\/book\/getBookListByTagId?${params}`,\"style\": style})\n})\nJSON.stringify(findList)\n<\/js>",
    "enabled": true,
    "enabledExplore": true,
    "weight": 0,
    "customOrder": 4,
    "lastUpdateTime": 1661775473067,
    "ruleSearch": {
        "bookList": "$.data.esBookList[*]",
        "name": "$.bookName",
        "author": "$.authorName",
        "kind": "{{$.tagName}}\n{{java.getString('endState')=='1'?'已完结':'连载中'}}\n{{java.getString('isFee')=='0'?'免费':'付费'}}",
        "wordCount": "$.wordCount",
        "lastChapter": "{{$.latestChapterName}} • {{$.latestUpdateTime##\\s.*}}",
        "intro": "$.notes",
        "coverUrl": "$.imgUrl",
        "bookUrl": "<js>\n(()=>{\nvar desKey = Packages.java.lang.String('ZUreQN0Epkpxh3pooWOgixjTfPwumCTYWzYTQ7SMgDnqFLQ1s9tqpVhkGf02we89moQwhSQ07DVzc3LWupRgbVvm29aYeY7zyFN').getBytes('UTF_8')\nvar des = Packages.cn.hutool.crypto.symmetric.DES(\"ECB\",\"PKCS5Padding\", desKey)\nvar md5Key = 'NpkTYvpvhJjEog8Y051gQDHmReY54z5t3F0zSd9QEFuxWGqfC8g8Y4GPuabq0KPdxArlji4dSnnHCARHnkqYBLu7iIw55ibTo18'\nvar timestamp = Date.now()\nvar requestId = java.randomUUID().replace('-','')\nvar param = des.encryptBase64(JSON.stringify({'bookId': java.getString('bookId'),'timestamp': timestamp}))\nvar sign = String(java.digestHex(java.base64Encode(`param=${param}&requestId=${requestId}&timestamp=${timestamp}&key=${md5Key}`),'md5')).toUpperCase()\nreturn `\/api\/ciyuanji\/client\/book\/getBookDetail?timestamp=${timestamp}&requestId=${requestId }&sign=${sign}&param=${encodeURIComponent(param)}`\n})()\n<\/js>"
    },
    "ruleExplore": {
        "bookList": "$.data.bookList[*]||$.data.list[*]||$.data.bookRackList[*]||$.data.signTask.rewardList[*]",
        "name": "$.bookName||$.rewardName",
        "author": "$.authorName",
        "kind": "{{$.tagName}}\n{{java.getString('endState')=='1'?'已完结':'连载中'}}\n{{java.getString('isFee')=='0'?'免费':'付费'}}",
        "wordCount": "$.wordCount",
        "lastChapter": "{{$.latestChapterName}}{{java.getString(\"$.latestChapterName\")!=''?'•':''}}{{$.latestUpdateTime##\\s.*}}",
        "intro": "$.notes",
        "coverUrl": "$.imgUrl||$.rewardIcon",
        "bookUrl": "<js>\n(()=>{\nvar desKey = Packages.java.lang.String('ZUreQN0Epkpxh3pooWOgixjTfPwumCTYWzYTQ7SMgDnqFLQ1s9tqpVhkGf02we89moQwhSQ07DVzc3LWupRgbVvm29aYeY7zyFN').getBytes('UTF_8')\nvar des = Packages.cn.hutool.crypto.symmetric.DES(\"ECB\",\"PKCS5Padding\", desKey)\nvar md5Key = 'NpkTYvpvhJjEog8Y051gQDHmReY54z5t3F0zSd9QEFuxWGqfC8g8Y4GPuabq0KPdxArlji4dSnnHCARHnkqYBLu7iIw55ibTo18'\nvar timestamp = Date.now()\nvar requestId = java.randomUUID().replace('-','')\nvar param = des.encryptBase64(JSON.stringify({'bookId': java.getString('bookId'),'timestamp': timestamp}))\nvar sign = String(java.digestHex(java.base64Encode(`param=${param}&requestId=${requestId}&timestamp=${timestamp}&key=${md5Key}`),'md5')).toUpperCase()\nreturn `\/api\/ciyuanji\/client\/book\/getBookDetail?timestamp=${timestamp}&requestId=${requestId }&sign=${sign}&param=${encodeURIComponent(param)}`\n})()\n<\/js>"
    },
    "ruleBookInfo": {
        "init": "$.data.book",
        "name": "$.bookName",
        "author": "$.authorName",
        "kind": "{{java.getStringList('tagList').toArray().map(v=>v.match(\/tagName=(.*),\/)[1]).join()}}\n{{java.getString('endState')=='1'?'已完结':'连载中'}}\n{{java.getString('isFee')=='0'?'免费':'付费'}}",
        "wordCount": "$.wordCount",
        "lastChapter": "$.latestChapterName",
        "intro": "$.notes",
        "coverUrl": "$.imgUrl",
        "tocUrl": "<js>\n(()=>{\nvar desKey = Packages.java.lang.String('ZUreQN0Epkpxh3pooWOgixjTfPwumCTYWzYTQ7SMgDnqFLQ1s9tqpVhkGf02we89moQwhSQ07DVzc3LWupRgbVvm29aYeY7zyFN').getBytes('UTF_8')\nvar des = Packages.cn.hutool.crypto.symmetric.DES(\"ECB\",\"PKCS5Padding\", desKey)\nvar md5Key = 'NpkTYvpvhJjEog8Y051gQDHmReY54z5t3F0zSd9QEFuxWGqfC8g8Y4GPuabq0KPdxArlji4dSnnHCARHnkqYBLu7iIw55ibTo18'\nvar timestamp = Date.now()\nvar requestId = java.randomUUID().replace('-','')\nvar param = des.encryptBase64(JSON.stringify({\"sortType\":\"1\",\"pageNo\":\"1\",\"pageSize\":\"9999\",\"bookId\": java.put('bookId',java.getString('bookId')),\"timestamp\": timestamp}))\nvar sign = String(java.digestHex(java.base64Encode(`param=${param}&requestId=${requestId}&timestamp=${timestamp}&key=${md5Key}`),'md5')).toUpperCase()\nreturn `\/api\/ciyuanji\/client\/chapter\/getChapterListByBookId?timestamp=${timestamp}&requestId=${requestId }&sign=${sign}&param=${encodeURIComponent(param)}`\n})()\n<\/js>"
    },
    "ruleToc": {
        "chapterList": "$.data.bookChapter.chapterList[*]",
        "chapterName": "$.chapterName",
        "chapterUrl": "<js>\n(()=>{\nvar desKey = Packages.java.lang.String('ZUreQN0Epkpxh3pooWOgixjTfPwumCTYWzYTQ7SMgDnqFLQ1s9tqpVhkGf02we89moQwhSQ07DVzc3LWupRgbVvm29aYeY7zyFN').getBytes('UTF_8')\nvar des = Packages.cn.hutool.crypto.symmetric.DES(\"ECB\",\"PKCS5Padding\", desKey)\nvar md5Key = 'NpkTYvpvhJjEog8Y051gQDHmReY54z5t3F0zSd9QEFuxWGqfC8g8Y4GPuabq0KPdxArlji4dSnnHCARHnkqYBLu7iIw55ibTo18'\nvar timestamp = Date.now()\nvar requestId = java.randomUUID().replace('-','')\nvar param = des.encryptBase64(JSON.stringify({\"bookId\":java.get('bookId'),\"chapterId\":java.getString('chapterId'),\"timestamp\":timestamp}))\nvar sign = String(java.digestHex(java.base64Encode(`param=${param}&requestId=${requestId}&timestamp=${timestamp}&key=${md5Key}`),'md5')).toUpperCase()\nreturn `\/api\/ciyuanji\/client\/chapter\/getChapterContent?timestamp=${timestamp}&requestId=${requestId }&sign=${sign}&param=${encodeURIComponent(param)}`\n})()\n<\/js>",
        "isVip": "$.isFee",
        "isPay": "$.isBuy",
        "updateTime": "更新时间 {{$.publishTime}}\n字数 {{$.wordCount}}"
    },
    "ruleContent": {
        "content": "<js>\nvar desKey = Packages.java.lang.String('ZUreQN0Epkpxh3pooWOgixjTfPwumCTYWzYTQ7SMgDnqFLQ1s9tqpVhkGf02we89moQwhSQ07DVzc3LWupRgbVvm29aYeY7zyFN').getBytes('UTF_8')\nlet content=Packages.cn.hutool.crypto.symmetric.DES(\"ECB\",\"PKCS5Padding\", desKey).decryptStr(java.base64DecodeToByteArray(java.getString(\"data.chapter.content\")))\nlet isBuy = java.getString(\"data.isBuy\")=='0'\nlet isFee = java.getString(\"data.isFee\")=='0'\nlet price = java.getString(\"data.price\")\nlet payText = `\\n本章是VIP章节,购买后才能阅读\\n本章需要${price}币`\nisBuy&&!isFee ? content + payText  : content\n<\/js>",
        "payAction": "var desKey = Packages.java.lang.String('ZUreQN0Epkpxh3pooWOgixjTfPwumCTYWzYTQ7SMgDnqFLQ1s9tqpVhkGf02we89moQwhSQ07DVzc3LWupRgbVvm29aYeY7zyFN').getBytes('UTF_8')\nvar des = Packages.cn.hutool.crypto.symmetric.DES(\"ECB\",\"PKCS5Padding\", desKey)\nlet md5Key = 'NpkTYvpvhJjEog8Y051gQDHmReY54z5t3F0zSd9QEFuxWGqfC8g8Y4GPuabq0KPdxArlji4dSnnHCARHnkqYBLu7iIw55ibTo18'\nlet urlParam = JSON.parse(des.decryptStr(java.base64DecodeToByteArray(decodeURIComponent(chapter.url.match(\/param=(.*)$\/)[1]))))\nlet timestamp = Date.now()\nlet requestId = java.randomUUID().replace('-','')\nvar bookId = urlParam.bookId\nvar chapterId = urlParam.chapterId\nlet param = des.encryptBase64(JSON.stringify({\"viewType\":\"2\",\"consumeType\":\"1\",\"bookId\":bookId,\"productId\":chapterId,\"buyCount\":\"1\",\"timestamp\":timestamp}))\nlet sign = String(java.digestHex(java.base64Encode(`param=${param}&requestId=${requestId}&timestamp=${timestamp}&key=${md5Key}`),'md5')).toUpperCase()\nlet data = JSON.stringify({\n    param: param,\n    requestId: requestId,\n    sign: sign,\n    timestamp: timestamp\n})\nlet op = JSON.stringify({ method: \"POST\", body: data })\nlet res = JSON.parse(java.ajax(`https:\/\/api.hwnovel.com\/api\/ciyuanji\/client\/order\/consume,${op}`))\nif(res.code != '200'){\n java.toast(res.msg)\n throw new Error(res.msg)\n}\njava.toast(\"购买成功,请手动刷新章节列表及内容\")"
    }
}
广告