diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 311f51c87..cd31303d4 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -6,6 +6,7 @@ * 修复翻页动画 * 修复主题模式跟随 * 修复滚动翻页切换章节时跳动 +* 适配阅读3.0的web做源 **2020/03/04** * 修复仿真翻页动画 diff --git a/app/src/main/assets/web/index.html b/app/src/main/assets/web/index.html index 452e521f3..ea5a70c4c 100644 --- a/app/src/main/assets/web/index.html +++ b/app/src/main/assets/web/index.html @@ -3,305 +3,369 @@ - 书源编辑器v3.8 - + 阅读3.0书源编辑器_V4.0 + + -
-
-
-
书源基础信息
-
-
书源名称:
- -
-
-
书源分组:
- -
-
-
书源域名:
- -
-
-
登录网页:
- -
-
书籍发现规则
-
-
发现菜单:
- -
-
-
结果列表:
- -
-
-
书籍名称:
- -
-
-
书籍作者:
- -
-
-
书籍分类:
- -
-
-
最新章节:
- -
-
-
简介内容:
- -
-
-
封面链接:
- -
-
-
详情链接:
- -
-
书籍搜索规则
-
-
搜索网址:
- -
-
-
结果验证:
- -
-
-
结果列表:
- -
-
-
书籍名称:
- -
-
-
书籍作者:
- -
-
-
书籍分类:
- -
-
-
最新章节:
- -
-
-
简介内容:
- -
-
-
封面链接:
- -
-
-
详情链接:
- -
-
书籍详情规则
-
-
页面处理:
- -
-
-
书籍名称:
- -
-
-
书籍作者:
- -
-
-
书籍分类:
- -
-
-
最新章节:
- -
-
-
简介内容:
- -
-
-
封面链接:
- -
-
-
目录链接:
- -
-
目录列表规则
-
-
目录翻页:
- -
-
-
目录列表:
- -
-
-
章节名称:
- -
-
-
章节链接:
- -
-
正文阅读规则
-
-
章节正文:
- -
-
-
正文翻页:
- -
-
其它规则
-
-
浏览标识:
- -
-
-
排序编号:
- -
-
-
搜索权重:
- -
-
-
是否启用:
- +
+
+
+
基本
+
+
源URL :
+ +
+
+
源类型 :
+ +
+
+
源名称 :
+ +
+
+
源分组 :
+ +
+
+
登录地址:
+ +
+
+
链接验证:
+ +
+
+
请求头 :
+ +
+

+
搜索
+
+
搜索地址:
+ +
+
+
列表规则:
+ +
+
+
书名规则:
+ +
+
+
作者规则:
+ +
+
+
分类规则:
+ +
+
+
字数规则:
+ +
+
+
最新章节:
+ +
+
+
简介规则:
+ +
+
+
封面规则:
+ +
+
+
详情地址:
+ +
+

+
发现
+
+
发现地址:
+ +
+
+
列表规则:
+ +
+
+
书名规则:
+ +
+
+
作者规则:
+ +
+
+
分类规则:
+ +
+
+
字数规则:
+ +
+
+
最新章节:
+ +
+
+
简介规则:
+ +
+
+
封面规则:
+ +
+
+
详情地址:
+ +
+

+
详情
+
+
预处理 :
+ +
+
+
书名规则:
+ +
+
+
作者规则:
+ +
+
+
分类规则:
+ +
+
+
字数规则:
+ +
+
+
最新章节:
+ +
+
+
简介规则:
+ +
+
+
封面规则:
+ +
+
+
目录地址:
+ +
+

+
目录
+
+
列表规则:
+ +
+
+
章节名称:
+ +
+
+
章节地址:
+ +
+
+
收费标识:
+ +
+
+
章节信息:
+ +
+
+
翻页规则:
+ +
+

+
正文
+
+
正文规则:
+ +
+
+
翻页规则:
+ +
+
+
脚本注入:
+ +
+
+
资源正则:
+ +
+

