[{"bookSourceComment":"少年梦阅读 API 适配 | 修复 connection closed | 适配3.25","bookSourceGroup":"游戏异界\/少年梦","bookSourceName":"少年梦阅读🎃","bookSourceType":0,"bookSourceUrl":"https:\/\/api.shaoniandream.com#🎃","customOrder":0,"enabled":true,"enabledCookieJar":false,"enabledExplore":true,"exploreUrl":"热门::https:\/\/api.shaoniandream.com\/Booklibrary\/index,{\"method\":\"POST\",\"body\":\"count=20&isDevice=Android&page={{page}}&regDevice=2&key=87ac02d392a8d3566fe7748c8de00af3&secrect=57dcuidu8aa8062bfe8042ea65310669\"}\n新书::https:\/\/api.shaoniandream.com\/Booklibrary\/index,{\"method\":\"POST\",\"body\":\"count=20&isDevice=Android&page={{page}}&regDevice=2&sort=new&key=87ac02d392a8d3566fe7748c8de00af3&secrect=57dcuidu8aa8062bfe8042ea65310669\"}\n精品::https:\/\/api.shaoniandream.com\/Booklibrary\/index,{\"method\":\"POST\",\"body\":\"count=20&isDevice=Android&page={{page}}&regDevice=2&sort=hot&key=87ac02d392a8d3566fe7748c8de00af3&secrect=57dcuidu8aa8062bfe8042ea65310669\"}","header":"{\n  \"User-Agent\": \"okhttp\/4.9.1\",\n  \"version\": \"v3\",\n  \"Content-Type\": \"application\/json\"\n}","lastUpdateTime":"1782469083977","loginUi":"[\n    {\n        \"name\": \"账号\",\n        \"type\": \"text\"\n    },\n    {\n        \"name\": \"密码\",\n        \"type\": \"password\"\n    }\n]","loginUrl":"<js>\n  function login() {\n    const user = String(source.getLoginInfoMap().get(\"账号\"))\n    const pw = String(source.getLoginInfoMap().get(\"密码\"))\n    let sign = java.md5Encode(`isDevice=Android&password=${pw}&phone=${user}&regDevice=2&key=87ac02d392a8d3566fe7748c8de00af3&secrect=57dcuidu8aa8062bfe8042ea65310669`).toString().toUpperCase()\n    let data = JSON.stringify({\n      isDevice: \"Android\",\n      password: pw,\n      phone: user,\n      regDevice: \"2\",\n      sign: sign\n    })\n    let op = JSON.stringify({\n      method: \"POST\",\n      body: data\n    })\n    let res = java.ajax(`https:\/\/api.shaoniandream.com\/Login\/login,${op}`)\n    let $ = JSON.parse(res)\n    if($.status != 1) java.toast($.msg)\n    java.put(\"uid\",$.data.id)\n    source.putLoginHeader(JSON.stringify({\n      logintoken: $.data.logintoken\n    }))\n  }\n<\/js>","respondTime":2018,"ruleBookInfo":{"author":"AuthorObj.penName","coverUrl":"http:\/\/alioss.shaoniandream.com{{$.picture}}","init":"data","intro":"jianjie","kind":"sortName","lastChapter":"ChapterName##连载至","name":"title","tocUrl":"<js>\n  let uid =  java.get(\"uid\") != \"undefined\" ? java.get(\"uid\") : \"-1\"\n  let sign = java.md5Encode(`BookID={{$.id}}&UserID=${uid}&isDevice=Android&regDevice=2&key=87ac02d392a8d3566fe7748c8de00af3&secrect=57dcuidu8aa8062bfe8042ea65310669`).toString().toUpperCase()\n  let data = JSON.stringify({\n    BookID: {{$.id}},\n    UserID: uid,\n    isDevice: \"Android\",\n    regDevice: \"2\",\n    sign: sign\n  })\n  let op = JSON.stringify({\n      method: \"POST\",\n      body: data\n    })\n  \"https:\/\/api.shaoniandream.com\/Booklibrary\/readdir,\" + op\n<\/js>","wordCount":"FontCount"},"ruleContent":{"content":"<js>\n  let $ = JSON.parse(result)\n  let content = $.data.show_content.map((item)=>{\n    return java.base64Decode(item.content)\n  }).join(\"\\n\").trim()\n  let img = $.data.chapterpic.map((item)=>{\n    return `<img src=\"http:\/\/alioss.shaoniandream.com${item.url}\" \/>`\n  }).join(\"\\n\").trim()\n  let miaoshu = java.base64Decode($.data.miaoshu || \"\")\n  let txt = \"\"\n  if(miaoshu != \"\")\n    txt = `${content}\\n${img}\\n作者有话说：\\n${miaoshu}`\n  else txt = `${content}\\n${img}`\n  txt\n<\/js>"},"ruleExplore":{"bookList":"data","name":"title","author":"penName","coverUrl":"http:\/\/alioss.shaoniandream.com{{$.picture}}","intro":"jianjie","bookUrl":"<js>\n  let uid =  java.get(\"uid\") != \"undefined\" ? java.get(\"uid\") : \"-1\"\n  let sign = java.md5Encode(`BookID=${$.id}&UserID=${uid}&isDevice=Android&regDevice=2&key=87ac02d392a8d3566fe7748c8de00af3&secrect=57dcuidu8aa8062bfe8042ea65310669`).toString().toUpperCase()\n  let data = JSON.stringify({\n    BookID: $.id,\n    UserID: uid,\n    isDevice: \"Android\",\n    regDevice: \"2\",\n    sign: sign\n  })\n  let op = JSON.stringify({method: \"POST\", body: data})\n  \"https:\/\/api.shaoniandream.com\/Booklibrary\/bookdetail,\" + op\n<\/js>","kind":"SortObj.cname"},"ruleReview":[],"ruleSearch":{"author":"penName","bookList":"data","bookUrl":"<js>\n  let uid =  java.get(\"uid\") != \"undefined\" ? java.get(\"uid\") : \"-1\"\n  let sign = java.md5Encode(`BookID={{$.BooksID}}&UserID=${uid}&isDevice=Android&regDevice=2&key=87ac02d392a8d3566fe7748c8de00af3&secrect=57dcuidu8aa8062bfe8042ea65310669`).toString().toUpperCase()\n  let data = JSON.stringify({\n    BookID: {{$.BooksID}},\n    UserID: uid,\n    isDevice: \"Android\",\n    regDevice: \"2\",\n    sign: sign\n  })\n  let op = JSON.stringify({method: \"POST\", body: data})\n  \"https:\/\/api.shaoniandream.com\/Booklibrary\/bookdetail,\" + op\n<\/js>","coverUrl":"http:\/\/alioss.shaoniandream.com{{$.picture}}","intro":"jianjie","kind":"SortObj.cname","lastChapter":"","name":"title","wordCount":"FontCount"},"ruleToc":{"chapterList":"<js>\n  let $ = JSON.parse(result)\n  let uid = java.get(\"uid\") != \"undefined\" ? java.get(\"uid\") : \"-1\"\n  let array = []\n  $.data.chapterList.forEach((booklet) => {\n    array.push({ name: booklet.title, isv: true })\n    booklet.chapterList.forEach((chapter) => {\n      let sign = java.md5Encode(`BookID=${$.data.id}&UserID=${uid}&chapter_id=${chapter.id}&isDevice=Android&isMarket=true&regDevice=2&key=87ac02d392a8d3566fe7748c8de00af3&secrect=57dcuidu8aa8062bfe8042ea65310669`).toString().toUpperCase()\n      let data = JSON.stringify({\n        BookID: $.data.id,\n        UserID: uid,\n        chapter_id: chapter.id,\n        isDevice: \"Android\",\n        isMarket: \"true\",\n        regDevice: \"2\",\n        sign: sign\n      })\n      let op = JSON.stringify({method: \"POST\", body: data})\n      array.push({\n        name: chapter.title,\n        url: \"https:\/\/api.shaoniandream.com\/Booklibrary\/readchapter,\" + op,\n        time: java.timeFormat(chapter.release_time_now * 1000),\n        vip: chapter.isFree == 1,\n        buy: chapter.lock == 1\n      })\n    })\n  })\n  array\n<\/js>","chapterName":"name","chapterUrl":"url","isPay":"buy","isVip":"vip","isVolume":"isv","preUpdateJs":"","updateTime":"time"},"searchUrl":"<js>\n  let sign = java.md5Encode(`count=10&isDevice=Android&keywords=${key}&page=1&regDevice=2&key=87ac02d392a8d3566fe7748c8de00af3&secrect=57dcuidu8aa8062bfe8042ea65310669`).toString().toUpperCase()\n  let data = JSON.stringify({\n    count: 10,\n    isDevice: \"Android\",\n    keywords: key,\n    page: 1,\n    regDevice: \"2\",\n    sign: sign\n  })\n  let op = JSON.stringify({method: \"POST\", body: data})\n  \"https:\/\/api.shaoniandream.com\/Booklibrary\/index,\" + op\n<\/js>","weight":88}]