起点读书限免+本章说
http://101.200.42.234:15380
wu-daweiawsf (13540)05/09 19:18
勿下载,修改源变量值切换评论页数
{
"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
}