var updateLog = ` 2024/04/21 优化二级嗅探规则改用海阔video;新增专业写源支持class_parse 2022/07/04 增加版号管理 `.trim(); var version={ author:"道长", ver:"1.2.5", appv:2316, requireId:"https://dr.playdreamer.cn/js/ruleEditor.js", update:'2024/04/21 00:41', info:updateLog, ua:';get;utf-8;{User-Agent@Mozilla/5.0&&Cookie@}', ok:'https://okjx.cc/?url=', jsRoot:'https://dr.playdreamer.cn/js/', }; putVar('editor依赖',version.requireId); putVar('editor.jsRoot',version.jsRoot); function objReverse(obj){//键值对反转 var keys = Object.keys(obj); var res = {}; keys.forEach((val) => { res[obj[val]] = val; }); return res } function clone(myObj) {//拷贝对象 if (typeof (myObj) != 'object') return myObj; if (myObj == null) return myObj; var myNewObj = {}; for (var i in myObj) myNewObj[i] = clone(myObj[i]); return myNewObj; } function keyMap(){//海阔中英文规则属性字典 var attrMap={ // firstHeader:'', last_chapter_rule:'最新章节解析', title:'小程序名称', author:'作者', type:'小程序类别', url:'小程序链接', version:'小程序版本', col_type:'显示样式', class_parse:'分类解析式', class_name:'分类名称', class_url:'分类替换词', area_name:'地区名称', area_url:'地区替换词', sort_name:'排序名称', // sort_url:'排序替换词', sort_url:'自定义分类名', year_name:'年代名称', year_url:'年代替换词', find_rule:'解析规则', searchFind:'搜索解析规则', search_url:'搜索链接', group:'小程序分组', detail_col_type:'二级列表显示样式', detail_find_rule:'二级列表解析规则', sdetail_col_type:'搜索二级列表显示样式', sdetail_find_rule:'搜索二级列表解析规则', ua:'UA', preRule:'JS预处理', pages:'子页面', icon:'小程序图标地址', // ej_title:"二级海报标题(最多3个定位用;隔开)", ej_title:"二级海报标题", ej_img:"二级海报图片", ej_url:"二级海报点击", // ej_desc:"二级海报描述(最多3个定位用;隔开)", ej_desc:"二级海报描述", ej_content:"二级剧情简介", ej_tabs:"二级线路名称列表", ej_tab_text:"二级线路名称标题", // ej_lists:"二级选集列表(#id是线路替换,必然包含)", ej_lists:"二级选集列表", ej_list_text:"二级选集标题", ej_tab_id:"二级线路替换", }; storage0.putMyVar('attrMap',attrMap); storage0.putMyVar('attrMap2',objReverse(attrMap)); return attrMap } function initUiAttr(){//初始化默认参数 if(!storage0.getMyVar('attrMap','')){ keyMap(); } var keys = ['title','type','author','version','group','icon','url','col_type','class_parse','class_name','class_url','sort_url','find_rule', 'search_url','searchFind','ej_title','ej_img','ej_url','ej_desc','ej_content','ej_tabs','ej_tab_text','ej_lists','ej_list_text','ej_tab_id','ua' ]; // 'detail_col_type', var defaultValue = { type:'video', author: '道长', version: '1', group:'#️⃣道长DR', icon:'http://1.117.152.239:39000/tupian.php?text=道长', url:'hiker://empty##', col_type:'movie_3_marquee', sort_url:'影视', search_url:'hiker://empty##', // detail_col_type:'text_5', ua:MOBILE_UA, }; var defaultDesc = { find_rule:'列表;标题;描述;详情;链接;内容', searchFind:'列表;标题;描述;详情;链接;内容', ej_title:'支持最多3个定位用;隔开', ej_desc:'支持最多3个定位用;隔开', ej_lists:'#id是线路替换,必然包含', ej_tab_id:'#id实际定位,默认顺序数字', ua:'全局UA设备标识' }; var requiredKeys = {//简单模式显示的输入框 title:true, url:true, search_url:true, find_rule:true, searchFind:true, ej_content:false, ej_tabs:true, ej_lists:true, ua:true }; // var simpleKeys = clone(requiredKeys); // Object.assign(simpleKeys,{}) return {keys:keys,defaultValue:defaultValue,defaultDesc:defaultDesc,requiredKeys:requiredKeys} } function getInputUrl(key){//获取搜索组件标题点击事件 let typesMap = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' } typesMap = objReverse(typesMap); //去重(ES6 Set) function unique2(array){ return Array.from(new Set(array)); } var actions = { type:$.toString((typesMap)=>{ let types = ['聚合','视频','音频','直播','漫画','阅读','图集','资讯','工具','其它']; return $(types,3,'请选择小程序类别').select((typesMap)=>{ putMyVar('type',typesMap[input]); refreshPage(false); return 'hiker://empty' },typesMap) },typesMap), col_type:$.toString(()=>{ let all_cols = getColTypes(); return $(all_cols, 2, '请选择一级显示样式').select(() => { putMyVar('col_type',input); refreshPage(false); return 'hiker://empty' }) }), detail_col_type:$.toString(()=>{ let all_cols = getColTypes(); return $(all_cols, 2, '请选择二级列表显示样式').select(() => { putMyVar('detail_col_type',input); refreshPage(false); return 'hiker://empty' }) }), class_parse:$.toString(()=>{ let sels = ['示例','执行']; return $(sels, 2, '请选择要进行的操作').select(() => { if(input==='示例'){ putMyVar('class_parse','.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?).html'); }else if(input==='执行'){ let url = getMyVar('url','').replace('hiker://empty##','').replace(/fypage/g,'1'); let class_parse = getMyVar('class_parse',''); if(!/http/.test(url)){ return 'toast://小程序链接有误' } let parse = class_parse.split(';'); if(parse.length < 4){ return 'toast://分类解析式有误,格式为: 列表;标题;链接;链接正则提取' } let html = fetch(url,{headers:{'User-Agent':getMyVar('ua',MOBILE_UA)}}); let parseList = _pdfa(html,parse[0]); let class_name_list = []; let class_url_list = []; let cate_exclude = '首页|留言|APP|下载|资讯|新闻|动态'; parseList.forEach((it)=>{ let cname = _pdfh(it,parse[1]); let curl = _pdfh(it,parse[2]); try { if(!(new RegExp(cate_exclude).test(cname))){ curl = curl.match(new RegExp(parse[3]))[1]; class_name_list.push(cname); class_url_list.push(curl); } }catch (e) {} }); putMyVar('class_name', class_name_list.join('&')); putMyVar('class_url', class_url_list.join('&')); } refreshPage(false); return 'hiker://empty' }) }), class_name:$.toString(()=>{ return $(getMyVar('last_class_name','.navbar-items&&li;body&&Text'),'请输入定位 列表;标题 如: .navbar-items&&li;body&&Text').input(()=>{ if(!getMyVar('class_name','')&&!input) { putMyVar('class_name', '电影&电视剧&综艺&动漫'); refreshPage(false); }else if(input&&input.includes(';')){ putMyVar('last_class_name',input); let url = getMyVar('url','').replace('hiker://empty##','').replace(/fypage/g,'1'); if(!/http/.test(url)){ return 'toast://小程序链接有误' } let html = fetch(url,{headers:{'User-Agent':getMyVar('ua',MOBILE_UA)}}); let parse = input.split(';'); let parseList = pdfa(html,parse[0]); function matchIt(text){ try { return text.match(new RegExp(parse[2]))[1] }catch (e) { return '' } } // log(parseList); let list = parseList.map((it)=>{ return !parse[2] ? pdfh(it,parse[1]):matchIt(pdfh(it,parse[1])) }); putMyVar('class_name', list.join('&')); refreshPage(false); } return 'hiker://empty' }) }), class_url:$.toString(()=>{ return $(getMyVar('last_class_url','.navbar-items&&li;a&&href\n.navbar-items&&li;a&&href;(\\d+)'),'请输入定位 列表;标题 如: .navbar-items&&li;a&&href;(\\d+)').input(()=>{ if(!getMyVar('class_url','')&&!input) { putMyVar('class_url', '1&2&3&4'); refreshPage(false); }else if(input&&input.includes(';')){ putMyVar('last_class_url',input); let url = getMyVar('url','').replace('hiker://empty##','').replace(/fypage/g,'1'); if(!/http/.test(url)){ return 'toast://小程序链接有误' } let html = fetch(url,{headers:{'User-Agent':getMyVar('ua',MOBILE_UA)}}); let parse = input.split(';'); let parseList = pdfa(html,parse[0]); function matchIt(text){ try { return text.match(new RegExp(parse[2]))[1] }catch (e) { return '' } } // log(parseList); let list = parseList.map((it)=>{ return !parse[2] ? pdfh(it,parse[1]):matchIt(pdfh(it,parse[1])) }); putMyVar('class_url', list.join('&')); refreshPage(false); } return 'hiker://empty' }) }), url:$.toString(()=>{ if(!getMyVar('url','')||!getMyVar('url').startsWith('hiker://empty##')) { putMyVar('url', 'hiker://empty##'+getMyVar('url','')); refreshPage(false); } return 'hiker://empty' }), search_url:$.toString(()=>{ if(!getMyVar('search_url','')||!getMyVar('search_url').startsWith('hiker://empty##')) { putMyVar('search_url', 'hiker://empty##'+getMyVar('search_url','')); refreshPage(false); } return 'hiker://empty' }), version:$.toString(()=>{ let ver = getMyVar('version','1'); if(Number(ver)){ putMyVar('version',(Number(ver)+1)+''); }else{ putMyVar('version','1'); } refreshPage(false); return 'hiker://empty' }), group:$.toString((unique2)=>{ let groups=storage0.getMyVar('groups',''); if(!groups){//最好还是缓存一下,要不然每次请求太耗时了; let rules = JSON.parse(fetch("hiker://home"));//获取海阔视界所有小程序 groups=rules.map(it=>it.group||""); groups=unique2(groups);//获取所有规则的分组列表自动去重 storage0.putMyVar('groups',groups); } return $(groups, 3, '请从个'+groups.length+'分组中选择1个').select(() => { putMyVar('group',input); refreshPage(false); return 'hiker://empty' }) },unique2), ua:$.toString(()=>{ let sels = ['PC_UA','MOBILE_UA','UC_BROWSER']; return $(sels, 2, '请选择一个UA').select(() => { let uas = { PC_UA:PC_UA, MOBILE_UA:MOBILE_UA, UC_BROWSER:'Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36', } putMyVar('ua',uas[input]); refreshPage(false); return 'hiker://empty' }) }), searchFind:$.toString(()=>{ if(!getMyVar('searchFind','')){ putMyVar('searchFind','*'); refreshPage(false); } return 'hiker://empty' }), ej_tab_text:$.toString(()=>{ if(!getMyVar('ej_tab_text','')){ putMyVar('ej_tab_text','body&&Text'); refreshPage(false); } return 'hiker://empty' }), ej_list_text:$.toString(()=>{ if(!getMyVar('ej_list_text','')){ putMyVar('ej_list_text','a&&Text'); refreshPage(false); } return 'hiker://empty' }), ej_title:$.toString(()=>{ let sels = ['.title&&Text','h1&&Text','h1--span&&Text','h2&&Text','h3&&Text','h4&&Text','.y-part-eone&&Text','.fed-list-deta&&.fed-part-eone&&Text', '.v_title&&a&&Text','.info&&.name&&Text','.dy_tit_big&&Text','img&&title']; return $(sels, 2, '请选择1个二级海报标题').select(() => { putMyVar('ej_title',input); refreshPage(false); return 'hiker://empty' }) }), ej_img:$.toString(()=>{ let sels = ['.lazyload&&data-original','img&&data-original','.lazyload&&data-src','.fed-lazy&&data-original','.fl-lazy&&data-original','.lazy&&data-original','.y-part-2by3&&data-original','.fed-part-2by3&&data-original', '.detail-pic&&img&&src','.pic&&img&&src','.cover&&img&&src','.poster&&img&&src','img&&src','.poster&&a&&style','.lazy&&src','#imglazy&&src']; return $(sels, 2, '请选择1个二级海报图片').select(() => { putMyVar('ej_img',input); refreshPage(false); return 'hiker://empty' }) }), ej_url:$.toString(()=>{ let sels = ['.lazyload&&data-original','img&&data-original','.lazyload&&data-src','.fed-lazy&&data-original','.fl-lazy&&data-original','.lazy&&data-original','.y-part-2by3&&data-original','.fed-part-2by3&&data-original', '.detail-pic&&img&&src','.pic&&img&&src','.cover&&img&&src','.poster&&img&&src','img&&src','.poster&&a&&style','.lazy&&src','#imglazy&&src']; return $(sels, 2, '请选择1个二级海报点击链接').select(() => { putMyVar('ej_url',input); refreshPage(false); return 'hiker://empty' }) }), } return actions[key]||'' } function color(text, color) { text += ""; if (text.indexOf("““””") === 0) { text.replace("““””", ""); } return "““””" + text + ""; } function htmlTag(tag, text) { text += ""; if (text.indexOf("““””") === 0) { text.replace("““””", ""); } return "““””" + "<" + tag + ">" + text + ""; } function small(text) { return htmlTag("small", text); } function initHome(){//加载主页 var d=[]; let editMode = getItem('editMode','简单'); d.push({ title: '““””♻检测升级', desc:'清除写源神器依赖,比长按小程序标题清除缓存温柔一些', col_type: 'scroll_button', url: $('#noLoading#').lazyRule(()=>{ showLoading('升级检测中,请稍等...'); require(getVar('editor依赖')); let requireId = version.requireId; let ver = version.ver; let update = version.update; let localDate = new Date(update); try { var webLib = fetch(requireId); var webVer = (function(webLib) { eval(webLib); return version; })(webLib); }catch (e) { hideLoading(); return 'toast://远程服务器通讯错误,本次检测升级失败\n'+e.message; } let webDate = new Date(webVer.update); // $.dateFormat(new Date(parseInt(localDate)),"yyyy-MM-dd HH:mm:ss"); if(webDate>localDate||webVer.ver!==ver){//网页更新时间大于本地库时间或者版本号不等 hideLoading(); let msg = '本地依赖更新时间:'+update+',版本:'+ver+'\n云端依赖更新时间:'+webVer.update+',版本:'+webVer.ver+'\n有升级:['+ver+']=>['+webVer.ver+'],立即升级?'; return $(msg).confirm((requireId,webLib) => { let jsp = 'hiker://files/libs/'+md5(requireId)+'.js'; log('本地依赖模块路径=> '+jsp); deleteCache(requireId); // clearMyVar('是否进入规则'); writeFile(jsp,webLib) refreshPage(false); return 'toast://升级成功!模块依赖缓存已清除' },requireId,webLib); }else{ hideLoading(); return 'toast://经检测已经是最新的['+ver+']了!' } }) }); d.push({ title:'模式:'+(editMode==='简单'?color(editMode,'#12b668'):color(editMode,'#ab2415')), col_type:'scroll_button', url:$('#noLoading#').lazyRule(()=>{ let editMode = getItem('editMode','简单'); let nextEditMode = editMode==='简单'?'专业':'简单'; setItem('editMode',nextEditMode); // updateItem('editMode',{title:'当前写源模式:'+nextEditMode}); refreshPage(false); return 'hiker://empty' }), extra:{ id:'editMode' } }); d.push({ title:'全部重写', col_type:'scroll_button', url:$('#noLoading#').lazyRule(()=>{ return $('确定要这么做吗?该操作将清除所有已编辑的记录').confirm(()=>{ let attrMap = storage0.getMyVar('attrMap',attrMap); let keys = Object.keys(attrMap); keys.forEach((it)=>{ clearMyVar(it); }); refreshPage(false); return 'toast://全部手写记录已清除并恢复默认值' }) }) }); d.push({ title:'保存并导入', col_type:'scroll_button', url:$('#noLoading#').lazyRule((initUiAttr)=>{ var inputData = initUiAttr(); var defaultValue = inputData.defaultValue; let newRule = { title:getMyVar('title',''), type:getMyVar('type',''), author:getMyVar('author',''), version:Number(getMyVar('version','1')), group:getMyVar('group',defaultValue.group), icon:getMyVar('icon',''), url:getMyVar('url','hiker://empty##'), col_type:getMyVar('col_type',defaultValue.col_type), class_parse:getMyVar('class_parse',''), class_name:getMyVar('class_name',''), class_url:getMyVar('class_url',''), sort_url:getMyVar('sort_url',defaultValue.sort_url), search_url:getMyVar('search_url',defaultValue.search_url), sdetail_find_rule:'*' }; if(!getMyVar('find_rule')){ newRule.find_rule = 'js:\nrequire(config.自动匹配)\nlet cates=[];\n设置(cates);\n自动一级(null,cates)' }else{ newRule.find_rule = `js: require(config.模板) 依赖检测(); let p = '${getMyVar("find_rule")}'; true_url = 获取正确链接(); let cates = 打造动态分类([{ 一级分类:'', 子分类:'', }]); 设置(cates); 一级(p,true,cates,null) `.trim(); } if(!getMyVar('searchFind')){ newRule.searchFind = 'js:\nrequire(config.自动匹配)\n自动搜索()' }else if(getMyVar('searchFind')==='*'){ newRule.searchFind = `js: require(config.模板) let p = '${getMyVar("find_rule")}'; 一级(p,true) `.trim(); }else{ newRule.searchFind = `js: require(config.模板) let p = '${getMyVar("searchFind")}'; 一级(p,true) `.trim(); } if(!getMyVar('ej_tabs','')||!getMyVar('ej_lists','')){ // newRule.detail_find_rule = 'js:\nrequire(config.自动匹配)\n//香免();\n//自动二级(lazy);\n自动二级()' newRule.detail_find_rule = `js:\nrequire(config.自动匹配)\n//香免();\nvar lazy=$('#noLoading#').lazyRule(()=>{return 'video://'+input});\n自动二级(lazy);\n//自动二级()` }else{ newRule.detail_find_rule = `js: require(config.自动匹配); let p = { title:"${getMyVar('ej_title','')}", img:"${getMyVar('ej_img','')}", url:"${getMyVar('ej_url','')}", desc:"${getMyVar('ej_desc','')}", content:"${getMyVar('ej_content','')}", tabs:"${getMyVar('ej_tabs','')}", tab_text:"${getMyVar('ej_tab_text','')}", lists:"${getMyVar('ej_lists','')}", list_text:"${getMyVar('ej_list_text','')}", tab_id:"${getMyVar('ej_tab_id','')}", }; // 香免(); // 二级(p,lazy); 二级(p) `.trim(); } if(!getMyVar('ua')){ newRule.preRule = "require('"+getVar('editor.jsRoot')+"预处理.js');" }else{ let k = null; if(getMyVar("ua")===PC_UA){ k = 'PC_UA' }else if(getMyVar("ua")===MOBILE_UA){ k = 'MOBILE_UA' } if(k){ newRule.preRule = `var ua=${k};\nrequire('${getVar('editor.jsRoot')}预处理.js');` }else{ newRule.preRule = `var ua='${getMyVar("ua")}';\nrequire('${getVar('editor.jsRoot')}预处理.js');` } } let ruleHead = '海阔视界首页频道规则【'+getMyVar('titile','未命名')+'】¥home_rule¥'; let rulecode = 'rule://'+base64Encode(ruleHead+JSON.stringify(newRule)); // log(newRule); return rulecode },initUiAttr) }); d.push({ title:'存为模板', col_type:'scroll_button', url:$('#noLoading#').lazyRule(()=>{ return $(getMyVar('title','测试模板'),'取一个模板名字吧').input(()=>{ let mt = input.trim(); if(!mt){ return 'toast://模板名称必填!' } let fp='hiker://files/rules/dzHouse/json/ruleEditor.json'; //模板文件 let fpJson = JSON.parse(fetch(fp)||'{}'); let okeys = Object.keys(fpJson); let attrMap = storage0.getMyVar('attrMap',attrMap); let keys = Object.keys(attrMap); let mtv = {}; keys.forEach((it)=>{ if(getMyVar(it,'')){ mtv[it] = getMyVar(it) } }); fpJson[mt] = mtv; if(okeys.includes(mt)){ return $('模板'+mt+'已存在,是否覆盖保存?').confirm((fp,fpJson)=>{ writeFile(fp, JSON.stringify(fpJson)); copy(getPath(fp).replace('file://', '')); return 'toast://模板已保存至:' + fp },fp,fpJson) }else { writeFile(fp, JSON.stringify(fpJson)); copy(getPath(fp).replace('file://', '')); return 'toast://模板已保存至:' + fp } }) }) }); d.push({ title:'从模板导入', col_type:'scroll_button', url:$('#noLoading#').lazyRule(()=>{ let fp='hiker://files/rules/dzHouse/json/ruleEditor.json'; //模板文件 let fpJson = JSON.parse(fetch(fp)||'{}'); let mts = Object.keys(fpJson); if(mts.length<1){ return 'toast://还没保存过模板,暂时无法导入' } return $(mts, 2, '请选择一个模板').select((fpJson) => { let mtAttr = fpJson[input]; let keys = Object.keys(mtAttr); keys.forEach((it)=>{ putMyVar(it,mtAttr[it]) }); refreshPage(false); return 'toast://已导入模板:'+input },fpJson) }) }); d.push({ title:"模板管理", col_type:'scroll_button', url:$('#noLoading#').lazyRule(()=>{ let status = fetch('hiker://home@JSON编辑器'); let hasJsonEditor = (status && status !== 'null'); let fp='hiker://files/rules/dzHouse/json/ruleEditor.json'; //模板文件 if(!hasJsonEditor){ return 'editFile://'+fp; }else{ return 'hiker://page/interface#noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(fp); } }) }); d.push({ title: '搜索词:'+color(getMyVar('skey','斗罗'),'#ab2415'), col_type:'text_3', url:$(getMyVar('skey','斗罗'),'请输入搜索关键词').input(()=>{ putMyVar('skey',input); refreshPage(false); return 'hiker://empty' }) }); d.push({ title:'测试搜索', col_type:'text_3', url:$('#noLoading#').lazyRule(()=>{ let key = getMyVar('skey','斗罗'); let url = getMyVar('url','').replace('hiker://empty##','').split('#')[0]; let surl = getMyVar('search_url','').replace('hiker://empty##','').split('#')[0]; if(!url.startsWith('http')){ if(!surl.startsWith('http')){ return 'toast://搜索链接不正确!\n小程序链接异常且搜索链接不是http开头完整链接' } }else{ if(!surl){ return 'toast://搜索链接不正确!\n不允许为空' } if(!surl.startsWith('http')){ surl = getHome(url) + surl; } } surl = surl.replace('**',key); log('搜索链接为:'+surl); let homeUrl='hiker://empty##'+surl;//搜索链接避免第一次请求 var ua = getMyVar('ua',''); initConfig({ 指定ua:ua, }); if(ua) { log('搜索测试指定ua:' + ua); } // log(homeUrl); let p = getMyVar('searchFind',''); if(p==='*'&&!getMyVar('find_rule','')){ return 'toast://搜索解析继承一级解析,但一级解析为空!' }else if(p==='*'&&getMyVar('find_rule','')){ p = getMyVar('find_rule'); } // putMyVar('test_mode','true');//设置为测试模式,这样二级才有,道长影视模板有Bug clearMyVar('test_mode'); return $(homeUrl).rule((key,p)=>{ setPageTitle('搜索测试:'+key); // log(MY_URL); require(config.自动匹配); if(!p){ putMyVar('test_mode','true'); 自动搜索('的结果|搜索|共有|相关'); }else { var result = 一级(p, true, [], null,null,true); if(Array.isArray(result)&&result.length>0){ result = result.filter(it=>it.url);//筛选正常url的 result = result.map((it)=>{ it.url = $(it.url).rule(()=>{ require(config.自动匹配); // requireCache('https://hikerfans.com/lmysdm/lazy.js',24); if(!getMyVar('ej_tabs','')||!getMyVar('ej_lists','')){ 自动二级(); }else{ let p = { title:getMyVar('ej_title',''), img:getMyVar('ej_img',''), url:getMyVar('ej_url',''), desc:getMyVar('ej_desc',''), content:getMyVar('ej_content',''), tabs:getMyVar('ej_tabs',''), tab_text:getMyVar('ej_tab_text',''), // ej_lists:"二级选集列表(#id是线路替换,必然包含)", lists:getMyVar('ej_lists',''), list_text:getMyVar('ej_list_text',''), tab_id:getMyVar('ej_tab_id',''), }; 二级(p); } // 自动二级(lazy); }); return it }); setResult(result); } } },key,p) }) }); d.push({ title:'测试一二级', col_type:'text_3', url:$('#noLoading#').lazyRule(()=>{ let url=getMyVar('url','').trim(); let homeUrl=url.replace('hiker://empty##',''); if(!url||!/^http/.test(homeUrl)){ return 'toast://请输入正确的网页地址' } var ua = getMyVar('ua',''); initConfig({ 指定ua:ua, // 模板:'http://hiker.nokia.press/hikerule/rulelist.json?id=2505' }); if(ua) { log('测试一级指定ua:' + ua); } return $(homeUrl).rule(()=>{ setPageTitle('测试'); require(config.自动匹配); if(!getMyVar('find_rule','')){ 自动一级(null,null,null,true); }else{ 依赖检测(); let p = getMyVar('find_rule',''); let cates = []; 设置(cates); var result = 一级(p, true, cates, null,null,true); if(Array.isArray(result)&&result.length>0){ result = result.filter(it=>it.url);//筛选正常url的 result = result.map((it)=>{ it.url = $(it.url).rule(()=>{ require(config.自动匹配); // requireCache('https://hikerfans.com/lmysdm/lazy.js',24); if(!getMyVar('ej_tabs','')||!getMyVar('ej_lists','')){ 自动二级(); }else{ let p = { title:getMyVar('ej_title',''), img:getMyVar('ej_img',''), url:getMyVar('ej_url',''), desc:getMyVar('ej_desc',''), content:getMyVar('ej_content',''), tabs:getMyVar('ej_tabs',''), tab_text:getMyVar('ej_tab_text',''), // ej_lists:"二级选集列表(#id是线路替换,必然包含)", lists:getMyVar('ej_lists',''), list_text:getMyVar('ej_list_text',''), tab_id:getMyVar('ej_tab_id',''), }; 二级(p); } // 自动二级(lazy); }); return it }); setResult(result); } } }) }) }); var inputData = initUiAttr(); var attrMap=storage0.getMyVar('attrMap'); if(editMode==='简单'){ inputData.keys = Object.keys(inputData.requiredKeys); } for(let i in inputData.keys){ let key = inputData.keys[i]; let value = attrMap[key]; let title = inputData.requiredKeys[key]?value+'*':value; let desc = inputData.defaultDesc[key]||''; d.push({ title: title, col_type: "input", url:getInputUrl(key), desc: `${value}(${key})${desc}`, extra:{ defaultValue:getMyVar(key,inputData.defaultValue[key]||''), onChange:`putMyVar('${key}',input)`, // titleVisible: false, textSize: 11, type: "textarea", height:-1, } }); } setResult(d); }