diff --git a/app/src/main/assets/web/source/css/app.83214410.css b/app/src/main/assets/web/source/css/app.a59a93ff.css
similarity index 96%
rename from app/src/main/assets/web/source/css/app.83214410.css
rename to app/src/main/assets/web/source/css/app.a59a93ff.css
index 1e3ec7851..917a2a623 100644
--- a/app/src/main/assets/web/source/css/app.83214410.css
+++ b/app/src/main/assets/web/source/css/app.a59a93ff.css
@@ -1 +1 @@
-.editor{display:flex;align-items:stretch;height:100vh}.left{width:calc(50% - 55px);min-width:500px;display:inline-block}.main{width:100%;height:calc(100vh - 64px);overflow-y:auto}textarea{min-height:20px;flex:1;outline:none;border-radius:4px;border:1px solid #ccc;font-size:14px;font-family:Cascadia,Microsoft YaHei UI,Arial,serif;line-height:20px;padding:10px 10px 10px}.fixed[data-v-ab8a8a34]{position:fixed;top:100px;left:50%;transform:translateX(-50%)}.half-circle-spinner [data-v-ab8a8a34],.half-circle-spinner[data-v-ab8a8a34]{box-sizing:border-box}.half-circle-spinner[data-v-ab8a8a34]{width:60px;height:60px;border-radius:100%;position:relative}.half-circle-spinner .circle[data-v-ab8a8a34]{content:"";position:absolute;width:100%;height:100%;border-radius:100%;border:6px solid transparent}.half-circle-spinner .circle.circle-1[data-v-ab8a8a34]{border-top-color:#ff1d5e;-webkit-animation:half-circle-spinner-animation-ab8a8a34 1s infinite;animation:half-circle-spinner-animation-ab8a8a34 1s infinite}.half-circle-spinner .circle.circle-2[data-v-ab8a8a34]{border-bottom-color:#ff1d5e;-webkit-animation:half-circle-spinner-animation-ab8a8a34 1s infinite alternate;animation:half-circle-spinner-animation-ab8a8a34 1s infinite alternate}@-webkit-keyframes half-circle-spinner-animation-ab8a8a34{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes half-circle-spinner-animation-ab8a8a34{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.warm[data-v-27eae50d]{position:fixed;top:100px;left:50%;transform:translateX(-50%);color:#eee;background-color:#ff1d5e;padding:20px;border-radius:8px;font-size:18px}button[data-v-27eae50d]{float:right;width:70px;height:35px;outline:none;border:unset;border-radius:8px;font-size:14px;transition:background-color .3s ease}.success[data-v-bef92f74],button[data-v-27eae50d]:hover{color:#333;background-color:#7fffd4}.success[data-v-bef92f74]{z-index:3;position:fixed;top:100px;left:50%;transform:translateX(-50%);padding:10px;border-radius:8px}p[data-v-bef92f74]{margin:0}.menu{display:flex;flex-direction:column;justify-content:center}button[data-v-5c287c97]{width:100px;height:50px;margin:5px;outline:none;padding:10px;font-size:16px;border-radius:4px;box-sizing:border-box;border:1px solid #333;background-color:transparent;transition:all .3s ease;overflow:hidden}button span[data-v-5c287c97]{display:inline-block;transform:translateY(20px);opacity:0;font-size:12px;transition:all .3s ease}button[data-v-5c287c97]:hover{color:#fff;background-color:gray}button:hover span[data-v-5c287c97]{transform:translateY(0);opacity:1}textarea[data-v-554d8227]{font-size:14px}input[data-v-28b882dd]{outline:none;height:25px;font-size:16px}textarea[data-v-28b882dd]{font-size:14px}.search[data-v-5570960e]{border:1px solid #ddd;border-radius:4px}input[data-v-5570960e]{text-align:center;font-size:16px;height:25px;outline:none}.tool[data-v-5570960e]{display:flex;justify-content:space-around;padding:4px 0}.tool button[data-v-5570960e]{border-radius:4px;padding:5px;outline:none;border:none;flex:1;margin:0 2px}.tool button[data-v-5570960e]:hover{background-color:#ddd}input[type=checkbox][data-v-5570960e]{transform:scale(2);margin:0 15px 0}.book_item[data-v-5570960e]{overflow:hidden;display:flex;align-items:center;margin-top:10px;padding:10px;cursor:pointer;background-color:#eee}.book_active[data-v-5570960e]{background-color:#32cd32}.book_index[data-v-5570960e]{width:auto;height:30px;text-align:center;line-height:30px;border-radius:8px;padding:0 10px;background-color:#ffb6c1}.book_info[data-v-5570960e]{display:flex;justify-content:space-between}.source_list[data-v-5570960e]{height:calc(100vh - 125px);overflow-y:auto}a[data-v-7ac1e65e]{display:block;height:25px;transition:margin-left .3s ease}a[data-v-7ac1e65e]:hover{color:red;margin-left:10px}code[data-v-7ac1e65e]{display:inline-block;font-size:16px;font-family:Cascadia Mono,JetBrains Mono,Microsoft YaHei UI,serif;background-color:#f3f4f4;border-radius:4px}.author[data-v-7ac1e65e]{position:fixed;right:20px;bottom:20px}.author a[data-v-7ac1e65e]{padding:5px 10px;border-radius:4px}.author a[data-v-7ac1e65e]:hover{box-shadow:0 0 3px 3px #ccc;background-color:#ddd}.out{min-width:620px}.out,.out .box{flex:1;display:flex;flex-flow:column}span[data-v-b51d440e]{display:flex;justify-content:space-around;width:70px;white-space:nowrap}span i[data-v-b51d440e]{font-style:normal}.edit_input[data-v-b51d440e]{display:flex;justify-content:space-between;align-items:center;margin:10px 5px}a{text-decoration:none;color:#333}body,ul{margin:0;padding:0}ul{width:100%;height:40px;display:flex}ul li{display:block;text-align:center;line-height:40px;width:16%;list-style:none;cursor:pointer}ul li:hover{color:red}.active{color:#fff!important;background-color:hsla(0,0%,50%,.459);border-bottom:unset!important}ul li[data-v-06282bdf]{border-bottom:2px solid #333}a[data-v-06282bdf]{font-size:18px;color:blue}
\ No newline at end of file
+.editor{display:flex;align-items:stretch;height:100vh}.left{width:calc(50% - 55px);min-width:500px;display:inline-block}.main{width:100%;height:calc(100vh - 64px);overflow-y:auto}textarea{min-height:20px;flex:1;outline:none;border-radius:4px;border:1px solid #ccc;font-size:14px;font-family:Cascadia,Microsoft YaHei UI,Arial,serif;line-height:20px;padding:10px 10px 10px}.fixed[data-v-ab8a8a34]{position:fixed;top:100px;left:50%;transform:translateX(-50%)}.half-circle-spinner [data-v-ab8a8a34],.half-circle-spinner[data-v-ab8a8a34]{box-sizing:border-box}.half-circle-spinner[data-v-ab8a8a34]{width:60px;height:60px;border-radius:100%;position:relative}.half-circle-spinner .circle[data-v-ab8a8a34]{content:"";position:absolute;width:100%;height:100%;border-radius:100%;border:6px solid transparent}.half-circle-spinner .circle.circle-1[data-v-ab8a8a34]{border-top-color:#ff1d5e;-webkit-animation:half-circle-spinner-animation-ab8a8a34 1s infinite;animation:half-circle-spinner-animation-ab8a8a34 1s infinite}.half-circle-spinner .circle.circle-2[data-v-ab8a8a34]{border-bottom-color:#ff1d5e;-webkit-animation:half-circle-spinner-animation-ab8a8a34 1s infinite alternate;animation:half-circle-spinner-animation-ab8a8a34 1s infinite alternate}@-webkit-keyframes half-circle-spinner-animation-ab8a8a34{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes half-circle-spinner-animation-ab8a8a34{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.warm[data-v-27eae50d]{position:fixed;top:100px;left:50%;transform:translateX(-50%);color:#eee;background-color:#ff1d5e;padding:20px;border-radius:8px;font-size:18px}button[data-v-27eae50d]{float:right;width:70px;height:35px;outline:none;border:unset;border-radius:8px;font-size:14px;transition:background-color .3s ease}.success[data-v-bef92f74],button[data-v-27eae50d]:hover{color:#333;background-color:#7fffd4}.success[data-v-bef92f74]{z-index:3;position:fixed;top:100px;left:50%;transform:translateX(-50%);padding:10px;border-radius:8px}p[data-v-bef92f74]{margin:0}.menu{display:flex;flex-direction:column;justify-content:center}button[data-v-5c287c97]{width:100px;height:50px;margin:5px;outline:none;padding:10px;font-size:16px;border-radius:4px;box-sizing:border-box;border:1px solid #333;background-color:transparent;transition:all .3s ease;overflow:hidden}button span[data-v-5c287c97]{display:inline-block;transform:translateY(20px);opacity:0;font-size:12px;transition:all .3s ease}button[data-v-5c287c97]:hover{color:#fff;background-color:gray}button:hover span[data-v-5c287c97]{transform:translateY(0);opacity:1}textarea[data-v-554d8227]{font-size:14px}input[data-v-28b882dd]{outline:none;height:25px;font-size:16px}textarea[data-v-28b882dd]{font-size:14px}.search[data-v-5570960e]{border:1px solid #ddd;border-radius:4px}input[data-v-5570960e]{text-align:center;font-size:16px;height:25px;outline:none}.tool[data-v-5570960e]{display:flex;justify-content:space-around;padding:4px 0}.tool button[data-v-5570960e]{border-radius:4px;padding:5px;outline:none;border:none;flex:1;margin:0 2px}.tool button[data-v-5570960e]:hover{background-color:#ddd}input[type=checkbox][data-v-5570960e]{transform:scale(2);margin:0 15px 0}.book_item[data-v-5570960e]{overflow:hidden;display:flex;align-items:center;margin-top:10px;padding:10px;cursor:pointer;background-color:#eee}.book_active[data-v-5570960e]{background-color:#32cd32}.book_index[data-v-5570960e]{width:auto;height:30px;text-align:center;line-height:30px;border-radius:8px;padding:0 10px;background-color:#ffb6c1}.book_info[data-v-5570960e]{display:flex;justify-content:space-between}.source_list[data-v-5570960e]{height:calc(100vh - 125px);overflow-y:auto}a[data-v-7ac1e65e]{display:block;height:25px;transition:margin-left .3s ease}a[data-v-7ac1e65e]:hover{color:red;margin-left:10px}code[data-v-7ac1e65e]{display:inline-block;font-size:16px;font-family:Cascadia Mono,JetBrains Mono,Microsoft YaHei UI,serif;background-color:#f3f4f4;border-radius:4px}.author[data-v-7ac1e65e]{position:fixed;right:20px;bottom:20px}.author a[data-v-7ac1e65e]{padding:5px 10px;border-radius:4px}.author a[data-v-7ac1e65e]:hover{box-shadow:0 0 3px 3px #ccc;background-color:#ddd}.out{min-width:620px}.out,.out .box{flex:1;display:flex;flex-flow:column}span[data-v-71f7a932]{display:flex;justify-content:space-around;width:70px;white-space:nowrap}span i[data-v-71f7a932]{font-style:normal}.edit_input[data-v-71f7a932]{display:flex;justify-content:space-between;align-items:center;margin:10px 5px}a{text-decoration:none;color:#333}body,ul{margin:0;padding:0}ul{width:100%;height:40px;display:flex}ul li{display:block;text-align:center;line-height:40px;width:16%;list-style:none;cursor:pointer}ul li:hover{color:red}.active{color:#fff!important;background-color:hsla(0,0%,50%,.459);border-bottom:unset!important}ul li[data-v-06282bdf]{border-bottom:2px solid #333}a[data-v-06282bdf]{font-size:18px;color:blue}
\ No newline at end of file
diff --git a/app/src/main/assets/web/source/index.html b/app/src/main/assets/web/source/index.html
index 7cd18d4e8..f791aaf59 100644
--- a/app/src/main/assets/web/source/index.html
+++ b/app/src/main/assets/web/source/index.html
@@ -1 +1 @@
-
legado_web_source_editor
\ No newline at end of file
+legado_web_source_editor
\ No newline at end of file
diff --git a/app/src/main/assets/web/source/js/app.240ee310.js b/app/src/main/assets/web/source/js/app.240ee310.js
new file mode 100644
index 000000000..23eebb452
--- /dev/null
+++ b/app/src/main/assets/web/source/js/app.240ee310.js
@@ -0,0 +1 @@
+(function(){"use strict";var e={586:function(e,t,r){var o=r(9963),n=r(6252);const i={class:"editor"};function l(e,t,r,o,l,a){const c=(0,n.up)("router-view");return(0,n.wg)(),(0,n.iD)("div",i,[(0,n.Wm)(c)])}var a={setup(){}},c=r(3744);const s=(0,c.Z)(a,[["render",l]]);var u=s,d=r(2201),h=r(3577);const p=e=>((0,n.dD)("data-v-06282bdf"),e=e(),(0,n.Cn)(),e),g={class:"left"},S=p((()=>(0,n._)("a",{href:"/"},"←主页",-1))),w=["onClick"];function y(e,t,r,o,i,l){const a=(0,n.up)("edit-input-list"),c=(0,n.up)("edit-menu"),s=(0,n.up)("edit-out");return(0,n.wg)(),(0,n.iD)(n.HY,null,[(0,n._)("div",g,[(0,n._)("div",null,[(0,n._)("div",null,[S,(0,n._)("b",null,(0,h.zw)(e.title),1)]),(0,n._)("ul",null,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(Object.entries(e.config),(([t,r])=>((0,n.wg)(),(0,n.iD)("li",{onClick:e=>o.changeSelectTabKey(t),key:t,class:(0,h.C_)(t===e.selectTabKey?"active":"")},(0,h.zw)(r.name),11,w)))),128))])]),(0,n.Wm)(a,{data:o.currentTabData},null,8,["data"])]),(0,n.Wm)(c),(0,n.Wm)(s)],64)}var m=r(2262);r(7658);const v=e=>((0,n.dD)("data-v-5c287c97"),e=e(),(0,n.Cn)(),e),b={class:"menu"},f=(0,n.Uk)("⇈推送源 "),_=v((()=>(0,n._)("span",null,"Ctrl+P",-1))),k=[f,_],C=(0,n.Uk)("⇊拉取源 "),U=v((()=>(0,n._)("span",null,"Shift+P",-1))),T=[C,U],x=(0,n.Uk)(" ⋙生成源"),D=v((()=>(0,n._)("span",null,"Ctrl+E",-1))),N=[x,D],I=(0,n.Uk)(" ⋘编辑源"),B=v((()=>(0,n._)("span",null,"Shift+E",-1))),E=[I,B],K=(0,n.Uk)(" ✗清空表单"),L=v((()=>(0,n._)("span",null,"Shift+C",-1))),R=[K,L],A=(0,n.Uk)("↶撤销操作"),O=v((()=>(0,n._)("span",null,"Ctrl+Z",-1))),H=[A,O],j=(0,n.Uk)("↷重做操作"),J=v((()=>(0,n._)("span",null,"Shift+R",-1))),P=[j,J],$=(0,n.Uk)(" ⇏调试源 "),M=v((()=>(0,n._)("span",null,"Ctrl+Enter",-1))),q=[$,M],Z=(0,n.Uk)(" ✓保存源"),z=v((()=>(0,n._)("span",null,"Ctrl+S",-1))),W=[Z,z];function F(e,t,r,o,i,l){const a=(0,n.up)("edit-loading"),c=(0,n.up)("edit-warn"),s=(0,n.up)("edit-success");return(0,n.wg)(),(0,n.iD)("div",b,[(0,n._)("div",null,[o.showLoading?((0,n.wg)(),(0,n.j4)(a,{key:0})):(0,n.kq)("",!0),(0,n.Wm)(c,{text:o.warnText,"is-show":o.warnShow,onChangeShow:o.changeShow},null,8,["text","is-show","onChangeShow"]),o.successShow?((0,n.wg)(),(0,n.j4)(s,{key:1,isShow:o.successShow,onChangeShow:o.changeSuccessShow,text:o.successText},null,8,["isShow","onChangeShow","text"])):(0,n.kq)("",!0)]),(0,n._)("button",{onClick:t[0]||(t[0]=(...e)=>o.push&&o.push(...e)),title:"Ctrl+P"},k),(0,n._)("button",{onClick:t[1]||(t[1]=(...e)=>o.pull&&o.pull(...e)),title:"Shift+P"},T),(0,n._)("button",{onClick:t[2]||(t[2]=(...e)=>o.conver2Tab&&o.conver2Tab(...e)),title:"Ctrl+E"},N),(0,n._)("button",{onClick:t[3]||(t[3]=(...e)=>o.conver2Source&&o.conver2Source(...e)),title:"Shift+E"},E),(0,n._)("button",{onClick:t[4]||(t[4]=(...e)=>o.clearEdit&&o.clearEdit(...e)),title:"Shift+C"},R),(0,n._)("button",{onClick:t[5]||(t[5]=(...e)=>o.undo&&o.undo(...e)),title:"Ctrl+Z"},H),(0,n._)("button",{onClick:t[6]||(t[6]=(...e)=>o.redo&&o.redo(...e)),title:"Shift+R"},P),(0,n._)("button",{onClick:t[7]||(t[7]=(...e)=>o.debug&&o.debug(...e)),title:"Ctrl+Enter"},q),(0,n._)("button",{onClick:t[8]||(t[8]=(...e)=>o.saveSource&&o.saveSource(...e)),title:"Ctrl+S"},W)])}function V(e,t){return fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}).then((e=>e.json()))}function Y(e){return fetch(e).then((e=>e.json()))}function G(e,t=!0){let r=/bookSource/.test(location.href),o=`http://${localStorage.getItem("url")||location.host}/`,n=r?"BookSource":"RssSource";return`${o}${e}${n}${t?"s":""}`}function Q(){return Y(G("get"))}function X(e){return V(G("save"),e)}function ee(e){return V(G("save",!1),e)}function te(e){return V(G("delete"),e)}var re=r(3907),oe=(0,re.MT)({state:{url:localStorage.getItem("url")||"",bookSources:[],rssSources:[],currentSource:{},currentTab:localStorage.getItem("tabName")||"editTab",editTabSource:{},deBugMsg:"",searchKey:""},getters:{},mutations:{changeSearchKey(e,t){e.searchKey=t},saveSources(e,t){/bookSource/.test(location.href)?e.bookSources=t:e.rssSources=t},saveCurrentSource(e){let t,r,o=e.currentSource;/bookSource/.test(location.href)?(o=e.bookSources,r="bookSourceUrl"):(o=e.rssSources,r="sourceUrl");let n=t.findIndex((e=>e[r]===o[r]));n>-1?t.splice(n,1,o):t.push(o)},changeCurrentSource(e,t){const r=JSON.stringify(t);e.currentSource=JSON.parse(r)},changeCurrentSourceValue(e,t){let r=t.value,o={true:!0,false:!1};if("Boolean"===t.type&&(r=o[r]||r),"Number"===t.type&&(r=Number(r)||r),t.key.includes("_")){let o=t.key.split("_")[0],n=t.key.split("_")[1],i={};i[n]=r,e.currentSource[o]=Object.assign(e.currentSource[o]||{},i)}else e.currentSource[t.key]=r;e.currentSource.lastUpdateTime=(new Date).getTime()},changeTabName(e,t){e.currentTab=t,localStorage.setItem("tabName",t),console.log(t)},changeEditTabSource(e,t){const r=JSON.stringify(t);e.editTabSource=JSON.parse(r)},editHistory(e,t){let r;if(localStorage.getItem("history"))r=JSON.parse(localStorage.getItem("history")),r.new.push(t),r.new.length>50&&r.new.shift(),r.old.length>50&&r.old.shift(),localStorage.setItem("history",JSON.stringify(r));else{const e={new:[t],old:[]};localStorage.setItem("history",JSON.stringify(e))}},editHistoryUndo(e){if(localStorage.getItem("history")){let t=JSON.parse(localStorage.getItem("history"));t.old.push(e.currentSource),t.new.length&&(e.currentSource=t.new.pop()),localStorage.setItem("history",JSON.stringify(t))}},clearAllHistory(){localStorage.setItem("history",JSON.stringify({new:[],old:[]}))},clearEdit(e){e.editTabSource={},e.currentSource={}},appendDeBugMsg(e,t){let r=document.querySelector("#debug_text");r.scrollTop=r.scrollHeight,e.deBugMsg+=t+"\n"},clearDeBugMsg(e){e.deBugMsg=""},clearAllSource(e){e.bookSources=[],e.rssSources=[]}},actions:{},modules:{}});const ne=e=>((0,n.dD)("data-v-ab8a8a34"),e=e(),(0,n.Cn)(),e),ie={class:"fixed"},le=ne((()=>(0,n._)("div",{class:"half-circle-spinner"},[(0,n._)("div",{class:"circle circle-1"}),(0,n._)("div",{class:"circle circle-2"})],-1))),ae=[le];function ce(e,t,r,o,i,l){return(0,n.wg)(),(0,n.iD)("div",ie,ae)}var se={name:"editLoading"};const ue=(0,c.Z)(se,[["render",ce],["__scopeId","data-v-ab8a8a34"]]);var de=ue;const he={key:0,class:"warm"};function pe(e,t,r,o,i,l){return r.isShow?((0,n.wg)(),(0,n.iD)("div",he,[(0,n._)("p",null,(0,h.zw)(r.text),1),(0,n._)("div",null,[(0,n._)("button",{onClick:t[0]||(t[0]=(...e)=>o.changeShow&&o.changeShow(...e))},"关闭")])])):(0,n.kq)("",!0)}var ge={name:"editWarm",props:{isShow:{default:!1,type:Boolean},text:{type:String,default:""}},setup(e,{emit:t}){const r=()=>{t("changeShow",!e.isShow)};return{changeShow:r}}};const Se=(0,c.Z)(ge,[["render",pe],["__scopeId","data-v-27eae50d"]]);var we=Se;const ye={class:"success"};function me(e,t,r,o,i,l){return(0,n.wg)(),(0,n.iD)("div",ye,[(0,n._)("p",null,(0,h.zw)(r.text),1)])}var ve={props:{text:{type:String,default:""},isShow:{type:Boolean,default:!1}},emits:["changeShow"],setup(e,{emit:t}){return setTimeout((()=>{t("changeShow",!e.isShow)}),3e3),{}}};const be=(0,c.Z)(ve,[["render",me],["__scopeId","data-v-bef92f74"]]);var fe=be,_e={components:{editLoading:de,editWarn:we,editSuccess:fe},setup(){const e=(0,m.iH)(!1),t=(0,m.iH)(!1),r=(0,m.iH)(""),o=(0,m.iH)(!1),i=(0,m.iH)(""),l=e=>{t.value=e},a=e=>{console.log(e),o.value=e},c=()=>{e.value=!0,Q().then((n=>{e.value=!1,n.isSuccess?(oe.commit("changeTabName","editList"),oe.commit("saveSources",n.data),r.value=`成功拉取${n.data.length}条源`,o.value=!0):(i.value=n.errorMsg,t.value=!0)})).catch((r=>{console.log(r),e.value=!1,i.value=" 请求发生了错误,请检查你的后端地址,填写是否正确,或者 阅读APP\n确认开启web服务",t.value=!0}))},s=()=>{r.value="正在推送中",o.value=!0,e.value=!0;let n=/bookSource/.test(location.href)?oe.state.bookSources:oe.state.rssSources;X(n).then((l=>{if(l.isSuccess){let e=l.data;if(Array.isArray(e)){let t="";n.length>e.length&&(n.forEach((t=>{e.find((e=>e.bookSourceUrl===t.bookSourceUrl))||console.log(t.bookSourceUrl)})),t="\n推送失败的源将用红色字体标注!"),r.value=`批量推送源到「阅读3.0APP」\n共计: ${n.length} 条\n成功: ${e.length} 条\n失败: ${n.length-e.length} 条${t}`,o.value=!0}else r.value=`批量推送源到「阅读3.0APP」成功!\n共计: ${n.length} 条`,o.value=!0}else i.value=`批量推送源失败!\nErrorMsg: ${l.errorMsg}`,t.value=!0;e.value=!1})).catch((r=>{console.log(r),e.value=!1,t.value=!0,i.value="请求发生了错误,请检查你的后端地址,填写是否正确,或者 阅读APP\n确认开启web服务"}))},u=()=>{oe.commit("changeEditTabSource",oe.state.currentSource),oe.commit("changeTabName","editTab")},d=()=>{oe.commit("changeCurrentSource",oe.state.editTabSource)},h=()=>{oe.commit("editHistoryUndo")},p=()=>{oe.commit("clearEdit"),console.log("已清除"),r.value="已清除",o.value=!0},g=()=>{oe.commit("clearEdit"),oe.commit("clearAllHistory"),r.value="已清除所有历史记录",o.value=!0},S=()=>{let e=/bookSource/.test(location.href),n=oe.state.currentSource;e&&""!==n.bookSourceUrl&&""!==n.bookSourceType&&""!==n.bookSourceName||!e&&""!==n.sourceUrl&&""!==n.sourceName?ee(n).then((l=>{l.isSuccess?(r.value=`源《${e?n.bookSourceName:n.sourceName}》已成功保存到「阅读3.0APP」`,o.value=!0,oe.commit("saveCurrentSource")):(i.value=`源《${e?n.bookSourceName:n.sourceName}》保存失败!\nErrorMsg: ${l.errorMsg}`,t.value=!0)})):(i.value="请检查<必填>项是否全部填写",t.value=!0)},w=()=>{e.value=!0,oe.commit("clearDeBugMsg"),oe.commit("changeTabName","editDebug");let t=/bookSource/.test(location.href),n=oe.state.currentSource;ee(n).then((i=>{console.log(i);let l="ws://"+(localStorage.getItem("url")||location.host).replace(/\d+$/,(e=>parseInt(e)+1))+"/"+(t?"bookSourceDebug":"rssSourceDebug");console.log(l);const a=new WebSocket(l);let c="",s=t?n.bookSourceUrl:n.sourceUrl;t&&(c=n.ruleSearch.checkKeyWord?n.ruleSearch.checkKeyWord:oe.state.searchKey?oe.state.searchKey:"我的"),a.onopen=()=>{a.send(`{"tag":"${s}", "key":"${c}"}`)},a.onmessage=e=>{oe.commit("appendDeBugMsg",e.data)},a.onclose=()=>{e.value=!1,r.value="调试已关闭!",o.value=!0,oe.commit("appendDeBugMsg","调试已关闭!")}}))};return(0,n.bv)((()=>{document.onkeydown=e=>{(e.ctrlKey||e.metaKey)&&"Enter"===e.key&&w(),(e.ctrlKey||e.metaKey)&&"s"===e.key&&(S(),e.preventDefault()),e.shiftKey&&"R"===e.key&&g(),e.shiftKey&&"C"===e.key&&p(),e.ctrlKey&&"e"===e.key&&(u(),e.preventDefault()),e.shiftKey&&"e"===e.key&&(d(),e.preventDefault()),e.shiftKey&&"P"===e.key&&c(),e.ctrlKey&&"p"===e.key&&(s(),e.preventDefault())}})),{debug:w,push:s,pull:c,clearEdit:p,showLoading:e,changeShow:l,warnShow:t,successText:r,changeSuccessShow:a,successShow:o,undo:h,redo:g,conver2Tab:u,conver2Source:d,warnText:i,saveSource:S}}};const ke=(0,c.Z)(_e,[["render",F],["__scopeId","data-v-5c287c97"]]);var Ce=ke;const Ue={class:"out"};function Te(e,t,r,o,i,l){return(0,n.wg)(),(0,n.iD)("div",Ue,[(0,n._)("ul",null,[(0,n._)("li",{class:(0,h.C_)("editTab"===e.current_tab?"active":""),onClick:t[0]||(t[0]=e=>o.handleSetActive("editTab"))}," 编辑源 ",2),(0,n._)("li",{class:(0,h.C_)("editDebug"===e.current_tab?"active":""),onClick:t[1]||(t[1]=e=>o.handleSetActive("editDebug"))}," 调试源 ",2),(0,n._)("li",{class:(0,h.C_)("editList"===e.current_tab?"active":""),onClick:t[2]||(t[2]=e=>o.handleSetActive("editList"))}," 源列表 ",2),(0,n._)("li",{class:(0,h.C_)("editHelp"===e.current_tab?"active":""),onClick:t[3]||(t[3]=e=>o.handleSetActive("editHelp"))}," 帮助信息 ",2)]),((0,n.wg)(),(0,n.j4)(n.Ob,null,[((0,n.wg)(),(0,n.j4)((0,n.LL)(e.current_tab)))],1024))])}function xe(e,t,r,i,l,a){return(0,n.wy)(((0,n.wg)(),(0,n.iD)("textarea",{placeholder:"这里输出序列化的JSON数据,可直接导入'阅读'APP","onUpdate:modelValue":t[0]||(t[0]=t=>e.source=t),onInput:t[1]||(t[1]=(...e)=>i.updateEditSource&&i.updateEditSource(...e))},null,544)),[[o.nr,e.source]])}var De={name:"editTab",setup(){const e=(0,m.qj)({source:""}),t=()=>{oe.commit("changeEditTabSource",JSON.parse(e.source))};return(0,n.m0)((()=>{let t=oe.state.editTabSource;Object.keys(t).length>0?(t.lastUpdateTime=(new Date).getTime(),e.source=JSON.stringify(t,null,4)):e.source=""})),{...(0,m.BK)(e),updateEditSource:t}}};const Ne=(0,c.Z)(De,[["render",xe],["__scopeId","data-v-554d8227"]]);var Ie=Ne;function Be(e,t,r,i,l,a){return(0,n.wg)(),(0,n.iD)(n.HY,null,[i.isBookSource?(0,n.wy)(((0,n.wg)(),(0,n.iD)("input",{key:0,type:"text",style:{"text-align":"center",border:"1px solid #dddddd","border-radius":"4px"},placeholder:"输入搜索关键字,默认搜「我的」","onUpdate:modelValue":t[0]||(t[0]=t=>e.searchKey=t),onInput:t[1]||(t[1]=t=>i.changeSearch(e.searchKey)),onKeydown:t[2]||(t[2]=(0,o.D2)(((...e)=>i.startSearch&&i.startSearch(...e)),["enter"])),title:"输入关键词 enter(回车键)快捷搜索"},null,544)),[[o.nr,e.searchKey]]):(0,n.kq)("",!0),(0,n.wy)((0,n._)("textarea",{placeholder:"这里用于输出调试信息","onUpdate:modelValue":t[3]||(t[3]=t=>e.printDebug=t),ref:"textareaDom",id:"debug_text"},null,512),[[o.nr,e.printDebug]])],64)}var Ee={name:"editDebug",setup(){const e=(0,m.iH)(""),t=(0,m.qj)({printDebug:oe.state.deBugMsg,searchKey:""}),r=e=>{oe.commit("changeSearchKey",e)};(0,n.m0)((()=>{t.printDebug=oe.state.deBugMsg}));const o=()=>{document.querySelectorAll(".menu>button")[6].click()},i=(0,n.Fl)((()=>/bookSource/.test(window.location.href)));return{...(0,m.BK)(t),textareaDom:e,changeSearch:r,startSearch:o,isBookSource:i}}};const Ke=(0,c.Z)(Ee,[["render",Be],["__scopeId","data-v-28b882dd"]]);var Le=Ke;const Re={style:{display:"flex","flex-flow":"column"}},Ae={class:"tool"},Oe={class:"source_list"},He=["value"],je={class:"book_index"},Je=["onClick"],Pe={class:"book_info"},$e={key:0};function Me(e,t,r,i,l,a){return(0,n.wg)(),(0,n.iD)("div",Re,[(0,n.wy)((0,n._)("input",{class:"search",type:"text",placeholder:"输入筛选关键词(源名称、源URL或源分组)输入自动筛选源","onUpdate:modelValue":t[0]||(t[0]=t=>e.searchKey=t),onFocus:t[1]||(t[1]=t=>e.delArr=[])},null,544),[[o.nr,e.searchKey]]),(0,n._)("div",null,[(0,n._)("div",Ae,[(0,n._)("button",{onClick:t[2]||(t[2]=(...e)=>i.upFile&&i.upFile(...e))},"导入书源文件"),(0,n._)("button",{onClick:t[3]||(t[3]=(...e)=>i.outExport&&i.outExport(...e))},"导出书源文件"),(0,n._)("button",{onClick:t[4]||(t[4]=(...e)=>i.deleteActiveSource&&i.deleteActiveSource(...e))},"删除选中源"),(0,n._)("button",{onClick:t[5]||(t[5]=(...e)=>i.clearAllSources&&i.clearAllSources(...e))},"清空列表")]),(0,n._)("div",Oe,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(e.filtedSources,((r,l)=>((0,n.wg)(),(0,n.iD)("div",{key:r.bookSourceUrl||r.sourceUrl,class:(0,h.C_)(["book_item",l===i.currentActive?"book_active":""])},[(0,n.wy)((0,n._)("input",{type:"checkbox",value:l,"onUpdate:modelValue":t[6]||(t[6]=t=>e.delArr=t)},null,8,He),[[o.e8,e.delArr]]),(0,n._)("div",je,(0,h.zw)(l+1),1),(0,n._)("div",{style:{"margin-left":"10px",flex:"1"},onClick:e=>i.handleItemClick(l)},[(0,n._)("div",Pe,[(0,n._)("span",null,(0,h.zw)(r.bookSourceName||r.sourceName),1),i.isBookSource?((0,n.wg)(),(0,n.iD)("span",$e,"最后修改:"+(0,h.zw)(i.formatTime(r.lastUpdateTime)),1)):(0,n.kq)("",!0),(0,n._)("span",null,"分组:"+(0,h.zw)(r.bookSourceGroup||r.sourceGroup||"无分组"),1)]),(0,n._)("div",null,(0,h.zw)(r.bookSourceUrl||r.sourceUrl),1)],8,Je)],2)))),128))])])])}var qe={name:"editList",setup(){let e=(0,m.qj)({searchKey:"",delArr:[],sources:[],filtedSources:[]}),t=(0,m.iH)(null);const r=r=>{t.value=r,oe.commit("clearEdit"),oe.commit("changeCurrentSource",e.filtedSources[r])},o=()=>{oe.commit("clearAllSource")},i=e=>{if(!e)return null;const t=new Date(e),r=t.getFullYear();let o=t.getMonth()+1;o=o<10?"0"+o:o;let n=t.getDate();n=n<10?"0"+n:n;let i=t.getHours();i=i<10?"0"+i:i;let l=t.getMinutes();l=l<10?"0"+l:l;let a=t.getSeconds();return a=a<10?"0"+a:a,r+"-"+o+"-"+n+" "+i+":"+l+":"+a},l=(t,r)=>{if(""===r)return e.sources;let o=/bookSource/.test(location.href);return o?t.filter((e=>e.bookSourceName.toUpperCase().includes(r.toUpperCase())||(e.bookSourceGroup||"").toUpperCase().includes(r.toUpperCase())||e.bookSourceUrl.toUpperCase().includes(r.toUpperCase()))):t.filter((e=>e.sourceName.toUpperCase().includes(r.toUpperCase())||(e.sourceGroup||"").toUpperCase().includes(r.toUpperCase())||e.sourceUrl.toUpperCase().includes(r.toUpperCase())))};(0,n.m0)((()=>{const t=/bookSource/.test(location.href),r=t?oe.state.bookSources:oe.state.rssSources;e.sources=r})),(0,n.m0)((()=>{e.filtedSources=l(e.sources,e.searchKey)}));const a=(0,n.Fl)((()=>/bookSource/.test(window.location.href))),c=()=>{if(0===e.delArr.length)return console.log("没有选中的书源"),!1;const t=[];e.delArr.forEach((r=>{t.push(e.filtedSources[r])})),te(t).then((t=>{t.isSuccess?(console.log("删除成功"),e.delArr.forEach((t=>{let[r]=e.filtedSources.splice(t,1),o=e.sources.indexOf(r);e.sources.splice(o,1)})),e.delArr=[]):console.log("错误",t)}))},s=()=>{const e=document.createElement("input");e.type="file",e.accept=".json",e.addEventListener("change",(e=>{const t=e.target.files[0];var r=new FileReader;r.readAsText(t),r.onload=()=>{const e=JSON.parse(r.result);oe.commit("saveSources",e)}})),e.click()},u=()=>{const e=document.createElement("a");let t=/bookSource/.test(location.href),r=t?oe.state.bookSources:oe.state.rssSources,o=t?"BookSource":"RssSource";e.download=`${o}_${Date().replace(/.*?\s(\d+)\s(\d+)\s(\d+:\d+:\d+).*/,"$2$1$3").replace(/:/g,"")}.json`;let n=new Blob([JSON.stringify(r,null,4)],{type:"application/json"});e.href=window.URL.createObjectURL(n),e.click()};return{currentActive:t,isBookSource:a,deleteActiveSource:c,handleItemClick:r,...(0,m.BK)(e),formatTime:i,clearAllSources:o,upFile:s,outExport:u}}};const Ze=(0,c.Z)(qe,[["render",Me],["__scopeId","data-v-5570960e"]]);var ze=Ze;const We=(0,n.uE)('书源制作教程xpath基础教程xpath高级教程正则表达式教程正则表达式在线验证工具^$()[]{}.?+*|
这些是Java正则特殊符号,匹配需转义
(?s)
前缀表示跨行解析
(?m)
前缀表示逐行匹配
(?i)
前缀表示忽略大小写
',6);function Fe(e,t,r,o,n,i){return We}var Ve={name:"editHelp"};const Ye=(0,c.Z)(Ve,[["render",Fe],["__scopeId","data-v-7ac1e65e"]]);var Ge=Ye,Qe={name:"editOut",components:{editDebug:Le,editTab:Ie,editList:ze,editHelp:Ge},setup(){const e=(0,m.qj)({url:localStorage.getItem("url")||"",current_tab:oe.state.currentTab||"editTab"}),t=e=>{oe.commit("changeTabName",e)},r=e=>{oe.commit("changeUrl",e)};(0,n.m0)((()=>{e.current_tab=oe.state.currentTab}));const o=()=>{document.querySelectorAll(".menu>button")[1].click()};return{...(0,m.BK)(e),handleSetActive:t,changInput:r,pullSource:o}}};const Xe=(0,c.Z)(Qe,[["render",Te]]);var et=Xe;const tt={class:"main"};function rt(e,t,r,o,i,l){const a=(0,n.up)("edit-input");return(0,n.wg)(),(0,n.iD)("div",tt,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(r.data,((e,t)=>((0,n.wg)(),(0,n.j4)(a,{key:t,id:e.id,type:e.type,hint:e.hint,title:e.title,rows:e.rows,content:o.getContent(e.id),onChangeContent:o.upData},null,8,["id","type","hint","title","rows","content","onChangeContent"])))),128))])}const ot=e=>((0,n.dD)("data-v-71f7a932"),e=e(),(0,n.Cn)(),e),nt={class:"edit_input"},it=ot((()=>(0,n._)("i",null,":",-1))),lt=["id","placeholder","rows","value"];function at(e,t,r,o,i,l){return(0,n.wg)(),(0,n.iD)("div",nt,[(0,n._)("span",null,[(0,n.Uk)((0,h.zw)(r.title),1),it]),(0,n._)("textarea",{id:r.id,class:(0,h.C_)(r.type),placeholder:r.hint,rows:r.rows,value:r.content,ref:"attr",onInput:t[0]||(t[0]=(...e)=>o.change&&o.change(...e)),onBlur:t[1]||(t[1]=e=>{o.changeHistory(),o.restoreHeight()}),onFocus:t[2]||(t[2]=(...e)=>o.changeHeight&&o.changeHeight(...e))},null,42,lt)])}var ct={props:{title:{type:String,default:""},rows:{type:Number,default:1},hint:{type:String,default:""},id:{type:String,default:""},type:{type:String,default:"String"},content:{type:[String,Number,Boolean],default:""}},emits:["changeContent"],setup(e,{emit:t}){const r=(0,m.iH)(""),o=()=>{t("changeContent",{value:r.value.value,key:r.value.getAttribute("id"),type:r.value.getAttribute("class")})},i=()=>{localStorage.getItem("history")||localStorage.setItem("history",JSON.stringify({new:[],old:[]}));const e=JSON.parse(localStorage.getItem("history")),t=e.new;if(t.length){const e=r.value.getAttribute("id");if(e.includes("_")||t[t.length-1][e]===oe.state.currentSource[e]){if(e.includes("_")){let r=e.split("_")[0],o=e.split("_")[1];t[t.length-1][r][o]!==oe.state.currentSource[r][o]&&oe.commit("editHistory",oe.state.currentSource)}}else oe.commit("editHistory",oe.state.currentSource)}else oe.commit("editHistory",oe.state.currentSource)},l=()=>r.value.style="",a=()=>{(0,n.Y3)((()=>{let e=r.value;const t=e.scrollHeight,o=e.offsetHeight;o<=t&&(e.style.height="auto",e.style.height=e.scrollHeight+"px")}))};return{changeHistory:i,change:o,attr:r,changeHeight:a,restoreHeight:l}}};const st=(0,c.Z)(ct,[["render",at],["__scopeId","data-v-71f7a932"]]);var ut=st;function dt(){const e=(0,m.qj)({currentSource:oe.state.currentSource}),t=e=>{oe.commit("changeCurrentSourceValue",e)},r=t=>{try{if(t.includes("_")){let r=t.split("_")[0],o=t.split("_")[1],n=e.currentSource[r];return n?n[o]:null}return e.currentSource[t]}catch(r){console.log("导入错误",r.TypeError),oe.commit("clearEdit")}};return(0,n.m0)((()=>{e.currentSource=oe.state.currentSource})),{...(0,m.BK)(e),upData:t,getContent:r}}var ht={name:"editInputList",props:{data:{type:Array,required:!0}},components:{editInput:ut},setup(e){const{upData:t,getContent:r}=dt(),o=(0,m.qj)({data:e.data});return{...(0,m.BK)(o),upData:t,getContent:r}}};const pt=(0,c.Z)(ht,[["render",rt]]);var gt=pt,St={base:{name:"基础",children:[{title:"源域名",rows:1,id:"bookSourceUrl",type:"String",hint:"<必填>通常填写网站主页,例: https://www.qidian.com"},{title:"源类型",rows:1,id:"bookSourceType",type:"Number",hint:"<必填>0:文本 1:音频 2:图片 3:文件(只提供下载的网站)"},{title:"源名称",rows:1,id:"bookSourceName",type:"String",hint:"<必填>会显示在源列表"},{title:"源分组",rows:1,id:"bookSourceGroup",type:"String",hint:"<选填>描述源的特征信息"},{title:"源注释",rows:1,id:"bookSourceComment",type:"String",hint:"<选填>描述源作者和状态"},{title:"书源变量",rows:1,id:"variableComment",type:"String",hint:"<选填>书源变量说明"},{title:"登录地址",rows:1,id:"loginUrl",type:"String",hint:"<选填>填写网站登录网址,仅在需要登录的源有用"},{title:"登录界面",rows:3,id:"loginUi",type:"String",hint:"<选填>自定义登录界面"},{title:"登录检测",rows:3,id:"loginCheckJs",type:"String",hint:"<选填>登录检测js"},{title:"封面解密",rows:3,id:"coverDecodeJs",type:"String",hint:"<选填>封面解密js"},{title:"并发率",rows:1,id:"concurrentRate",type:"String",hint:"<选填>并发率"},{title:"请求头",rows:3,id:"header",type:"String",hint:"<选填>客户端标识"},{title:"链接验证",rows:1,id:"bookUrlPattern",type:"String",hint:"<选填>当详情页URL与源URL的域名不一致时有效,用于添加网址"}]},search:{name:"搜索",children:[{title:"搜索地址",rows:1,id:"searchUrl",type:"String",hint:"[域名可省略]/search.php@kw={{key}}"},{title:"校验文字",rows:1,id:"ruleSearch_checkKeyWord",type:"String",hint:"校验关键字"},{title:"列表规则",rows:1,id:"ruleSearch_bookList",type:"String",hint:"选择书籍节点 (规则结果为List)"},{title:"书名规则",rows:1,id:"ruleSearch_name",type:"String",hint:"选择节点书名 (规则结果为String)"},{title:"作者规则",rows:1,id:"ruleSearch_author",type:"String",hint:"选择节点作者 (规则结果为String)"},{title:"分类规则",rows:1,id:"ruleSearch_kind",type:"String",hint:"选择节点分类信息 (规则结果为String)"},{title:"字数规则",rows:1,id:"ruleSearch_wordCount",type:"String",hint:"选择节点字数信息 (规则结果为String)"},{title:"最新章节",rows:1,id:"ruleSearch_lastChapter",type:"String",hint:"选择节点最新章节 (规则结果为String)"},{title:"简介规则",rows:1,id:"ruleSearch_intro",type:"String",hint:"选择节点书籍简介 (规则结果为String)"},{title:"封面规则",rows:1,id:"ruleSearch_coverUrl",type:"String",hint:"选择节点书籍封面 (规则结果为String类型的url)"},{title:"详情地址",rows:1,id:"ruleSearch_bookUrl",type:"String",hint:"选择书籍详情页网址 (规则结果为String类型的url)"}]},find:{name:"发现",children:[{title:"发现地址",rows:6,id:"exploreUrl",type:"String",hint:"内容能显示在发现菜单\n每行一条发现分类(网址域名可省略),例:\n名称1::网址(Url)1\n名称2::网址(Url)2\n..."},{title:"列表规则",rows:1,id:"ruleExplore_bookList",type:"String",hint:"选择书籍节点 (规则结果为List)"},{title:"书名规则",rows:1,id:"ruleExplore_name",type:"String",hint:"选择节点书名 (规则结果为String)"},{title:"作者规则",rows:1,id:"ruleExplore_author",type:"String",hint:"选择节点作者 (规则结果为String)"},{title:"分类规则",rows:1,id:"ruleExplore_kind",type:"String",hint:"选择节点分类信息 (规则结果为String)"},{title:"字数规则",rows:1,id:"ruleExplore_wordCount",type:"String",hint:"选择节点字数信息 (规则结果为String)"},{title:"最新章节",rows:1,id:"ruleExplore_lastChapter",type:"String",hint:"选择节点最新章节 (规则结果为String)"},{title:"简介规则",rows:1,id:"ruleExplore_intro",type:"String",hint:"选择节点书籍简介 (规则结果为String)"},{title:"封面规则",rows:1,id:"ruleExplore_coverUrl",type:"String",hint:"选择节点书籍封面 (规则结果为String类型的url)"},{title:"详情地址",rows:1,id:"ruleExplore_bookUrl",type:"String",hint:"选择书籍详情页网址 (规则结果为String类型的url)"}]},detail:{name:"详情",children:[{title:"预处理",rows:3,id:"ruleBookInfo_init",type:"String",hint:"用于加速详情信息检索,只支持AllInOne规则"},{title:"书名规则",rows:1,id:"ruleBookInfo_name",type:"String",hint:"选择节点书名 (规则结果为String)"},{title:"作者规则",rows:1,id:"ruleBookInfo_author",type:"String",hint:"选择节点作者 (规则结果为String)"},{title:"分类规则",rows:1,id:"ruleBookInfo_kind",type:"String",hint:"选择节点分类信息 (规则结果为String)"},{title:"字数规则",rows:1,id:"ruleBookInfo_wordCount",type:"String",hint:"选择节点字数信息 (规则结果为String)"},{title:"最新章节",rows:1,id:"ruleBookInfo_lastChapter",type:"String",hint:"选择节点最新章节 (规则结果为String)"},{title:"简介规则",rows:1,id:"ruleBookInfo_intro",type:"String",hint:"选择节点书籍简介 (规则结果为String)"},{title:"封面规则",rows:1,id:"ruleBookInfo_coverUrl",type:"String",hint:"选择节点书籍封面 (规则结果为String类型的url)"},{title:"目录地址",rows:1,id:"ruleBookInfo_tocUrl",type:"String",hint:"选择书籍详情页网址 (规则结果为String类型的url, 与详情页相同时可省略)"},{title:"下载URL",rows:1,id:"ruleBookInfo_downloadUrls",type:"String",hint:"文件类书源下载地址 (规则结果为String类型的url, 多个链接返回数组)"},{title:"修改书籍",rows:1,id:"ruleBookInfo_canReName",type:"String",hint:"允许修改书名作者(规则结果为String类型, 默认不允许)"}]},directory:{name:"目录",children:[{title:"更新前JS",rows:3,id:"ruleToc_preUpdateJs",type:"String",hint:"更新前JS 动态更新书籍目录链接"},{title:"列表规则",rows:3,id:"ruleToc_chapterList",type:"String",hint:"选择目录列表的章节节点 (规则结果为List)"},{title:"章节名称",rows:1,id:"ruleToc_chapterName",type:"String",hint:"选择章节名称 (规则结果为String)"},{title:"章节地址",rows:1,id:"ruleToc_chapterUrl",type:"String",hint:"选择章节链接 (规则结果为String类型的Url)"},{title:"卷名标识",rows:1,id:"ruleToc_isVolume",type:"String",hint:"章节名称是否是卷名 (规则结果为Bool)"},{title:"收费标识",rows:1,id:"ruleToc_isVip",type:"String",hint:"章节是否为VIP章节 (规则结果为Bool)"},{title:"购买标识",rows:1,id:"ruleToc_isPay",type:"String",hint:"章节是否为已购买 (规则结果为Bool)"},{title:"章节信息",rows:1,id:"ruleToc_updateTime",type:"String",hint:"选择章节信息 (规则结果为String)"},{title:"翻页规则",rows:1,id:"ruleToc_nextTocUrl",type:"String",hint:"选择目录下一页链接 (规则结果为List或String)"}]},content:{name:"正文",children:[{title:"脚本注入",rows:3,id:"ruleContent_webJs",type:"String",hint:"注入javascript,用于模拟鼠标点击等,必须有返回值,一般为String类型"},{title:"正文规则",rows:1,id:"ruleContent_content",type:"String",hint:"选择正文内容 (规则结果为String)"},{title:"翻页规则",rows:1,id:"ruleContent_nextContentUrl",type:"String",hint:"选择下一分页(不是下一章)链接 (规则结果为String类型的Url)"},{title:"资源正则",rows:1,id:"ruleContent_sourceRegex",type:"String",hint:"匹配资源的url特征,用于嗅探"},{title:"替换规则",rows:1,id:"ruleContent_replaceRegex",type:"String",hint:"多页内容合并后替换,用于正文净化"},{title:"图片样式",rows:1,id:"ruleContent_imageStyle",type:"String",hint:"FULL:铺满 不填:默认样式"},{title:"购买操作",rows:1,id:"ruleContent_payAction",type:"String",hint:"填写JavaScript 返回购买链接或者调用购买接口"},{title:"图片解密",rows:1,id:"ruleContent_imageDecode",type:"String",hint:"填写JavaScript 返回解密图片的bytes "}]},review:{name:"段评",children:[{title:"段评URL",rows:1,id:"ruleReview_reviewUrl",type:"String",hint:"段评URL"},{title:"发布者头像",rows:1,id:"ruleReview_avatarRule",type:"String",hint:"段评发布者头像"},{title:"段评内容",rows:1,id:"ruleReview_contentRule",type:"String",hint:"段评内容"},{title:"发布时间",rows:1,id:"ruleReview_postTimeRule",type:"String",hint:"段评发布时间"},{title:"回复URL",rows:1,id:"ruleReview_reviewQuoteUrl",type:"String",hint:"获取段评回复URL"},{title:"点赞URL",rows:1,id:"ruleReview_voteUpUrl",type:"String",hint:"点赞URL"},{title:"点踩URL",rows:1,id:"ruleReview_voteDownUrl",type:"String",hint:"点踩URL"},{title:"发送回复",rows:1,id:"ruleReview_postReviewUrl",type:"String",hint:"发送回复URL"},{title:"回复段评",rows:1,id:"ruleReview_postQuoteUrl",type:"String",hint:"发送回复段评URL"},{title:"删除段评",rows:1,id:"ruleReview_deleteUrl",type:"String",hint:"删除段评URL"}]},other:{name:"其他",children:[{title:"启用搜索",rows:1,id:"enabled",type:"Boolean",hint:"启用: true 关闭: false (可选,默认true)"},{title:"启用发现",rows:1,id:"enabledExplore",type:"Boolean",hint:"启用: true 关闭: false (可选,默认true)"},{title:"启用段评",rows:1,id:"enabledReview",type:"Boolean",hint:"启用: true 关闭: false (可选,默认false)"},{title:"Cookie",rows:1,id:"enabledCookieJar",type:"Boolean",hint:"保存返回头的Cookie 启用: true 关闭: false (可选,默认false)"},{title:"搜索权重",rows:1,id:"weight",type:"Number",hint:"整数: 0~N (可选,默认0) | 数字越大越靠前"},{title:"排序编号",rows:1,id:"customOrder",type:"Number",hint:"整数: 0~N (可选,默认0) | 数字越小越靠前"}]}},wt={base:{name:"基础",children:[{title:"源域名",rows:1,id:"sourceUrl",type:"String",hint:"<必填>通常填写网站主页,例: https://www.qidian.com"},{title:"图标",rows:1,id:"sourceIcon",type:"String",hint:"<选填>填写图片网络链接"},{title:"源名称",rows:1,id:"sourceName",type:"String",hint:"<必填>会显示在源列表"},{title:"源分组",rows:1,id:"sourceGroup",type:"String",hint:"<选填>描述源的特征信息"},{title:"源注释",rows:1,id:"sourceComment",type:"String",hint:"<选填>描述源作者和状态"},{title:"变量说明",rows:1,id:"variableComment",type:"String",hint:"<选填>源变量说明"},{title:"登录地址",rows:1,id:"loginUrl",type:"String",hint:"<选填>填写网站登录网址,仅在需要登录的源有用"},{title:"登录界面",rows:3,id:"loginUi",type:"String",hint:"<选填>自定义登录界面"},{title:"登录检测",rows:3,id:"loginCheckJs",type:"String",hint:"<选填>登录检测js"},{title:"封面解密",rows:3,id:"coverDecodeJs",type:"String",hint:"<选填>封面解密js"},{title:"并发率",rows:1,id:"concurrentRate",type:"String",hint:"<选填>并发率"},{title:"请求头",rows:3,id:"header",type:"String",hint:"<选填>客户端标识"},{title:"分类地址",rows:3,id:"sortUrl",type:"String",hint:"<选填>名称1::链接1\n名称2::链接2"}]},list:{name:"列表",children:[{title:"列表样式",rows:1,id:"articleStyle",type:"Number",hint:"<选填>0,1,2 (默认0)"},{title:"列表规则",rows:1,id:"ruleArticles",type:"String",hint:"规则结果为List"},{title:"翻页规则",rows:1,id:"ruleNextPage",type:"String",hint:"下一页链接 规则结果为List或String"},{title:"标题规则",rows:1,id:"ruleTitle",type:"String",hint:"文章标题 规则结果为String"},{title:"时间规则",rows:1,id:"rulePubDate",type:"String",hint:"文章发布时间 规则结果为String"},{title:"描述规则",rows:1,id:"ruleDescription",type:"String",hint:"文章简要描述 规则结果为String"},{title:"图片规则",rows:1,id:"ruleImage",type:"String",hint:"文章图片链接 规则结果为String"},{title:"链接规则",rows:1,id:"ruleLink",type:"String",hint:"文章链接 规则结果为String"}]},webView:{name:"WebView",children:[{title:"启用JS",rows:1,id:"enableJs",type:"Number",hint:"启用: true 关闭: false (可选,默认true)"},{title:"加载地址",rows:1,id:"loadWithBaseUrl",type:"Number",hint:"启用: true 关闭: false (可选,默认true)"},{title:"内容规则",rows:1,id:"ruleContent",type:"String",hint:"文章正文"},{title:"样式规则",rows:3,id:"style",type:"String",hint:"文章正文样式 填写css"}]},other:{name:"其他",children:[{title:"启用",rows:1,id:"enabled",type:"Boolean",hint:"启用: true 关闭: false (可选,默认true)"},{title:"Cookie",rows:1,id:"enabledCookieJar",type:"Boolean",hint:"保存返回头的Cookie 启用: true 关闭: false (可选,默认false)"},{title:"单URL",rows:1,id:"singleUrl",type:"Boolean",hint:"启用: true 关闭: false (可选,默认false)"},{title:"排序编号",rows:1,id:"customOrder",type:"Number",hint:"整数: 0~N (可选,默认0) | 数字越小越靠前"}]}},yt={components:{editMenu:Ce,editOut:et,editInputList:gt},setup(){const e=(0,m.qj)({config:{},title:"",selectTabKey:"base"});/bookSource/.test(location.href)?(e.config=St,e.title="书源"):(e.config=wt,e.title="订阅源");const t=t=>e.selectTabKey=t,r=(0,n.Fl)((()=>e.config[e.selectTabKey].children));return(0,n.bv)((()=>{})),{...(0,m.BK)(e),changeSelectTabKey:t,currentTabData:r}}};const mt=(0,c.Z)(yt,[["render",y],["__scopeId","data-v-06282bdf"]]);var vt=mt;const bt=[{path:"/bookSource",name:"book-home",component:vt},{path:"/rssSource",name:"rss-home",component:vt}],ft=(0,d.p7)({history:(0,d.r5)(),routes:bt});var _t=ft;(0,o.ri)(u).use(oe).use(_t).mount("#app")}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,r),i.exports}r.m=e,function(){var e=[];r.O=function(t,o,n,i){if(!o){var l=1/0;for(u=0;u=i)&&Object.keys(r.O).every((function(e){return r.O[e](o[c])}))?o.splice(c--,1):(a=!1,i0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[o,n,i]}}(),function(){r.d=function(e,t){for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})}}(),function(){r.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={143:0};r.O.j=function(t){return 0===e[t]};var t=function(t,o){var n,i,l=o[0],a=o[1],c=o[2],s=0;if(l.some((function(t){return 0!==e[t]}))){for(n in a)r.o(a,n)&&(r.m[n]=a[n]);if(c)var u=c(r)}for(t&&t(o);s((0,n.dD)("data-v-06282bdf"),e=e(),(0,n.Cn)(),e),g={class:"left"},S=p((()=>(0,n._)("a",{href:"/"},"←主页",-1))),w=["onClick"];function y(e,t,r,o,i,l){const a=(0,n.up)("edit-input-list"),c=(0,n.up)("edit-menu"),s=(0,n.up)("edit-out");return(0,n.wg)(),(0,n.iD)(n.HY,null,[(0,n._)("div",g,[(0,n._)("div",null,[(0,n._)("div",null,[S,(0,n._)("b",null,(0,h.zw)(e.title),1)]),(0,n._)("ul",null,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(Object.entries(e.config),(([t,r])=>((0,n.wg)(),(0,n.iD)("li",{onClick:e=>o.changeSelectTabKey(t),key:t,class:(0,h.C_)(t===e.selectTabKey?"active":"")},(0,h.zw)(r.name),11,w)))),128))])]),(0,n.Wm)(a,{data:o.currentTabData},null,8,["data"])]),(0,n.Wm)(c),(0,n.Wm)(s)],64)}var m=r(2262);r(7658);const v=e=>((0,n.dD)("data-v-5c287c97"),e=e(),(0,n.Cn)(),e),b={class:"menu"},f=(0,n.Uk)("⇈推送源 "),_=v((()=>(0,n._)("span",null,"Ctrl+P",-1))),k=[f,_],C=(0,n.Uk)("⇊拉取源 "),U=v((()=>(0,n._)("span",null,"Shift+P",-1))),T=[C,U],x=(0,n.Uk)(" ⋙生成源"),D=v((()=>(0,n._)("span",null,"Ctrl+E",-1))),N=[x,D],I=(0,n.Uk)(" ⋘编辑源"),B=v((()=>(0,n._)("span",null,"Shift+E",-1))),E=[I,B],K=(0,n.Uk)(" ✗清空表单"),L=v((()=>(0,n._)("span",null,"Shift+C",-1))),R=[K,L],A=(0,n.Uk)("↶撤销操作"),O=v((()=>(0,n._)("span",null,"Ctrl+Z",-1))),H=[A,O],j=(0,n.Uk)("↷重做操作"),J=v((()=>(0,n._)("span",null,"Shift+R",-1))),P=[j,J],$=(0,n.Uk)(" ⇏调试源 "),M=v((()=>(0,n._)("span",null,"Ctrl+Enter",-1))),q=[$,M],Z=(0,n.Uk)(" ✓保存源"),z=v((()=>(0,n._)("span",null,"Ctrl+S",-1))),W=[Z,z];function F(e,t,r,o,i,l){const a=(0,n.up)("edit-loading"),c=(0,n.up)("edit-warn"),s=(0,n.up)("edit-success");return(0,n.wg)(),(0,n.iD)("div",b,[(0,n._)("div",null,[o.showLoading?((0,n.wg)(),(0,n.j4)(a,{key:0})):(0,n.kq)("",!0),(0,n.Wm)(c,{text:o.warnText,"is-show":o.warnShow,onChangeShow:o.changeShow},null,8,["text","is-show","onChangeShow"]),o.successShow?((0,n.wg)(),(0,n.j4)(s,{key:1,isShow:o.successShow,onChangeShow:o.changeSuccessShow,text:o.successText},null,8,["isShow","onChangeShow","text"])):(0,n.kq)("",!0)]),(0,n._)("button",{onClick:t[0]||(t[0]=(...e)=>o.push&&o.push(...e)),title:"Ctrl+P"},k),(0,n._)("button",{onClick:t[1]||(t[1]=(...e)=>o.pull&&o.pull(...e)),title:"Shift+P"},T),(0,n._)("button",{onClick:t[2]||(t[2]=(...e)=>o.conver2Tab&&o.conver2Tab(...e)),title:"Ctrl+E"},N),(0,n._)("button",{onClick:t[3]||(t[3]=(...e)=>o.conver2Source&&o.conver2Source(...e)),title:"Shift+E"},E),(0,n._)("button",{onClick:t[4]||(t[4]=(...e)=>o.clearEdit&&o.clearEdit(...e)),title:"Shift+C"},R),(0,n._)("button",{onClick:t[5]||(t[5]=(...e)=>o.undo&&o.undo(...e)),title:"Ctrl+Z"},H),(0,n._)("button",{onClick:t[6]||(t[6]=(...e)=>o.redo&&o.redo(...e)),title:"Shift+R"},P),(0,n._)("button",{onClick:t[7]||(t[7]=(...e)=>o.debug&&o.debug(...e)),title:"Ctrl+Enter"},q),(0,n._)("button",{onClick:t[8]||(t[8]=(...e)=>o.saveSource&&o.saveSource(...e)),title:"Ctrl+S"},W)])}function V(e,t){return fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}).then((e=>e.json()))}function Y(e){return fetch(e).then((e=>e.json()))}function G(e,t=!0){let r=/bookSource/.test(location.href),o=`http://${localStorage.getItem("url")||location.host}/`,n=r?"BookSource":"RssSource";return`${o}${e}${n}${t?"s":""}`}function Q(){return Y(G("get"))}function X(e){return V(G("save"),e)}function ee(e){return V(G("save",!1),e)}function te(e){return V(G("delete"),e)}var re=r(3907),oe=(0,re.MT)({state:{url:localStorage.getItem("url")||"",bookSources:[],rssSources:[],currentSource:{},currentTab:localStorage.getItem("tabName")||"editTab",editTabSource:{},deBugMsg:"",searchKey:""},getters:{},mutations:{changeSearchKey(e,t){e.searchKey=t},saveSources(e,t){/bookSource/.test(location.href)?e.bookSources=t:e.rssSources=t},saveCurrentSource(e){let t,r,o=e.currentSource;/bookSource/.test(location.href)?(o=e.bookSources,r="bookSourceUrl"):(o=e.rssSources,r="sourceUrl");let n=t.findIndex((e=>e[r]===o[r]));n>-1?t.splice(n,1,o):t.push(o)},changeCurrentSource(e,t){const r=JSON.stringify(t);e.currentSource=JSON.parse(r)},changeCurrentSourceValue(e,t){let r=t.value,o={true:!0,false:!1};if("Boolean"===t.type&&(r=o[r]||r),"Number"===t.type&&(r=Number(r)||r),t.key.includes("_")){let o=t.key.split("_")[0],n=t.key.split("_")[1],i={};i[n]=r,e.currentSource[o]=Object.assign(e.currentSource[o]||{},i)}else e.currentSource[t.key]=r;e.currentSource.lastUpdateTime=(new Date).getTime()},changeTabName(e,t){e.currentTab=t,localStorage.setItem("tabName",t),console.log(t)},changeEditTabSource(e,t){const r=JSON.stringify(t);e.editTabSource=JSON.parse(r)},editHistory(e,t){let r;if(localStorage.getItem("history"))r=JSON.parse(localStorage.getItem("history")),r.new.push(t),r.new.length>50&&r.new.shift(),r.old.length>50&&r.old.shift(),localStorage.setItem("history",JSON.stringify(r));else{const e={new:[t],old:[]};localStorage.setItem("history",JSON.stringify(e))}},editHistoryUndo(e){if(localStorage.getItem("history")){let t=JSON.parse(localStorage.getItem("history"));t.old.push(e.currentSource),t.new.length&&(e.currentSource=t.new.pop()),localStorage.setItem("history",JSON.stringify(t))}},clearAllHistory(){localStorage.setItem("history",JSON.stringify({new:[],old:[]}))},clearEdit(e){e.editTabSource={},e.currentSource={}},appendDeBugMsg(e,t){let r=document.querySelector("#debug_text");r.scrollTop=r.scrollHeight,e.deBugMsg+=t+"\n"},clearDeBugMsg(e){e.deBugMsg=""},clearAllSource(e){e.bookSources=[],e.rssSources=[]}},actions:{},modules:{}});const ne=e=>((0,n.dD)("data-v-ab8a8a34"),e=e(),(0,n.Cn)(),e),ie={class:"fixed"},le=ne((()=>(0,n._)("div",{class:"half-circle-spinner"},[(0,n._)("div",{class:"circle circle-1"}),(0,n._)("div",{class:"circle circle-2"})],-1))),ae=[le];function ce(e,t,r,o,i,l){return(0,n.wg)(),(0,n.iD)("div",ie,ae)}var se={name:"editLoading"};const ue=(0,c.Z)(se,[["render",ce],["__scopeId","data-v-ab8a8a34"]]);var de=ue;const he={key:0,class:"warm"};function pe(e,t,r,o,i,l){return r.isShow?((0,n.wg)(),(0,n.iD)("div",he,[(0,n._)("p",null,(0,h.zw)(r.text),1),(0,n._)("div",null,[(0,n._)("button",{onClick:t[0]||(t[0]=(...e)=>o.changeShow&&o.changeShow(...e))},"关闭")])])):(0,n.kq)("",!0)}var ge={name:"editWarm",props:{isShow:{default:!1,type:Boolean},text:{type:String,default:""}},setup(e,{emit:t}){const r=()=>{t("changeShow",!e.isShow)};return{changeShow:r}}};const Se=(0,c.Z)(ge,[["render",pe],["__scopeId","data-v-27eae50d"]]);var we=Se;const ye={class:"success"};function me(e,t,r,o,i,l){return(0,n.wg)(),(0,n.iD)("div",ye,[(0,n._)("p",null,(0,h.zw)(r.text),1)])}var ve={props:{text:{type:String,default:""},isShow:{type:Boolean,default:!1}},emits:["changeShow"],setup(e,{emit:t}){return setTimeout((()=>{t("changeShow",!e.isShow)}),3e3),{}}};const be=(0,c.Z)(ve,[["render",me],["__scopeId","data-v-bef92f74"]]);var fe=be,_e={components:{editLoading:de,editWarn:we,editSuccess:fe},setup(){const e=(0,m.iH)(!1),t=(0,m.iH)(!1),r=(0,m.iH)(""),o=(0,m.iH)(!1),i=(0,m.iH)(""),l=e=>{t.value=e},a=e=>{console.log(e),o.value=e},c=()=>{e.value=!0,Q().then((n=>{e.value=!1,n.isSuccess?(oe.commit("changeTabName","editList"),oe.commit("saveSources",n.data),r.value=`成功拉取${n.data.length}条源`,o.value=!0):(i.value=n.errorMsg,t.value=!0)})).catch((r=>{console.log(r),e.value=!1,i.value=" 请求发生了错误,请检查你的后端地址,填写是否正确,或者 阅读APP\n确认开启web服务",t.value=!0}))},s=()=>{r.value="正在推送中",o.value=!0,e.value=!0;let n=/bookSource/.test(location.href)?oe.state.bookSources:oe.state.rssSources;X(n).then((l=>{if(l.isSuccess){let e=l.data;if(Array.isArray(e)){let t="";n.length>e.length&&(n.forEach((t=>{e.find((e=>e.bookSourceUrl===t.bookSourceUrl))||console.log(t.bookSourceUrl)})),t="\n推送失败的源将用红色字体标注!"),r.value=`批量推送源到「阅读3.0APP」\n共计: ${n.length} 条\n成功: ${e.length} 条\n失败: ${n.length-e.length} 条${t}`,o.value=!0}else r.value=`批量推送源到「阅读3.0APP」成功!\n共计: ${n.length} 条`,o.value=!0}else i.value=`批量推送源失败!\nErrorMsg: ${l.errorMsg}`,t.value=!0;e.value=!1})).catch((r=>{console.log(r),e.value=!1,t.value=!0,i.value="请求发生了错误,请检查你的后端地址,填写是否正确,或者 阅读APP\n确认开启web服务"}))},u=()=>{oe.commit("changeEditTabSource",oe.state.currentSource),oe.commit("changeTabName","editTab")},d=()=>{oe.commit("changeCurrentSource",oe.state.editTabSource)},h=()=>{oe.commit("editHistoryUndo")},p=()=>{oe.commit("clearEdit"),console.log("已清除"),r.value="已清除",o.value=!0},g=()=>{oe.commit("clearEdit"),oe.commit("clearAllHistory"),r.value="已清除所有历史记录",o.value=!0},S=()=>{let e=/bookSource/.test(location.href),n=oe.state.currentSource;e&&""!==n.bookSourceUrl&&""!==n.bookSourceType&&""!==n.bookSourceName||!e&&""!==n.sourceUrl&&""!==n.sourceName?ee(n).then((l=>{l.isSuccess?(r.value=`源《${e?n.bookSourceName:n.sourceName}》已成功保存到「阅读3.0APP」`,o.value=!0,oe.commit("saveCurrentSource")):(i.value=`源《${e?n.bookSourceName:n.sourceName}》保存失败!\nErrorMsg: ${l.errorMsg}`,t.value=!0)})):(i.value="请检查<必填>项是否全部填写",t.value=!0)},w=()=>{e.value=!0,oe.commit("clearDeBugMsg"),oe.commit("changeTabName","editDebug");let t=/bookSource/.test(location.href),n=oe.state.currentSource;ee(n).then((i=>{console.log(i);let l="ws://"+(localStorage.getItem("url")||location.host).replace(/\d+$/,(e=>parseInt(e)+1))+"/"+(t?"bookSourceDebug":"rssSourceDebug");console.log(l);const a=new WebSocket(l);let c="",s=t?n.bookSourceUrl:n.sourceUrl;t&&(c=n.ruleSearch.checkKeyWord?n.ruleSearch.checkKeyWord:oe.state.searchKey?oe.state.searchKey:"我的"),a.onopen=()=>{a.send(`{"tag":"${s}", "key":"${c}"}`)},a.onmessage=e=>{oe.commit("appendDeBugMsg",e.data)},a.onclose=()=>{e.value=!1,r.value="调试已关闭!",o.value=!0,oe.commit("appendDeBugMsg","调试已关闭!")}}))};return(0,n.bv)((()=>{document.onkeydown=e=>{(e.ctrlKey||e.metaKey)&&"Enter"===e.key&&w(),(e.ctrlKey||e.metaKey)&&"s"===e.key&&(S(),e.preventDefault()),e.shiftKey&&"R"===e.key&&g(),e.shiftKey&&"C"===e.key&&p(),e.ctrlKey&&"e"===e.key&&(u(),e.preventDefault()),e.shiftKey&&"e"===e.key&&(d(),e.preventDefault()),e.shiftKey&&"P"===e.key&&c(),e.ctrlKey&&"p"===e.key&&(s(),e.preventDefault())}})),{debug:w,push:s,pull:c,clearEdit:p,showLoading:e,changeShow:l,warnShow:t,successText:r,changeSuccessShow:a,successShow:o,undo:h,redo:g,conver2Tab:u,conver2Source:d,warnText:i,saveSource:S}}};const ke=(0,c.Z)(_e,[["render",F],["__scopeId","data-v-5c287c97"]]);var Ce=ke;const Ue={class:"out"};function Te(e,t,r,o,i,l){return(0,n.wg)(),(0,n.iD)("div",Ue,[(0,n._)("ul",null,[(0,n._)("li",{class:(0,h.C_)("editTab"===e.current_tab?"active":""),onClick:t[0]||(t[0]=e=>o.handleSetActive("editTab"))}," 编辑源 ",2),(0,n._)("li",{class:(0,h.C_)("editDebug"===e.current_tab?"active":""),onClick:t[1]||(t[1]=e=>o.handleSetActive("editDebug"))}," 调试源 ",2),(0,n._)("li",{class:(0,h.C_)("editList"===e.current_tab?"active":""),onClick:t[2]||(t[2]=e=>o.handleSetActive("editList"))}," 源列表 ",2),(0,n._)("li",{class:(0,h.C_)("editHelp"===e.current_tab?"active":""),onClick:t[3]||(t[3]=e=>o.handleSetActive("editHelp"))}," 帮助信息 ",2)]),((0,n.wg)(),(0,n.j4)(n.Ob,null,[((0,n.wg)(),(0,n.j4)((0,n.LL)(e.current_tab)))],1024))])}function xe(e,t,r,i,l,a){return(0,n.wy)(((0,n.wg)(),(0,n.iD)("textarea",{placeholder:"这里输出序列化的JSON数据,可直接导入'阅读'APP","onUpdate:modelValue":t[0]||(t[0]=t=>e.source=t),onInput:t[1]||(t[1]=(...e)=>i.updateEditSource&&i.updateEditSource(...e))},null,544)),[[o.nr,e.source]])}var De={name:"editTab",setup(){const e=(0,m.qj)({source:""}),t=()=>{oe.commit("changeEditTabSource",JSON.parse(e.source))};return(0,n.m0)((()=>{let t=oe.state.editTabSource;Object.keys(t).length>0?(t.lastUpdateTime=(new Date).getTime(),e.source=JSON.stringify(t,null,4)):e.source=""})),{...(0,m.BK)(e),updateEditSource:t}}};const Ne=(0,c.Z)(De,[["render",xe],["__scopeId","data-v-554d8227"]]);var Ie=Ne;function Be(e,t,r,i,l,a){return(0,n.wg)(),(0,n.iD)(n.HY,null,[i.isBookSource?(0,n.wy)(((0,n.wg)(),(0,n.iD)("input",{key:0,type:"text",style:{"text-align":"center",border:"1px solid #dddddd","border-radius":"4px"},placeholder:"输入搜索关键字,默认搜「我的」","onUpdate:modelValue":t[0]||(t[0]=t=>e.searchKey=t),onInput:t[1]||(t[1]=t=>i.changeSearch(e.searchKey)),onKeydown:t[2]||(t[2]=(0,o.D2)(((...e)=>i.startSearch&&i.startSearch(...e)),["enter"])),title:"输入关键词 enter(回车键)快捷搜索"},null,544)),[[o.nr,e.searchKey]]):(0,n.kq)("",!0),(0,n.wy)((0,n._)("textarea",{placeholder:"这里用于输出调试信息","onUpdate:modelValue":t[3]||(t[3]=t=>e.printDebug=t),ref:"textareaDom",id:"debug_text"},null,512),[[o.nr,e.printDebug]])],64)}var Ee={name:"editDebug",setup(){const e=(0,m.iH)(""),t=(0,m.qj)({printDebug:oe.state.deBugMsg,searchKey:""}),r=e=>{oe.commit("changeSearchKey",e)};(0,n.m0)((()=>{t.printDebug=oe.state.deBugMsg}));const o=()=>{document.querySelectorAll(".menu>button")[6].click()},i=(0,n.Fl)((()=>/bookSource/.test(window.location.href)));return{...(0,m.BK)(t),textareaDom:e,changeSearch:r,startSearch:o,isBookSource:i}}};const Ke=(0,c.Z)(Ee,[["render",Be],["__scopeId","data-v-28b882dd"]]);var Le=Ke;const Re={style:{display:"flex","flex-flow":"column"}},Ae={class:"tool"},Oe={class:"source_list"},He=["value"],je={class:"book_index"},Je=["onClick"],Pe={class:"book_info"},$e={key:0};function Me(e,t,r,i,l,a){return(0,n.wg)(),(0,n.iD)("div",Re,[(0,n.wy)((0,n._)("input",{class:"search",type:"text",placeholder:"输入筛选关键词(源名称、源URL或源分组)输入自动筛选源","onUpdate:modelValue":t[0]||(t[0]=t=>e.searchKey=t),onFocus:t[1]||(t[1]=t=>e.delArr=[])},null,544),[[o.nr,e.searchKey]]),(0,n._)("div",null,[(0,n._)("div",Ae,[(0,n._)("button",{onClick:t[2]||(t[2]=(...e)=>i.upFile&&i.upFile(...e))},"导入书源文件"),(0,n._)("button",{onClick:t[3]||(t[3]=(...e)=>i.outExport&&i.outExport(...e))},"导出书源文件"),(0,n._)("button",{onClick:t[4]||(t[4]=(...e)=>i.deleteActiveSource&&i.deleteActiveSource(...e))},"删除选中源"),(0,n._)("button",{onClick:t[5]||(t[5]=(...e)=>i.clearAllSources&&i.clearAllSources(...e))},"清空列表")]),(0,n._)("div",Oe,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(e.filtedSources,((r,l)=>((0,n.wg)(),(0,n.iD)("div",{key:r.bookSourceUrl||r.sourceUrl,class:(0,h.C_)(["book_item",l===i.currentActive?"book_active":""])},[(0,n.wy)((0,n._)("input",{type:"checkbox",value:l,"onUpdate:modelValue":t[6]||(t[6]=t=>e.delArr=t)},null,8,He),[[o.e8,e.delArr]]),(0,n._)("div",je,(0,h.zw)(l+1),1),(0,n._)("div",{style:{"margin-left":"10px",flex:"1"},onClick:e=>i.handleItemClick(l)},[(0,n._)("div",Pe,[(0,n._)("span",null,(0,h.zw)(r.bookSourceName||r.sourceName),1),i.isBookSource?((0,n.wg)(),(0,n.iD)("span",$e,"最后修改:"+(0,h.zw)(i.formatTime(r.lastUpdateTime)),1)):(0,n.kq)("",!0),(0,n._)("span",null,"分组:"+(0,h.zw)(r.bookSourceGroup||r.sourceGroup||"无分组"),1)]),(0,n._)("div",null,(0,h.zw)(r.bookSourceUrl||r.sourceUrl),1)],8,Je)],2)))),128))])])])}var qe={name:"editList",setup(){let e=(0,m.qj)({searchKey:"",delArr:[],sources:[],filtedSources:[]}),t=(0,m.iH)(null);const r=r=>{t.value=r,oe.commit("clearEdit"),oe.commit("changeCurrentSource",e.filtedSources[r])},o=()=>{oe.commit("clearAllSource")},i=e=>{if(!e)return null;const t=new Date(e),r=t.getFullYear();let o=t.getMonth()+1;o=o<10?"0"+o:o;let n=t.getDate();n=n<10?"0"+n:n;let i=t.getHours();i=i<10?"0"+i:i;let l=t.getMinutes();l=l<10?"0"+l:l;let a=t.getSeconds();return a=a<10?"0"+a:a,r+"-"+o+"-"+n+" "+i+":"+l+":"+a},l=(t,r)=>{if(""===r)return e.sources;let o=/bookSource/.test(location.href);return o?t.filter((e=>e.bookSourceName.toUpperCase().includes(r.toUpperCase())||(e.bookSourceGroup||"").toUpperCase().includes(r.toUpperCase())||e.bookSourceUrl.toUpperCase().includes(r.toUpperCase()))):t.filter((e=>e.sourceName.toUpperCase().includes(r.toUpperCase())||(e.sourceGroup||"").toUpperCase().includes(r.toUpperCase())||e.sourceUrl.toUpperCase().includes(r.toUpperCase())))};(0,n.m0)((()=>{const t=/bookSource/.test(location.href),r=t?oe.state.bookSources:oe.state.rssSources;e.sources=r})),(0,n.m0)((()=>{e.filtedSources=l(e.sources,e.searchKey)}));const a=(0,n.Fl)((()=>/bookSource/.test(window.location.href))),c=()=>{if(0===e.delArr.length)return console.log("没有选中的书源"),!1;const t=[];e.delArr.forEach((r=>{t.push(e.filtedSources[r])})),te(t).then((t=>{t.isSuccess?(console.log("删除成功"),e.delArr.forEach((t=>{let[r]=e.filtedSources.splice(t,1),o=e.sources.indexOf(r);e.sources.splice(o,1)})),e.delArr=[]):console.log("错误",t)}))},s=()=>{const e=document.createElement("input");e.type="file",e.accept=".json",e.addEventListener("change",(e=>{const t=e.target.files[0];var r=new FileReader;r.readAsText(t),r.onload=()=>{const e=JSON.parse(r.result);oe.commit("saveSources",e)}})),e.click()},u=()=>{const e=document.createElement("a");let t=/bookSource/.test(location.href),r=t?oe.state.bookSources:oe.state.rssSources,o=t?"BookSource":"RssSource";e.download=`${o}_${Date().replace(/.*?\s(\d+)\s(\d+)\s(\d+:\d+:\d+).*/,"$2$1$3").replace(/:/g,"")}.json`;let n=new Blob([JSON.stringify(r,null,4)],{type:"application/json"});e.href=window.URL.createObjectURL(n),e.click()};return{currentActive:t,isBookSource:a,deleteActiveSource:c,handleItemClick:r,...(0,m.BK)(e),formatTime:i,clearAllSources:o,upFile:s,outExport:u}}};const Ze=(0,c.Z)(qe,[["render",Me],["__scopeId","data-v-5570960e"]]);var ze=Ze;const We=(0,n.uE)('书源制作教程xpath基础教程xpath高级教程正则表达式教程正则表达式在线验证工具^$()[]{}.?+*|
这些是Java正则特殊符号,匹配需转义
(?s)
前缀表示跨行解析
(?m)
前缀表示逐行匹配
(?i)
前缀表示忽略大小写
',6);function Fe(e,t,r,o,n,i){return We}var Ve={name:"editHelp"};const Ye=(0,c.Z)(Ve,[["render",Fe],["__scopeId","data-v-7ac1e65e"]]);var Ge=Ye,Qe={name:"editOut",components:{editDebug:Le,editTab:Ie,editList:ze,editHelp:Ge},setup(){const e=(0,m.qj)({url:localStorage.getItem("url")||"",current_tab:oe.state.currentTab||"editTab"}),t=e=>{oe.commit("changeTabName",e)},r=e=>{oe.commit("changeUrl",e)};(0,n.m0)((()=>{e.current_tab=oe.state.currentTab}));const o=()=>{document.querySelectorAll(".menu>button")[1].click()};return{...(0,m.BK)(e),handleSetActive:t,changInput:r,pullSource:o}}};const Xe=(0,c.Z)(Qe,[["render",Te]]);var et=Xe;const tt={class:"main"};function rt(e,t,r,o,i,l){const a=(0,n.up)("edit-input");return(0,n.wg)(),(0,n.iD)("div",tt,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(r.data,((e,t)=>((0,n.wg)(),(0,n.j4)(a,{key:t,id:e.id,type:e.type,hint:e.hint,title:e.title,rows:e.rows,content:o.getContent(e.id),onChangeContent:o.upData},null,8,["id","type","hint","title","rows","content","onChangeContent"])))),128))])}const ot=e=>((0,n.dD)("data-v-b51d440e"),e=e(),(0,n.Cn)(),e),nt={class:"edit_input"},it=ot((()=>(0,n._)("i",null,":",-1))),lt=["id","placeholder","rows","value"];function at(e,t,r,o,i,l){return(0,n.wg)(),(0,n.iD)("div",nt,[(0,n._)("span",null,[(0,n.Uk)((0,h.zw)(r.title),1),it]),(0,n._)("textarea",{id:r.id,class:(0,h.C_)(r.type),placeholder:r.hint,rows:r.rows,value:r.content,ref:"attr",onInput:t[0]||(t[0]=(...e)=>o.change&&o.change(...e)),onBlur:t[1]||(t[1]=(...e)=>o.changeHistory&&o.changeHistory(...e)),onFocus:t[2]||(t[2]=(...e)=>o.changeHeight&&o.changeHeight(...e))},null,42,lt)])}var ct={props:{title:{type:String,default:""},rows:{type:Number,default:1},hint:{type:String,default:""},id:{type:String,default:""},type:{type:String,default:"String"},content:{type:[String,Number,Boolean],default:""}},emits:["changeContent"],setup(e,{emit:t}){const r=(0,m.iH)(""),o=()=>{t("changeContent",{value:r.value.value,key:r.value.getAttribute("id"),type:r.value.getAttribute("class")})},i=()=>{localStorage.getItem("history")||localStorage.setItem("history",JSON.stringify({new:[],old:[]}));const e=JSON.parse(localStorage.getItem("history")),t=e.new;if(t.length){const e=r.value.getAttribute("id");if(e.includes("_")||t[t.length-1][e]===oe.state.currentSource[e]){if(e.includes("_")){let r=e.split("_")[0],o=e.split("_")[1];t[t.length-1][r][o]!==oe.state.currentSource[r][o]&&oe.commit("editHistory",oe.state.currentSource)}}else oe.commit("editHistory",oe.state.currentSource)}else oe.commit("editHistory",oe.state.currentSource)},l=()=>{(0,n.Y3)((()=>{let e=r.value;const t=e.scrollHeight,o=e.offsetHeight;o<=t&&(e.style.height="auto",e.style.height=e.scrollHeight+"px")}))};return{changeHistory:i,change:o,attr:r,changeHeight:l}}};const st=(0,c.Z)(ct,[["render",at],["__scopeId","data-v-b51d440e"]]);var ut=st;function dt(){const e=(0,m.qj)({currentSource:oe.state.currentSource}),t=e=>{oe.commit("changeCurrentSourceValue",e)},r=t=>{try{if(t.includes("_")){let r=t.split("_")[0],o=t.split("_")[1],n=e.currentSource[r];return n?n[o]:null}return e.currentSource[t]}catch(r){console.log("导入错误",r.TypeError),oe.commit("clearEdit")}};return(0,n.m0)((()=>{e.currentSource=oe.state.currentSource})),{...(0,m.BK)(e),upData:t,getContent:r}}var ht={name:"editInputList",props:{data:{type:Array,required:!0}},components:{editInput:ut},setup(e){const{upData:t,getContent:r}=dt(),o=(0,m.qj)({data:e.data});return{...(0,m.BK)(o),upData:t,getContent:r}}};const pt=(0,c.Z)(ht,[["render",rt]]);var gt=pt,St={base:{name:"基础",children:[{title:"源域名",rows:1,id:"bookSourceUrl",type:"String",hint:"<必填>通常填写网站主页,例: https://www.qidian.com"},{title:"源类型",rows:1,id:"bookSourceType",type:"Number",hint:"<必填>0:文本 1:音频 2:图片 3:文件(只提供下载的网站)"},{title:"源名称",rows:1,id:"bookSourceName",type:"String",hint:"<必填>会显示在源列表"},{title:"源分组",rows:1,id:"bookSourceGroup",type:"String",hint:"<选填>描述源的特征信息"},{title:"源注释",rows:1,id:"bookSourceComment",type:"String",hint:"<选填>描述源作者和状态"},{title:"书源变量",rows:1,id:"variableComment",type:"String",hint:"<选填>书源变量说明"},{title:"登录地址",rows:1,id:"loginUrl",type:"String",hint:"<选填>填写网站登录网址,仅在需要登录的源有用"},{title:"登录界面",rows:3,id:"loginUi",type:"String",hint:"<选填>自定义登录界面"},{title:"登录检测",rows:3,id:"loginCheckJs",type:"String",hint:"<选填>登录检测js"},{title:"封面解密",rows:3,id:"coverDecodeJs",type:"String",hint:"<选填>封面解密js"},{title:"并发率",rows:1,id:"concurrentRate",type:"String",hint:"<选填>并发率"},{title:"请求头",rows:3,id:"header",type:"String",hint:"<选填>客户端标识"},{title:"链接验证",rows:1,id:"bookUrlPattern",type:"String",hint:"<选填>当详情页URL与源URL的域名不一致时有效,用于添加网址"}]},search:{name:"搜索",children:[{title:"搜索地址",rows:1,id:"searchUrl",type:"String",hint:"[域名可省略]/search.php@kw={{key}}"},{title:"校验文字",rows:1,id:"ruleSearch_checkKeyWord",type:"String",hint:"校验关键字"},{title:"列表规则",rows:1,id:"ruleSearch_bookList",type:"String",hint:"选择书籍节点 (规则结果为List)"},{title:"书名规则",rows:1,id:"ruleSearch_name",type:"String",hint:"选择节点书名 (规则结果为String)"},{title:"作者规则",rows:1,id:"ruleSearch_author",type:"String",hint:"选择节点作者 (规则结果为String)"},{title:"分类规则",rows:1,id:"ruleSearch_kind",type:"String",hint:"选择节点分类信息 (规则结果为String)"},{title:"字数规则",rows:1,id:"ruleSearch_wordCount",type:"String",hint:"选择节点字数信息 (规则结果为String)"},{title:"最新章节",rows:1,id:"ruleSearch_lastChapter",type:"String",hint:"选择节点最新章节 (规则结果为String)"},{title:"简介规则",rows:1,id:"ruleSearch_intro",type:"String",hint:"选择节点书籍简介 (规则结果为String)"},{title:"封面规则",rows:1,id:"ruleSearch_coverUrl",type:"String",hint:"选择节点书籍封面 (规则结果为String类型的url)"},{title:"详情地址",rows:1,id:"ruleSearch_bookUrl",type:"String",hint:"选择书籍详情页网址 (规则结果为String类型的url)"}]},find:{name:"发现",children:[{title:"发现地址",rows:6,id:"exploreUrl",type:"String",hint:"内容能显示在发现菜单\n每行一条发现分类(网址域名可省略),例:\n名称1::网址(Url)1\n名称2::网址(Url)2\n..."},{title:"列表规则",rows:1,id:"ruleExplore_bookList",type:"String",hint:"选择书籍节点 (规则结果为List)"},{title:"书名规则",rows:1,id:"ruleExplore_name",type:"String",hint:"选择节点书名 (规则结果为String)"},{title:"作者规则",rows:1,id:"ruleExplore_author",type:"String",hint:"选择节点作者 (规则结果为String)"},{title:"分类规则",rows:1,id:"ruleExplore_kind",type:"String",hint:"选择节点分类信息 (规则结果为String)"},{title:"字数规则",rows:1,id:"ruleExplore_wordCount",type:"String",hint:"选择节点字数信息 (规则结果为String)"},{title:"最新章节",rows:1,id:"ruleExplore_lastChapter",type:"String",hint:"选择节点最新章节 (规则结果为String)"},{title:"简介规则",rows:1,id:"ruleExplore_intro",type:"String",hint:"选择节点书籍简介 (规则结果为String)"},{title:"封面规则",rows:1,id:"ruleExplore_coverUrl",type:"String",hint:"选择节点书籍封面 (规则结果为String类型的url)"},{title:"详情地址",rows:1,id:"ruleExplore_bookUrl",type:"String",hint:"选择书籍详情页网址 (规则结果为String类型的url)"}]},detail:{name:"详情",children:[{title:"预处理",rows:3,id:"ruleBookInfo_init",type:"String",hint:"用于加速详情信息检索,只支持AllInOne规则"},{title:"书名规则",rows:1,id:"ruleBookInfo_name",type:"String",hint:"选择节点书名 (规则结果为String)"},{title:"作者规则",rows:1,id:"ruleBookInfo_author",type:"String",hint:"选择节点作者 (规则结果为String)"},{title:"分类规则",rows:1,id:"ruleBookInfo_kind",type:"String",hint:"选择节点分类信息 (规则结果为String)"},{title:"字数规则",rows:1,id:"ruleBookInfo_wordCount",type:"String",hint:"选择节点字数信息 (规则结果为String)"},{title:"最新章节",rows:1,id:"ruleBookInfo_lastChapter",type:"String",hint:"选择节点最新章节 (规则结果为String)"},{title:"简介规则",rows:1,id:"ruleBookInfo_intro",type:"String",hint:"选择节点书籍简介 (规则结果为String)"},{title:"封面规则",rows:1,id:"ruleBookInfo_coverUrl",type:"String",hint:"选择节点书籍封面 (规则结果为String类型的url)"},{title:"目录地址",rows:1,id:"ruleBookInfo_tocUrl",type:"String",hint:"选择书籍详情页网址 (规则结果为String类型的url, 与详情页相同时可省略)"},{title:"下载URL",rows:1,id:"ruleBookInfo_downloadUrls",type:"String",hint:"文件类书源下载地址 (规则结果为String类型的url, 多个链接返回数组)"},{title:"修改书籍",rows:1,id:"ruleBookInfo_canReName",type:"String",hint:"允许修改书名作者(规则结果为String类型, 默认不允许)"}]},directory:{name:"目录",children:[{title:"更新前JS",rows:3,id:"ruleToc_preUpdateJs",type:"String",hint:"更新前JS 动态更新书籍目录链接"},{title:"列表规则",rows:3,id:"ruleToc_chapterList",type:"String",hint:"选择目录列表的章节节点 (规则结果为List)"},{title:"章节名称",rows:1,id:"ruleToc_chapterName",type:"String",hint:"选择章节名称 (规则结果为String)"},{title:"章节地址",rows:1,id:"ruleToc_chapterUrl",type:"String",hint:"选择章节链接 (规则结果为String类型的Url)"},{title:"卷名标识",rows:1,id:"ruleToc_isVolume",type:"String",hint:"章节名称是否是卷名 (规则结果为Bool)"},{title:"收费标识",rows:1,id:"ruleToc_isVip",type:"String",hint:"章节是否为VIP章节 (规则结果为Bool)"},{title:"购买标识",rows:1,id:"ruleToc_isPay",type:"String",hint:"章节是否为已购买 (规则结果为Bool)"},{title:"章节信息",rows:1,id:"ruleToc_updateTime",type:"String",hint:"选择章节信息 (规则结果为String)"},{title:"翻页规则",rows:1,id:"ruleToc_nextTocUrl",type:"String",hint:"选择目录下一页链接 (规则结果为List或String)"}]},content:{name:"正文",children:[{title:"脚本注入",rows:3,id:"ruleContent_webJs",type:"String",hint:"注入javascript,用于模拟鼠标点击等,必须有返回值,一般为String类型"},{title:"正文规则",rows:1,id:"ruleContent_content",type:"String",hint:"选择正文内容 (规则结果为String)"},{title:"翻页规则",rows:1,id:"ruleContent_nextContentUrl",type:"String",hint:"选择下一分页(不是下一章)链接 (规则结果为String类型的Url)"},{title:"资源正则",rows:1,id:"ruleContent_sourceRegex",type:"String",hint:"匹配资源的url特征,用于嗅探"},{title:"替换规则",rows:1,id:"ruleContent_replaceRegex",type:"String",hint:"多页内容合并后替换,用于正文净化"},{title:"图片样式",rows:1,id:"ruleContent_imageStyle",type:"String",hint:"FULL:铺满 不填:默认样式"},{title:"购买操作",rows:1,id:"ruleContent_payAction",type:"String",hint:"填写JavaScript 返回购买链接或者调用购买接口"},{title:"图片解密",rows:1,id:"ruleContent_imageDecode",type:"String",hint:"填写JavaScript 返回解密图片的bytes "}]},review:{name:"段评",children:[{title:"段评URL",rows:1,id:"ruleReview_reviewUrl",type:"String",hint:"段评URL"},{title:"发布者头像",rows:1,id:"ruleReview_avatarRule",type:"String",hint:"段评发布者头像"},{title:"段评内容",rows:1,id:"ruleReview_contentRule",type:"String",hint:"段评内容"},{title:"发布时间",rows:1,id:"ruleReview_postTimeRule",type:"String",hint:"段评发布时间"},{title:"回复URL",rows:1,id:"ruleReview_reviewQuoteUrl",type:"String",hint:"获取段评回复URL"},{title:"点赞URL",rows:1,id:"ruleReview_voteUpUrl",type:"String",hint:"点赞URL"},{title:"点踩URL",rows:1,id:"ruleReview_voteDownUrl",type:"String",hint:"点踩URL"},{title:"发送回复",rows:1,id:"ruleReview_postReviewUrl",type:"String",hint:"发送回复URL"},{title:"回复段评",rows:1,id:"ruleReview_postQuoteUrl",type:"String",hint:"发送回复段评URL"},{title:"删除段评",rows:1,id:"ruleReview_deleteUrl",type:"String",hint:"删除段评URL"}]},other:{name:"其他",children:[{title:"启用搜索",rows:1,id:"enabled",type:"Boolean",hint:"启用: true 关闭: false (可选,默认true)"},{title:"启用发现",rows:1,id:"enabledExplore",type:"Boolean",hint:"启用: true 关闭: false (可选,默认true)"},{title:"启用段评",rows:1,id:"enabledReview",type:"Boolean",hint:"启用: true 关闭: false (可选,默认false)"},{title:"Cookie",rows:1,id:"enabledCookieJar",type:"Boolean",hint:"保存返回头的Cookie 启用: true 关闭: false (可选,默认false)"},{title:"搜索权重",rows:1,id:"weight",type:"Number",hint:"整数: 0~N (可选,默认0) | 数字越大越靠前"},{title:"排序编号",rows:1,id:"customOrder",type:"Number",hint:"整数: 0~N (可选,默认0) | 数字越小越靠前"}]}},wt={base:{name:"基础",children:[{title:"源域名",rows:1,id:"sourceUrl",type:"String",hint:"<必填>通常填写网站主页,例: https://www.qidian.com"},{title:"图标",rows:1,id:"sourceIcon",type:"String",hint:"<选填>填写图片网络链接"},{title:"源名称",rows:1,id:"sourceName",type:"String",hint:"<必填>会显示在源列表"},{title:"源分组",rows:1,id:"sourceGroup",type:"String",hint:"<选填>描述源的特征信息"},{title:"源注释",rows:1,id:"sourceComment",type:"String",hint:"<选填>描述源作者和状态"},{title:"变量说明",rows:1,id:"variableComment",type:"String",hint:"<选填>源变量说明"},{title:"登录地址",rows:1,id:"loginUrl",type:"String",hint:"<选填>填写网站登录网址,仅在需要登录的源有用"},{title:"登录界面",rows:3,id:"loginUi",type:"String",hint:"<选填>自定义登录界面"},{title:"登录检测",rows:3,id:"loginCheckJs",type:"String",hint:"<选填>登录检测js"},{title:"封面解密",rows:3,id:"coverDecodeJs",type:"String",hint:"<选填>封面解密js"},{title:"并发率",rows:1,id:"concurrentRate",type:"String",hint:"<选填>并发率"},{title:"请求头",rows:3,id:"header",type:"String",hint:"<选填>客户端标识"},{title:"分类地址",rows:3,id:"sortUrl",type:"String",hint:"<选填>名称1::链接1\n名称2::链接2"}]},list:{name:"列表",children:[{title:"列表样式",rows:1,id:"articleStyle",type:"Number",hint:"<选填>0,1,2 (默认0)"},{title:"列表规则",rows:1,id:"ruleArticles",type:"String",hint:"规则结果为List"},{title:"翻页规则",rows:1,id:"ruleNextPage",type:"String",hint:"下一页链接 规则结果为List或String"},{title:"标题规则",rows:1,id:"ruleTitle",type:"String",hint:"文章标题 规则结果为String"},{title:"时间规则",rows:1,id:"rulePubDate",type:"String",hint:"文章发布时间 规则结果为String"},{title:"描述规则",rows:1,id:"ruleDescription",type:"String",hint:"文章简要描述 规则结果为String"},{title:"图片规则",rows:1,id:"ruleImage",type:"String",hint:"文章图片链接 规则结果为String"},{title:"链接规则",rows:1,id:"ruleLink",type:"String",hint:"文章链接 规则结果为String"}]},webView:{name:"WebView",children:[{title:"启用JS",rows:1,id:"enableJs",type:"Number",hint:"启用: true 关闭: false (可选,默认true)"},{title:"加载地址",rows:1,id:"loadWithBaseUrl",type:"Number",hint:"启用: true 关闭: false (可选,默认true)"},{title:"内容规则",rows:1,id:"ruleContent",type:"String",hint:"文章正文"},{title:"样式规则",rows:3,id:"style",type:"String",hint:"文章正文样式 填写css"}]},other:{name:"其他",children:[{title:"启用",rows:1,id:"enabled",type:"Boolean",hint:"启用: true 关闭: false (可选,默认true)"},{title:"Cookie",rows:1,id:"enabledCookieJar",type:"Boolean",hint:"保存返回头的Cookie 启用: true 关闭: false (可选,默认false)"},{title:"单URL",rows:1,id:"singleUrl",type:"Boolean",hint:"启用: true 关闭: false (可选,默认false)"},{title:"排序编号",rows:1,id:"customOrder",type:"Number",hint:"整数: 0~N (可选,默认0) | 数字越小越靠前"}]}},yt={components:{editMenu:Ce,editOut:et,editInputList:gt},setup(){const e=(0,m.qj)({config:{},title:"",selectTabKey:"base"});/bookSource/.test(location.href)?(e.config=St,e.title="书源"):(e.config=wt,e.title="订阅源");const t=t=>e.selectTabKey=t,r=(0,n.Fl)((()=>e.config[e.selectTabKey].children));return(0,n.bv)((()=>{})),{...(0,m.BK)(e),changeSelectTabKey:t,currentTabData:r}}};const mt=(0,c.Z)(yt,[["render",y],["__scopeId","data-v-06282bdf"]]);var vt=mt;const bt=[{path:"/bookSource",name:"book-home",component:vt},{path:"/rssSource",name:"rss-home",component:vt}],ft=(0,d.p7)({history:(0,d.r5)(),routes:bt});var _t=ft;(0,o.ri)(u).use(oe).use(_t).mount("#app")}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,r),i.exports}r.m=e,function(){var e=[];r.O=function(t,o,n,i){if(!o){var l=1/0;for(u=0;u=i)&&Object.keys(r.O).every((function(e){return r.O[e](o[c])}))?o.splice(c--,1):(a=!1,i0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[o,n,i]}}(),function(){r.d=function(e,t){for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})}}(),function(){r.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={143:0};r.O.j=function(t){return 0===e[t]};var t=function(t,o){var n,i,l=o[0],a=o[1],c=o[2],s=0;if(l.some((function(t){return 0!==e[t]}))){for(n in a)r.o(a,n)&&(r.m[n]=a[n]);if(c)var u=c(r)}for(t&&t(o);s