[{"bookSourceComment":"勿下载，修改源变量值切换评论页数","bookSourceName":"起点读书限免+本章说","bookSourceType":0,"bookSourceUrl":"http:\/\/101.200.42.234:15380","concurrentRate":"1\/2000","customButton":false,"customOrder":1,"enabled":true,"enabledCookieJar":true,"enabledExplore":false,"eventListener":false,"header":"{\"User-Agent\":\"Mozilla\/mobile QDReaderAndroid\/7.9.248\/804\/1000023\"}","lastUpdateTime":"1778325499477","loginUi":"[\n    {\n        \"name\": \"cdkey\",\n        \"title\": \"卡密\",\n        \"type\": \"text\",\n        \"default\": \"\"\n    }\n]\n","loginUrl":"<js>\nfunction login(){\n    var cdkey = String(source.getLoginInfoMap().get(\"cdkey\"));\n    if(!cdkey){\n     \n        return;\n    }\n \n    source.put(\"cdkey\", cdkey);\n   \n}\nlogin();\n<\/js>\n","respondTime":180000,"ruleBookInfo":{"author":"$.authorName||'未知作者'","canReName":"true","coverUrl":"$.coverUrl||''","intro":"$.description||'无简介'","name":"$.bookName||'未知书名'","tocUrl":"\n\n<js>\n\nvar cdkey = String(source.getLoginInfoMap().get(\"cdkey\"))\nparams=java.get(\"myBookId\");\n\n'http:\/\/101.200.42.234:15380\/getCatalog?bookId='+params+'&token='+cdkey;\n\n\n<\/js>","wordCount":"wordsCount"},"ruleContent":{"content":"$.content","payAction":"\nvar arr = baseUrl.match(\/bookId=(\\d+)\/);\nvar bid = arr ? arr[1] : \"\";\n\nlet chapterMatch = baseUrl.match(\/chapterId=(\\d+)\/i);\n\n let chapterid = chapterMatch ? chapterMatch[1] : \"\";\n\nlet bookid = bid;\n \n let token = source.get(\"cdkey\");\n\nlet pg = source.getVariable()&&java.get(\"commentPage\");\n\nlet pz = 15;\nlet cursorid = \"0\";\n\nfunction loadPage(pg) {\n    let url = \"http:\/\/101.200.42.234:15380\/chapterreviewparagraph?bookid=\" + bookid\n        + \"&chapterid=\" + chapterid\n        + \"&pg=\" + pg\n        + \"&pz=\" + pz\n        + \"&cursorid=\" + cursorid\n        + \"&token=\" + token;\n\n    let res = java.ajax(url);\n    return JSON.parse(res);\n}\n\n\nlet json = loadPage(pg);\n\nlet commentHTML = '';\n\nfunction cleanContent(str) {\n    return (str || '').replace(\/\\[fn=\\d+\\]\/g, '').trim();\n}\n\nlet moreSegs = json.Data.ParagraphsInfos || [];\nfor (let seg of moreSegs) {\n    let list = seg.DataList || [];\n    let quote = list[0]?.RefferContent || \"段落评论\";\n    \n    let blockImgHtml = \"\";\n    if (seg.BlockImgUrl) {\n        blockImgHtml = `<img src=\"${seg.BlockImgUrl}\" class=\"chapter-img\" style=\"max-width:100%;border-radius:8px;margin:8px 0;display:block;\">`;\n    }\n\n    commentHTML += `\n    <div class=\"segment\">\n        <div class=\"quote\">${quote}<\/div>\n        ${blockImgHtml}`;\n\n    for (let c of list) {\n        if (!c.Id) continue;\n        let avatar = c.UserHeadIcon || '';\n        let name = c.UserName || '匿名';\n        let ip = c.IpLocation ? `(${c.IpLocation})` : '';\n        let content = cleanContent(c.Content);\n        let isReply = c.IsReplyReview === 1 || c.RefferCommentId > 0;\n        let style = isReply ? \"margin-left:24px;\" : \"\";\n\n        commentHTML += `\n        <div class=\"comment\" style=\"${style}\">\n            <img class=\"avatar\" src=\"${avatar}\">\n            <div class=\"comment-body\">\n                <div class=\"name\">${name} ${ip}<\/div>\n                <div class=\"content\">${content}<\/div>\n            <\/div>\n        <\/div>`;\n    }\n    commentHTML += '<\/div><div class=\"split\"><\/div>';\n}\n\ncommentHTML += `\n<div style=\"text-align:center;margin:30px 0;color:#888;\">\n    当前第 ${pg} 页\n<\/div>`;\n\n\nlet html = `\n<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>第${pg}页-本章说<\/title>\n<style>\nbody{background:#1e1e1e;color:#fff;padding:16px;font-size:16px;line-height:1.6}\n.comment{display:flex;gap:10px;background:#2b2b2b;padding:12px 14px;border-radius:8px;margin-bottom:10px;align-items:flex-start}\n.avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0}\n.comment-body{flex:1}\n.name{color:#60d9ff;font-weight:bold}\n.content{margin-top:4px}\n.segment{margin-bottom:10px}\n.quote{background:#333;color:#bbb;padding:10px 14px;border-left:3px solid #777;border-radius:6px;margin-bottom:10px}\n.split{height:1px;background:#444;margin:20px 0}\n.chapter-img{max-width:100%;border-radius:8px;margin:8px 0;display:block}\n<\/style>\n<\/head>\n<body>${commentHTML}<\/body>\n<\/html>`;\n\nlet url = \"data:text\/html;base64,\" + java.base64Encode(html);\njava.startBrowser(url, \"本章说\");\n"},"ruleExplore":[],"ruleSearch":{"author":"$.authorName","bookList":"$.bookList[*]","bookUrl":"<js>\nvar cdkey = String(source.getLoginInfoMap().get(\"cdkey\"))\nparams={{$.bookId}}\njava.put(\"myBookId\", params);\n'http:\/\/101.200.42.234:15380\/getCatalog?bookId='+params+'&token='+cdkey;\n<\/js>","coverUrl":"https:\/\/qidian.qpic.cn\/qdbimg\/349573\/{$.bookId}\/600","intro":"$.description||'无简介'","kind":"subCategoryName&&categoryName","name":"bookName","wordCount":"$.wordsCount"},"ruleToc":{"chapterList":"$.catalog[*]","chapterName":"$.chapterName","chapterUrl":"@js:\nvar arr = baseUrl.match(\/bookId=(\\d+)\/);\nvar bid = arr ? arr[1] : \"\";\nsource.put(\"bid\", bid);\n\n\nvar cdkey = String(source.getLoginInfoMap().get(\"cdkey\"))\n\n\nc='http:\/\/101.200.42.234:15380\/getchapter?bookId='+bid+'&chapterId={{$.chapterId}}'+'&token='+cdkey\n\n","isVip":"$.isVip||0","updateTime":"DisplayTime"},"searchUrl":"@js:\n'http:\/\/101.200.42.234:15380\/searchbook?keyword={{key}}&p={{page}}&token='+source.get(\"cdkey\")","weight":0}]