[{"bookSourceComment":"1.需要在书源登录真白萌，才能正常使用此书源，登陆时请耐心等待验证；\n2.章节前面有🔒的标志，且内容为\"立即打钱\"，请唤起小说界面UI，点击右上角的书源名，有购买选项；\n3.请确保自己账号金币充足，另外购买后不会去掉🔒，但正文会自动刷新；\n4.真白萌有访问次数限制，短时间访问太多次会被ban，所以建议把APP的正文预下载调低；\n5.如果刷新正文一直是获取失败，那请隔一段时间再刷新，也有可能是需要重新登录书源；\n6.现在登录按钮有两个功能了，一个登录，一个更新书源；\n7.仅限本次更新书源后，可能会显示你的书找不到源，删除后再重新搜索添加吧；\n8.删除后不要退出APP，这样可以保证你重新添加的书籍之前缓存的章节还在；\n9.待补充；","bookSourceGroup":"轻小说","bookSourceName":"真白萌(请先登录)","bookSourceType":0,"bookSourceUrl":"https:\/\/masiro.me","concurrentRate":"2500","customOrder":2,"enabled":true,"enabledCookieJar":true,"enabledExplore":true,"header":"{\n    \"X-Requested-With\": \"XMLHttpRequest\",\n    \"User-Agent\": \"Mozilla\/5.0 (Linux; Android 14)\",\n    \"Referer\": \"https:\/\/masiro.me\/\"\n}","jsLib":"function update() {\n    const {java} = this;\n    let sourceUrl = \"https:\/\/gitee.com\/Ice-Min\/MyBookSource\/raw\/master\/书源\/真白萌\/真白萌.json\";\n    let importUrl = \"legado:\/\/import\/importonline?src=\" + sourceUrl;\n\n    let importHtml = `data:text\/html;charset=utf-8,<html>\n<head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>更新书源<\/title>\n<style>\n.importSource {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\theight: 50vh;\n\t}\nbutton {\n\tbackground-color: rgb(100,150,220);\n\tcolor: white;\n\tborder: none;\n\tborder-radius: 4px;\n\theight: 6vh;\n\twidth: 30vw;\n\toverflow: hidden;\n\t}\n<\/style>\n<\/head>\n<body><div class=\"importSource\"><a href=\"${importUrl}\"><button>更新书源<\/button><\/a><\/div><\/body>\n<\/html>`;\n    java.startBrowser(importHtml, \"更新书源\");\n}","lastUpdateTime":"1751959278204","loginUi":"[\n    {\n        \"name\": \"登录\",\n        \"type\": \"button\",\n        \"action\": \"login()\"\n    },\n    {\n        \"name\": \"更新书源\",\n        \"type\": \"button\",\n        \"action\": \"update()\"\n    }\n]","loginUrl":"function login() {\n    java.startBrowser(\"https:\/\/masiro.me\/admin\/auth\/login\", \"真白萌登录\");\n}","respondTime":4841,"ruleBookInfo":{"author":".author@a@text","canReName":"1","coverUrl":"https:\/\/masiro.me{{@@.mailbox-attachment-icon@img@data-src##\\?quality=.+}}","intro":"div.brief@html##简介：","kind":"span.label@text","lastChapter":"a.nw-a@text","name":"div.novel-title@text","tocUrl":"@js:\nvar options = {webView: true};\nvar theBookUrl = baseUrl + \",\" + JSON.stringify(options);\ntheBookUrl;","wordCount":"div.n-chapters@text##字数 : |字共.+话"},"ruleContent":{"content":"@js:\nif(`{{@@class.cost@value}}` !== \"\") {\n`{{@@class.error-box@html}}\n{{@@class.cost@value}} 金币`;\n} else {\n`{{@@class.nvl-content@html}}`;\n}","payAction":"(function(){\n    java.setContent(java.ajax(\"https:\/\/masiro.me\" + baseUrl));\n    let costUrl = \"https:\/\/masiro.me\/admin\/pay\";\n    let chapterBody = `type=${java.getString(\"class.type@value\")}&object_id=${java.getString(\"class.object_id@value\")}&cost=${java.getString(\"class.cost@value\")}`;\n    let headers = {\n        \"X-CSRF-TOKEN\": java.getString(\"class.csrf@value\"),\n        \"X-Requested-With\": \"XMLHttpRequest\",\n        \"User-Agent\": \"Mozilla\/5.0 (Linux; Android 14)\",\n        \"Referer\": String(\"https:\/\/masiro.me\" + baseUrl)\n    };\n    let responseBody = java.post(costUrl, chapterBody, headers).body();\n    if(JSON.parse(responseBody).code === 1) {\n        java.longToast(JSON.parse(responseBody).msg);\n        return true;\n    } else {\n        java.longToast(JSON.parse(responseBody).msg || \"支付失败\");\n        return false;\n    }\n})()"},"ruleExplore":[],"ruleSearch":{"author":"author","bookList":"novels","bookUrl":"https:\/\/masiro.me\/admin\/novelView?novel_id={{@json:id}}","checkKeyWord":"黄油路人","coverUrl":"cover_img","intro":"brief","kind":"tags..name","lastChapter":"new_up_content","name":"title","wordCount":"words"},"ruleToc":{"chapterList":"ul.chapter-ul@.episode-ul>a, li.chapter-box>b","chapterName":".episode-box>span:nth-of-type(1)@text||li.chapter-box>b@text","chapterUrl":"href","isVip":"@js:\nvar doc = org.jsoup.Jsoup.parse(result);\nvar smallElement = doc.select(\".episode-box > small:first-of-type\").first();\nvar isVIP = (smallElement != null && smallElement.text().trim().length() > 0);\n\/\/var isVIP = smallElement ? smallElement.text().trim().length > 0 : false;\nisVIP;","isVolume":"li.chapter-box>b@text","updateTime":".episode-box>span:nth-of-type(2)>span[title]@text"},"searchUrl":"https:\/\/masiro.me\/admin\/loadMoreNovels?page={{page}}&keyword={{key}}","weight":0}]