哔哩轻小说
https://w.linovelib.com/
saberyz (2863)2023/10/07
该用户很懒,什么介绍也没有写!
{ "bookSourceComment": "建议登录\n整理修改缝合:酷安 Wolken\n灰色章节修复目录部分By叶落岚起+关耳\/乃星改2021.8.3\n补丁 : 神秘人\n修复搜索问题\n修复发现榜单没图的问题\n修复章节内图片问题\n新補丁: 神秘人\n抓取源码中的关键字替换\n更新补丁\n更新补丁17\/9\n2023.9.27\n新补丁:酷安 @吉王义昊\n重新抓取源码中的关键字替换\n2023.9.27\n新补丁2nd:酷安 @吉王义昊\n修复插图不能正常加载的问题\n2023.9.30\n酷安 @吉王义昊\n添加登录URL\n清理了无用代码\n使用更易读的变量名\n2023.10.1\n酷安 @吉王义昊\n重新抓取源码中的关键字替换\n2023.10.1\n酷安 @吉王义昊\n在获取正文时自动拉取源码并解密进行关键字替换,一劳永逸(大概)解决问题\n注意:此版本会使网络请求次数增加一倍,并一定程度上减慢加载速度\n2023.10.1\n酷安 @吉王义昊\n增加登录URL和登录UI\n启用CookieJar\n去除章节名下方的URL\n修正了下一页获取导致的正文加载错误\n补全发现中的文库\n修正部分小说目录获取错误的问题\n2023.10.4\n神秘人\n根据网站代码更新修复\nfix dynamic variable name\n2023.10.6\n網站大更新先前方法失效,用會回webview\n2023.10.7\n修复正文失效", "bookSourceGroup": "🎐轻小说", "bookSourceName": "哔哩轻小说", "bookSourceType": 0, "bookSourceUrl": "https:\/\/w.linovelib.com\/", "bookUrlPattern": "", "coverDecodeJs": "", "customOrder": 188, "enabled": true, "enabledCookieJar": true, "enabledExplore": true, "exploreUrl": "[{'title':'全部榜单','url':'','style':{layout_flexGrow:1,layout_flexBasisPercent:1}},\n{'title':'点击总榜','url':'\/wenku\/allvisit_0_0_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'点击月榜','url':'\/wenku\/monthvisit_0_0_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'点击周榜','url':'\/wenku\/weekvisit_0_0_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'推荐总榜','url':'\/wenku\/allvote_0_0_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'推荐月榜','url':'\/wenku\/monthvote_0_0_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'推荐周榜','url':'\/wenku\/weekvote_0_0_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'完结总点','url':'\/wenku\/allvisit_0_0_0_0_0_0_5_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'完结月点','url':'\/wenku\/monthvisit_0_0_0_0_0_0_5_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'完结周点','url':'\/wenku\/weekvisit_0_0_0_0_0_0_5_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'完结总推','url':'\/wenku\/allvote_0_0_0_0_0_0_5_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'完结月推','url':'\/wenku\/monthvote_0_0_0_0_0_0_5_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'完结周推','url':'\/wenku\/weekvote_0_0_0_0_0_0_5_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'收藏榜单','url':'\/wenku\/goodnum_0_0_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'字数榜单','url':'\/wenku\/words_0_0_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'新书榜单','url':'\/wenku\/postdate_0_0_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'更新榜单','url':'\/wenku\/lastupdate_0_0_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'编辑推荐','url':'\/wenku\/toptime_0_0_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'','url':'','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'全部文库','url':'','style':{layout_flexGrow:1,layout_flexBasisPercent:1}},\n{'title':'电击文库','url':'\/wenku\/lastupdate_0_1_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'富士见文库','url':'\/wenku\/lastupdate_0_2_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'角川文库','url':'\/wenku\/lastupdate_0_3_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'MF文库J','url':'\/wenku\/lastupdate_0_4_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'Fami通文库','url':'\/wenku\/lastupdate_0_5_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'GA文库','url':'\/wenku\/lastupdate_0_6_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'HJ文库','url':'\/wenku\/lastupdate_0_7_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'一迅社','url':'\/wenku\/lastupdate_0_8_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'集英社','url':'\/wenku\/lastupdate_0_9_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'小学馆','url':'\/wenku\/lastupdate_0_10_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'讲谈社','url':'\/wenku\/lastupdate_0_11_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'少女文库','url':'\/wenku\/lastupdate_0_12_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'其他文库','url':'\/wenku\/lastupdate_0_13_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'华文轻小说','url':'\/wenku\/lastupdate_0_14_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'Web轻小说','url':'\/wenku\/lastupdate_0_15_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'轻改漫画','url':'\/wenku\/lastupdate_0_16_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n{'title':'韩国轻小说','url':'\/wenku\/lastupdate_0_17_0_0_0_0_0_{{page}}_0.html','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}}]", "header": "{\"User-Agent\": \"Mobile\", \n\"Referer\":\"https:\/\/w.linovelib.com\/login.php\"\n}", "lastUpdateTime": 1696664774569, "loginUi": "[\n {\n \"name\": \"账号\",\n \"type\": \"text\"\n },\n {\n \"name\": \"密码\",\n \"type\": \"password\"\n }\n]", "loginUrl": "@js:\nfunction login() {\n let une = source.getLoginInfoMap().get(\"账号\")\n let pwd = source.getLoginInfoMap().get(\"密码\")\n if (une && pwd) {\n let body = String('username=' + une + '&password=' + pwd + '&usecookie=315360000&action=login')\n let url = source.bookSourceUrl + '\/login.php'\n let ck = java.post(url, body, { \"Content-Type\": \"application\/x-www-form-urlencoded\" }).cookies()\n let header = JSON.stringify({\n \"Cookie\": String(ck).match(\/\\{(.*?)\\}\/)[1].replace(\/,\/g, ';')\n })\n source.putLoginHeader(header)\n }\n}", "respondTime": 180000, "ruleBookInfo": { "author": "[property=\"og:novel:author\"]@content", "coverUrl": "[property=\"og:image\"]@content", "intro": "id.bookSummary@tag.content@textNodes\n@js:\nresult=\" \"+result;", "kind": "class.book-cell@tag.p.1@ownText&&class.tag-small red@text\n##.*万字|·.*", "lastChapter": "class.gray ell@text##(\\d+-\\d+-\\d+\\s\\d+:\\d+)·(.*)##$2 • $1", "name": "[property=\"og:novel:book_name\"]@content", "tocUrl": "class.btn-normal red@href", "wordCount": "class.book-cell@tag.p.1@ownText##连载|完结" }, "ruleContent": { "content": "\n<js>\n\n\/\/!(\/google.cn\/).test(baseUrl)?h=java.getString(\"id.cacontent@html\"):h=decodeURIComponent(baseUrl.replace(\/^.*?text=\/, ''));\nh = java.webView(null,baseUrl,null);\nh = java.getString(\"id.cacontent@html\",h);\n\/\/run readtools.js match words\\\n\/\/run js file's last line\n\/\/jsLink = java.getString(\"tag.script@src\").match(new RegExp(\"https.+readtools.+\", \"gi\"))[0];\n\/\/h=String(h);\n\/\/code = String(java.ajax(jsLink)).trim().split(\"\\n\").pop().trim().split(\";\")[1];\n\/\/code = code.replace(\/\\[\\'\\\\x72\\\\x65\\\\x70\\\\x6c\\\\x61\\\\x63\\\\x65\\'\\]\/g,\".replace\");\n\/\/code = code.replace(\/window\\[\\\"\\\\x52\\\\x65\\\\x67\\\\x45\\\\x78\\\\x70\\\"\\]\/g,\"RegExp\");\n\/\/varname = code.match(\/.+?(?=\\=)\/).pop();\n\/\/code = code.replace(new RegExp(varname,\"g\"),\"h\");\n\/\/java.log(code)\n\/\/eval(code);\nh\n<\/js>\n", "imageDecode": "", "imageStyle": "FULL", "nextContentUrl": "##url_next:'([^']*)'##$1###\n@js:\n\/\/121_2.html这样的是下一页,纯数字则是下一章\n\/\/带有catalog是详情页\nvar isNew=\/(\\\/(\\d+).html)|catalog\/.test(result);\nvar out=isNew?'':result;\nout", "replaceRegex": "<js>\njava.log(666)\njava.log(result)\n<\/js>\n##((?<=[\\u4e00-\\u9fa5“‘「(,])\\s+)?<!--\\s*\\(继续下一页\\)\\s*-->\\s*|((?<=[\\u4e00-\\u9fa5“‘「(,])\\s+)?\\(本章未完\\)\\s*|" }, "ruleExplore": { "author": "class.book-author@ownText", "bookList": "class.book-ol book-ol-normal jsBooks@tag.li", "bookUrl": "a@href", "coverUrl": "img@data-src", "intro": "class.book-desc@text", "kind": "class.tag-small-group origin-right@tag.em.0@text&&\nclass.tag-small-group origin-right@tag.em.1@text", "name": "class.book-title@text", "wordCount": "class.tag-small blue@text" }, "ruleReview": {}, "ruleSearch": { "author": "class.book-author@textNodes", "bookList": "@js:\npath = 'class.book-ol book-ol-normal@tag.li';\nc=java.getElement(path);\nif( !c.length && result.includes('no-js')){\n res = java.startBrowserAwait(baseUrl,'等待至跳转,然后重搜');\n java.setContent(res.body());\n c=java.getElement(path);\n}\nc", "bookUrl": "tag.a.0@href", "checkKeyWord": "我的青春恋爱喜剧", "coverUrl": "a@href@js:\nvar id = result.match(\/\\\/(\\d+)\\.html\/)[1];\n'https:\/\/www.linovelib.com\/files\/article\/image\/'+parseInt(id\/1000)+'\/'+id+'\/'+id+'s.jpg';", "intro": "class.book-desc@text", "kind": "class.tag-small-group origin-right@tag.em@text", "name": "class.book-title-x@class.book-title@text" }, "ruleToc": { "chapterList": "id.volumes @tag.li\n@js:\n \/\/现实debug(尝试修复正文链接问题,和目录不全)\n \/\/<<好友角色的我怎么可能大受欢迎>>第三卷12\n \/\/<<我的青春恋爱喜剧>>\n \/\/2022-8-19\n \/\/原来的代码在源注释(已移除)\n \/\/2022-8-20修复https:\/\/w.linovelib.com\/novel\/2765.html目录加载失败\n \/\/2023-9-30使用易于理解的变量命名\n\nres = result\n\nfor (i = 0; i < res.length; i++) {\n java.setContent(res[i])\n if (java.getString(\"tag.a@href\") == \"javascript:cid(0)\") {\n if (i == res.length - 1) {\n java.setContent(res[i - 1])\n prevLink = java.getString(\"tag.a@href\")\n if (prevLink == \"\") {\n java.setContent(res[i - 2])\n prevLink = java.getString(\"tag.a@href\")\n }\n prev = java.ajax(\"https:\/\/w.linovelib.com\" + prevLink)\n java.setContent(prev)\n foot = java.getElements(\"id.footlink\")\n\n while (foot.indexOf(\"下一页\") != -1) {\n str = d1.match(\/<script type\\=\\\"text\\\/javascript\\\">var ReadParams.*\/)\n path = String(str).match(\/url_next\\:'.*?html\/)[0].replace(\"url_next:'\", \"\")\n content = java.ajax(\"https:\/\/w.linovelib.com\" + path)\n java.setContent(content)\n foot = java.getElements(\"id.footlink\")\n }\n\n str = next.match(\/<script type\\=\\\"text\\\/javascript\\\">var ReadParams.*\/)\n path = String(str).match(\/url_next\\:'.*?html\/)[0].replace(\"url_next:'\", \"\")\n java.log(path)\n res[i] = String(res[i]).replace('javascript:cid(0)', path)\n } else {\n java.setContent(res[i + 1])\n nextLink = java.getString(\"tag.a@href\")\n if (nextLink == \"\") {\n java.setContent(res[i + 2])\n nextLink = java.getString(\"tag.a@href\")\n }\n next = java.ajax(\"https:\/\/w.linovelib.com\" + nextLink)\n str = next.match(\/<script type\\=\\\"text\\\/javascript\\\">var ReadParams.*\/)\n path = String(str).match(\/url_previous\\:'.*?html\/)[0].replace(\"url_previous:'\", \"\")\n java.log(path)\n\n res[i] = String(res[i]).replace('javascript:cid(0)', path)\n }\n }\n}\nres", "chapterName": "text", "chapterUrl": "tag.a@href", "isVolume": "@js:\njava.getString(\"tag.a@href\")==\"\"", "updateTime": "" }, "searchUrl": "<js>\n\npage==1?\n'\/search.html?searchkey={{key}}&searchtype=all'\n:\n\n'\/search\/{{key}}_{{page}}.html'\n<\/js>", "weight": 0 }