+
其它规则
+
+
启用搜索:
+ +
+
+
启用发现:
+ +
+
+
搜索权重:
+ +
+
+
排序编号:
+ +
+
+
更新时间:
+ +
-
- -
-
-
-
编辑书源
-
调试书源
-
书源列表
-
帮助信息
-
-
-
- -
-
- - -
-
-
- - - - + +
+
+
+
编辑书源
+
调试书源
+
书源列表
+
帮助信息
+
+
+
+ +
+
+ + +
+
+
+ + + + +
+
-
-
-
-
-
- + \ No newline at end of file diff --git a/app/src/main/assets/web/index.js b/app/src/main/assets/web/index.js index 9463800ce..815d2e7dd 100644 --- a/app/src/main/assets/web/index.js +++ b/app/src/main/assets/web/index.js @@ -20,11 +20,40 @@ function hashParam(key, val) { // 创建书源规则容器对象 const RuleJSON = (() => { let ruleJson = {}; - $$('.rules textarea').forEach(item => ruleJson[item.id] = ''); -// for (let item of $$('.rules textarea')) ruleJson[item.id] = ''; - ruleJson.serialNumber = 0; + let searchJson = {}; + let exploreJson = {}; + let bookInfoJson = {}; + let tocJson = {}; + let contentJson = {}; + + // 基本以及其他 + $$('.rules .base').forEach(item => ruleJson[item.title] = ''); + ruleJson.lastUpdateTime = 0; + ruleJson.customOrder = 0; ruleJson.weight = 0; - ruleJson.enable = true; + ruleJson.enabled = true; + ruleJson.enabledExplore = true; + + // 搜索规则 + $$('.rules .ruleSearch').forEach(item => searchJson[item.title] = ''); + ruleJson.ruleSearch = JSON.stringify(searchJson); + + // 发现规则 + $$('.rules .ruleExplore').forEach(item => exploreJson[item.title] = ''); + ruleJson.ruleExplore = JSON.stringify(exploreJson); + + // 详情页规则 + $$('.rules .ruleBookInfo').forEach(item => bookInfoJson[item.title] = ''); + ruleJson.ruleBookInfo = JSON.stringify(bookInfoJson); + + // 目录规则 + $$('.rules .ruleToc').forEach(item => tocJson[item.title] = ''); + ruleJson.ruleToc = JSON.stringify(tocJson); + + // 正文规则 + $$('.rules .ruleContent').forEach(item => contentJson[item.title] = ''); + ruleJson.ruleContent = JSON.stringify(contentJson); + return ruleJson; })(); // 选项卡Tab切换事件处理 @@ -72,15 +101,113 @@ function HttpPost(url, data) { } // 将书源表单转化为书源对象 function rule2json() { - Object.keys(RuleJSON).forEach((key) => RuleJSON[key] = $('#' + key).value); - RuleJSON.serialNumber = RuleJSON.serialNumber == '' ? 0 : parseInt(RuleJSON.serialNumber); + // 转换base + Object.keys(RuleJSON).forEach(key => { + if (!key.startsWith("rule")) { + RuleJSON[key] = $('#' + key).value; + } + }); + + // 转换搜索规则 + let searchJson = {}; + Object.keys(JSON.parse(RuleJSON.ruleSearch)).forEach(key => { + searchJson[key] = $('#' + 'ruleSearch_' + key).value; + }); + RuleJSON.ruleSearch = JSON.stringify(searchJson); + + // 转换发现规则 + let exploreJson = {}; + Object.keys(JSON.parse(RuleJSON.ruleExplore)).forEach(key => { + exploreJson[key] = $('#' + 'ruleExplore_' + key).value; + }); + RuleJSON.ruleExplore = JSON.stringify(exploreJson); + + // 转换详情页规则 + let bookInfoJson = {}; + Object.keys(JSON.parse(RuleJSON.ruleBookInfo)).forEach(key => { + bookInfoJson[key] = $('#' + 'ruleBookInfo_' + key).value; + }); + RuleJSON.ruleBookInfo = JSON.stringify(bookInfoJson); + + // 转换目录规则 + let tocJson = {}; + Object.keys(JSON.parse(RuleJSON.ruleToc)).forEach(key => { + tocJson[key] = $('#' + 'ruleToc_' + key).value; + }); + RuleJSON.ruleToc = JSON.stringify(tocJson); + + // 转换正文规则 + let contentJson = {}; + Object.keys(JSON.parse(RuleJSON.ruleContent)).forEach(key => { + contentJson[key] = $('#' + 'ruleContent_' + key).value; + }); + RuleJSON.ruleContent = JSON.stringify(contentJson); + + RuleJSON.lastUpdateTime = RuleJSON.lastUpdateTime == '' ? 0 : parseInt(RuleJSON.lastUpdateTime); + RuleJSON.customOrder = RuleJSON.customOrder == '' ? 0 : parseInt(RuleJSON.customOrder); RuleJSON.weight = RuleJSON.weight == '' ? 0 : parseInt(RuleJSON.weight); - RuleJSON.enable = RuleJSON.enable == '' || RuleJSON.enable.toLocaleLowerCase().replace(/^\s*|\s*$/g, '') == 'true'; + RuleJSON.bookSourceType == RuleJSON.bookSourceType == '' ? 0 : parseInt(RuleJSON.weight); + RuleJSON.enabled = RuleJSON.enabled == '' || String(RuleJSON.enabled).toLocaleLowerCase().replace(/^\s*|\s*$/g, '') == 'true'; + RuleJSON.enabledExplore = RuleJSON.enabledExplore == '' || String(RuleJSON.enabledExplore).toLocaleLowerCase().replace(/^\s*|\s*$/g, '') == 'true'; return RuleJSON; } // 将书源对象填充到书源表单 function json2rule(RuleEditor) { - Object.keys(RuleJSON).forEach((key) => $("#" + key).value = RuleEditor[key] ? RuleEditor[key] : ''); + // 转换base + Object.keys(RuleJSON).forEach(key => { + if (!key.startsWith("rule")) { + let val = RuleEditor[key]; + if (typeof val == "number") { + $("#" + key).value = val ? String(val) : '0'; + } + else if (typeof val == "boolean") { + $("#" + key).value = val ? String(val) : 'false'; + } + else { + $("#" + key).value = val ? String(val) : ''; + } + } + }); + + // 转换搜索规则 + if (RuleEditor.ruleSearch) { + let searchJson = JSON.parse(RuleEditor.ruleSearch); + Object.keys(JSON.parse(RuleJSON.ruleSearch)).forEach(key => { + $('#' + 'ruleSearch_' + key).value = searchJson[key] ? searchJson[key] : ''; + }); + } + + // 转换发现规则 + if (RuleEditor.ruleExplore) { + let exploreJson = JSON.parse(RuleEditor.ruleExplore); + Object.keys(JSON.parse(RuleJSON.ruleExplore)).forEach(key => { + $('#' + 'ruleExplore_' + key).value = exploreJson[key] ? exploreJson[key] : ''; + }); + } + + // 转换详情页规则 + if (RuleEditor.ruleBookInfo) { + let bookInfoJson = JSON.parse(RuleEditor.ruleBookInfo); + Object.keys(JSON.parse(RuleJSON.ruleBookInfo)).forEach(key => { + $('#' + 'ruleBookInfo_' + key).value = bookInfoJson[key] ? bookInfoJson[key] : ''; + }); + } + + // 转换目录规则 + if (RuleEditor.ruleToc) { + let tocJson = JSON.parse(RuleEditor.ruleToc); + Object.keys(JSON.parse(RuleJSON.ruleToc)).forEach(key => { + $('#' + 'ruleToc_' + key).value = tocJson[key] ? tocJson[key] : ''; + }); + } + + // 转换正文规则 + if (RuleEditor.ruleContent) { + let contentJson = JSON.parse(RuleEditor.ruleContent); + Object.keys(JSON.parse(RuleJSON.ruleContent)).forEach(key => { + $('#' + 'ruleContent_' + key).value = contentJson[key] ? contentJson[key] : ''; + }); + } } // 记录操作过程 var course = { "old": [], "now": {}, "new": [] }; @@ -153,16 +280,16 @@ $('.menu').addEventListener('click', e => { }); failMsg = '\n推送失败的书源将用红色字体标注!'; } - alert(`批量推送书源到「阅读APP」\n共计: ${RuleSources.length} 条\n成功: ${okData.length} 条\n失败: ${RuleSources.length - okData.length} 条${failMsg}`); + alert(`批量推送书源到「阅读3.0APP」\n共计: ${RuleSources.length} 条\n成功: ${okData.length} 条\n失败: ${RuleSources.length - okData.length} 条${failMsg}`); } else { - alert(`批量推送书源到「阅读APP」成功!\n共计: ${RuleSources.length} 条`); + alert(`批量推送书源到「阅读3.0APP」成功!\n共计: ${RuleSources.length} 条`); } } else { alert(`批量推送书源失败!\nErrorMsg: ${json.errorMsg}`); } - }).catch(err => { alert(`批量推送书源失败,无法连接到「阅读APP」!\n${err}`); }); + }).catch(err => { alert(`批量推送书源失败,无法连接到「阅读3.0APP」!\n${err}`); }); thisNode.setAttribute('class', ''); })(); return; @@ -181,7 +308,7 @@ $('.menu').addEventListener('click', e => { else { alert(`批量拉取书源失败!\nErrorMsg: ${json.errorMsg}`); } - }).catch(err => { alert(`批量拉取书源失败,无法连接到「阅读APP」!\n${err}`); }); + }).catch(err => { alert(`批量拉取书源失败,无法连接到「阅读3.0APP」!\n${err}`); }); thisNode.setAttribute('class', ''); })(); return; @@ -244,9 +371,9 @@ $('.menu').addEventListener('click', e => { (async () => { let saveRule = [rule2json()]; await HttpPost(`/saveSources`, saveRule).then(json => { - alert(json.isSuccess ? `书源《${saveRule[0].bookSourceName}》已成功保存到「阅读APP」` : `书源《${saveRule[0].bookSourceName}》保存失败!\nErrorMsg: ${json.errorMsg}`); + alert(json.isSuccess ? `书源《${saveRule[0].bookSourceName}》已成功保存到「阅读3.0APP」` : `书源《${saveRule[0].bookSourceName}》保存失败!\nErrorMsg: ${json.errorMsg}`); setRule(saveRule[0]); - }).catch(err => { alert(`保存书源失败,无法连接到「阅读APP」!\n${err}`); }); + }).catch(err => { alert(`保存书源失败,无法连接到「阅读3.0APP」!\n${err}`); }); thisNode.setAttribute('class', ''); })(); return; @@ -348,7 +475,7 @@ $('.tab3>.titlebar').addEventListener('click', e => { console.log(deleteSources); console.log(`以上书源已删除!`) } - }).catch(err => { alert(`删除书源失败,无法连接到「阅读APP」!\n${err}`); }); + }).catch(err => { alert(`删除书源失败,无法连接到「阅读3.0APP」!\n${err}`); }); } break; case 'ClrAll':